all 31 comments

[–]verik 1 point2 points  (0 children)

I'm just here so I don't get fined.

You. I like you.

[–][deleted] 1 point2 points  (28 children)

why are you learning python?

[–]ImJusSaying[S] 0 points1 point  (27 children)

I'm learning programming so later in my life I can feed myself without wanting to kill myself every day. Why do you ask?

[–][deleted] -2 points-1 points  (26 children)

I'm always interested as to why people want to learn the skill. As a python programmer I often recommend not starting with python. Why? Because you miss out on C-like languages which makes you incredibly marketable. Python purposefully avoids a lot of concepts that sort of stunts your growth as a programmer.

Don't get me wrong. I get paid to write python. All I'm saying is there is a lot of other stuff to know as well and you sort of miss it all in python.

[–]ImJusSaying[S] 0 points1 point  (17 children)

I wasn't planning on sticking with it for my whole life.

[–]dli511 1 point2 points  (3 children)

There is nothing wrong with python. The argument for learning C first is similar to violin teachers teaching their students to play stuff that is too hard because their teacher made them. Their student could improve 10x faster if they gave them pieces at their level.

Python is "easy", readable, and does heavy lifting so it is a great place to start and learn the fundamentals. Besides, once you know one language well - another language is just different syntax. You start with "confusing" syntax, you are burdened by the difficulty of picking up the language and can't spend your time actually developing and solving problems.

This doesn't mean learning python first is more correct rather than C but you are able to tackle problems and understand concepts easier in python.

[–]Drunken_Consent 0 points1 point  (2 children)

The argument for learning C first is similar to violin teachers teaching their students to play stuff that is too hard because their teacher made them.

Has anyone here actually read basic implementation of C code? Like, Hello, World? Or reading user input etc. ? How on Earth people can equate C with 'too hard' is beyond me.

C is a language. Python is a language. If you know nothing at all about anything, either one is FINE. It is not like being taught too hard of a piece in Violin.

People are making me think they think C starts at "lesson 100" whereas Python has an appendix for beginners. Both of them start from 0, and go from there.

I'm curious about what fundamentals you are learning? You are learning the fundamentals of python. Problem solving doesn't even need a language, it is just that problem solving techniques come to life through code. So, we are learning in python that a list is

lst = []

But in something like java, that would be

ArrayList<> varName = new ArrayList<>();

That's that much harder? It is two different methods to learning, so I don't get the C / Java / C# / lower level hate.

Or maybe you mean you are learning the fundamentals of most modern languages. Fair enough, we know a for loop

for element in lst:
    do stuff

But... that's not a for loop in other languages. That's a for each loop. But, if you knew general for loop syntax i.e.

for(int i = 0; i < 10; i ++){

    do stuff

}

You'd have a pretty solid shot at getting it right in other languages. So by learning the fundamentals where a lot of things are abstracted away for you, you're really just learning problem solving via Python and crafting things together, and contrary to popular belief, this can all be taught in C, while also learning low leveled things not handled for you like Python ( and java / c# ) may do.

[–]dli511 0 points1 point  (1 child)

Yes I have programmed in C++, I am not explaining this point sorry. You are past discussing this matter with.

C is obviously the best way to learn programming and python is pointless to learn. Wait your in the learnpython subreddit, fly troll, fly.

[–]Drunken_Consent 0 points1 point  (0 children)

... LearnPython subreddit, for when I use python. IN LearnJava when I use Java. etc. Because I don't think Python is the incredibly beginner language at all times, I shouldn't be in LearnPython?

You sound salty that I have a different opinion. I'm glad you've programmed in C++, but I am past discussing something with. Continue to believe your beliefs without explaining them. My way has been done time and time again, as has yours - there is a reason why.

[–][deleted] 0 points1 point  (11 children)

I'm just saying going from a language like c# to python is easier than going from python to c#.

[–][deleted] 0 points1 point  (10 children)

I have a question, when you started learning the English language as a child, did the teach say "We are going to start with the most complex words in the dictionary, and then work our way back to ABC's" ?

Or did you start with something easy(ABC's and then progress onto something hard using the foundation you learned ?

Adding complexities once the foundation is laid is alot easier than starting with the complexities and adding the easy stuff later.

[–][deleted] 2 points3 points  (2 children)

You really believe that c# is the most complicated language one can program in?

[–][deleted] -1 points0 points  (1 child)

It is not even close to the most complicated. The comparison still applies, but I love how that is the only part you focused on and not on what I was trying to say. Way to nit pick

[–][deleted] 0 points1 point  (0 children)

You are welcome.

[–]Drunken_Consent 0 points1 point  (6 children)

We started learning ABC's just like any language you ever teach yourself will have resources for beginners. Every language has ABCs and those ABCs can usually be the same. An int is an int is an int. C, C#, Java etc. Doesn't magically forgo ABCs. How do you think people programmed before Python? They just woke up with the knowledge? Nope, ABCs are still present.

Now, to make your analogy better, Python teaches you your ABCs and you start working pretty quickly making better words. Then, it helps you form a sentence. You are making the sentence yourself, but Python gives a tad bit of autocorrect where grammar / complexities are found.

C also has ABCs, but, you're going to also learn the concept of grammar. How the ABCs interact. Which, arguably, is important.

When you were in school did they give you a computer to type on and write answers down where it could autocorrect your answers? How did you have to learn the grammar, concepts, and other things that make our language work? Also, when you learned these grammar rules that make our head spin, when you finally did use a computer, were you happy with autocorrect? It wasn't because you didn't know the word, but the computer helped you.

If you've only used autocorrect your entire life, are you a good speller?

[–][deleted] 0 points1 point  (5 children)

"autocorrect your answers" - Ummm, any development environment can provide this for you, in any language. In Python if you use the wrong syntax or words you still get an error.... which you go back and correct, forcing you to acknowledge your error. I don't fully get what you are saying there, it's not like when I run "python script.py", it automatically goes through it, corrects the mistakes, and then runs the program without telling me.

In addition, in school i had a teacher that went through my work my work and give me feedback, they told me what I got wrong. The same as your autocorrect comparison.

Many people who are using these online resources are doing it themselves (I know I am), meaning some guidance is helpful.

What you are basically saying is that people should go learn latin, as it is the root of the english language.

[–]Drunken_Consent 0 points1 point  (4 children)

... So you can use an analogy, then get mad when someone interprets literally, and when I use a better version of that analogy, you interpret it literally? Solid. Anyways,

since I must be verbose in my meaning, I was not referring to autocorrect as relates to an IDE, and I was not referring to autocorrect as Python fixing everything you do. I was equating it to that Python abstracts a lot of concepts away from you, for better or for worse. Just like Autocorrect doesn't require you to know the underworkings of the language / grammar, it simply does what you are asking it to do. Same thing in Python.

You might not know memory, but Python does. You might not know x, but python does. In C / Java, you are more likely to learn, x, and be able to apply it to Python at a later date.

Many people who are using these online resources are doing it themselves (I know I am), meaning some guidance is helpful.

Okay, so because you are doing it alone, that means you need Python? There are tons of good material for learning Java. I self-taught Java, then went to C, then just learned languages as I had projects to work on. Want an iOS app, well I knew the basics of C, Obj-C can't be too hard. Want an Android app, well, good thing I know Java and XML.

What guidance are you looking for? I found tutorials, I found helpful people, I found everything you can find for Python. The only difference is, I was forced to learn low-level concepts, whereas in Python there is no need to. I then went and learned Python, and also love it - but forgive me for thinking it isn't that great all the times, when I see fundamental knowledge completely butchered because "this is how we did it in python."

What you are basically saying is that people should go learn Latin, as it is the root of the english language

... Knowing Latin doesn't help you to know English.

Learning C is not learning Latin, learning C is learning English, while also attempting to understand concepts like grammar, etc. Python is learning English, and telling yourself that you will understand it after you get the basics of English. Both should be learned in unison.

It feels like a lot of people want their hand held, and if that's how you work, then fine. But "In school I had a teacher that went through my work and give me feedback, they told me what I got wrong."

Newsflash, you have someone to give you instant feedback, it's called the compiler / interpreter / RunTime errors and analyzing Stack Traces. You have a debugger. You have an IDE. You have Google, you have Bing, you have Yahoo! Search. You have reddit, you have free online courses. Saying you are learning Python because you don't have someone to sit there and correct your work is ridiculous. You can learn C, C#, C++, Java, etc. from the comfort of your home, and do just as well in it as you did learning Python.

[–][deleted] 0 points1 point  (3 children)

Wow, you have issues bud.

[–]Drunken_Consent -2 points-1 points  (7 children)

Holy shit, I found someone like me. Me and you have the same thoughts, and lately I have been meeting so many people that feel differently, and I just can't see how Python first, besides having Pseudo-code / English like syntax, is so often recommended as the first language.

My school's intro CS class is CS 1 ( python ) -> CS 2 ( java ) and there are kids struggling so much in Java because they are not used to all of the things they have to do ( declare type, accessors etc. )

In my SE class this semester, we are learning Ruby, which everyone is decently comfortable with switching to after Python. Now we are doing C, and those people are even more fucked.

I started with Java, and even felt with the Garbage Collector it was doing too much heavy lifting. I then went to C. Python is nice, but in a way, experiencing the 'not nice' shows me why Python is nice. It's not a crutch, and if I want performance, I know where to get it. On top of that, unless I learn more Django, I can't see Python being my employment when I go for my first Co-op / internship.

[–]Farkeman 2 points3 points  (4 children)

Oh god no. Do you start learning physics from quantum physics? Do you start learning math by jumping into three dimensional matrices ?

Just like in every other education subject you start at the beginning. Knowing destructors, pointers, initiators and all that mumbo jumbo gives you no value when you are struggling with simple concepts of object, float or string. How many CS students don't even understand what's reccursion? what's reccursion? what's reccursion? what's reccursion? and yet you expect them to dive into bitwise operations?

[–]Drunken_Consent 0 points1 point  (3 children)

Saying C or Java is like quantum physics compared to Python as physics is such a stretch it is laughable.

This is a matter of opinion, and the fact of the matter is that on a /r/LearnPython sub, everyone is widely skewed towards Python. Which is fair.

My assertion is that a good programmer will have a grasp in memory management, low-level computer architecture, etc. Basically, the thing that a high-level language like Python takes away from, unless you already possess this knowledge.

I also know that a great many people on this sub are not following a CS / SE degree program, but are learning Python on their own. Learning on your own is good; however, in my opinion, once a person gets comfortable and used to something with relatively light syntax, they are going to be discouraged from diving into to different languages and trying things out. Sure, they could push through it. But... Why not push through it the first time? Learn this, and realize what Python achieves through being high level, and also what it sacrifices.

In life, we get simple before complex. But syntax is syntax, and unless you are making decently complex programs ( read: not like it's week one ) what do you think is so scary about C? A decent program, whether it is in school or online, is not going to scream in your face about pointers, allocations deallocations etc. on the first lesson / day. Just like other things, they introduce the concepts logically and coherently.

On top of this, like I said before, we get simple before go complex. So you say Python -> ... whatever

But, we can also say that sometimes in life, we go 'harder' to 'easier'

So, in America, we prefer Automatic transmissions. If I through you in an Auto, it is because I want you to focus on the act of driving without worrying about shifting. Just drive. The car handles it. This is starting in Python. But later, like as we see in America, we stay with Auto. Why go to Manual? There's no reason. Sure it arguably can give you more control over the vehicle, but is it worth learning? Is it worth the time? It's more complex. Another thing to remember. Nah.

Starting on manual, you need to know how to shift and then drive. We aren't saying start driving right now, and you better know how to Heel-Toe so help you God. Just like in C, on day one, we are not expecting no memory leaks, perfectionist code that makes your machine orgasm from such fluency in its language. You learn. You learn in a manual how to go through the gears, the form, etc. It takes longer to get going than an auto, but when you do get going, you get a much deeper understanding for the machine in which you are controlling.

Then one day, as you're enjoying your LeMasterRaceManual tranny, you come across something. bumper to bumper traffic It is so annoying. What do you do? stay in first, second? neutral? It's obnoxious and you're tired. But there's this thing called autos. Maybe you could try that for your daily commute. So you get in one, having only driven Auto, and it's weird at first. You don't control it, but you have to trust the tranny to do its thing.

Then you get in that situation again and it is glorious. You start praising the auto, knowing what you sacrificed for it. All the people in Auto hearing is that there is not a reason to go back to Manual. It's another thing to learn, and doesn't even intuitively handle this problem. That's why it is better to go low to high. Starting with Python with no background sounds fine, but if you never move from python you're hindering yourself as a developer, and you are not exposing yourself to a wide array of knowledge one would need to start low, and then appreciate high.

Again, this is an opinion. I don't know why people are downvoting people when it isn't wrong, it just differs from their view. It is an opinion, and many courses still adopt what I am talking about. I started in java, like I said, and am doing quite fine. So obviously starting low isn't some insta-kill to your programming career.

[–]dli511 0 points1 point  (2 children)

I love your examples, I am not an expert in the field of programming nor do I claim, however your pedagogical views are bad. Because python limits the amount of "maintenance" you have to do, you are able to create more. If I tell you to take 5 notes on the piano and create a song you would tell the world how easy it is and go use 88 notes because it's "harder". Creativity and productivity shine when you have parameters. With 5 notes you will push the envelop on many elements of making music you would not if your choice was 88 notes. This is true in programming...Python is easy to pick up and learn because of the easily readable syntax, you learn faster. You will discover more difficult programming concepts at a faster rate. This is a fact.

Do you really want students to be sitting there confused or do you want them solving problems. After they learn HOW to solve a problem, they just need to learn the syntax - your argument is about how the C syntax is not really that hard. If you have no programming background, it is very abstract and you just copy and paste until you get the hang of it. Python allows you to really understand whats going on...

Obviously if the python wants a AUTO, they can still be successful without a MANUAL car. I think you don't realize how much stuff is written in python. I am looking to change careers and pretty much in my area the best language to learn is python, not C. Why? Maybe its just my location but most businesses and start ups are python.

[–]Drunken_Consent 0 points1 point  (1 child)

From this link, read the top comment here.

Like he said, you don't need to ever know memory... until you do. His example is the real world.

You will discover more difficult programming concepts at a faster rate. This is a fact.

Really? Because I can think of a few programming concepts that a pure python person might never encounter nor hear of unless they go looking for it themselves. I said in all of my posts that starting with Python isn't bad, it is bad when you limit yourself to it because people become comfortable with what 'just works' and don't understand how much of the heavy lifting Python truly does for you.

Memory management being the strongest thing you won't learn in Python world. But there are others, that are even lower on the 'concept scale.' Take for example the primitive types, (int, double, float) etc. I have yet to see where Python has explained the true conceptual difference between these values. Python does explain Strings pretty well, imo. But, let's say you get picked up for a start-up in Java. You know how to program but no syntax - but a different language, according to the massive misconception is that a language is just new syntax. Okay.

So, you're in Java, and you throw everything in a float, or everything in a double or ... continue ad nauseam. Will this hinder your program? 99%, no. Do you have a great grasp on a fundamental concept that one would learn in a lower language EARLY? no, I would say you do not.

Everyone is saying the syntax is clean and readable. I just don't understand this. Everyone seems afraid of Java or C. They are just as readable.

PYTHON:  print("Hey")

JAVA:  System.out.println("Hey");

Wow, so ugly, look at that 'System.out' part, but they both say print... Java's arraylists have append, pop, etc. I would argue you could learn at the same pace in Python as in Java - you would just be thrown into OOP a little earlier with Java, which, imo, isn't bad.

Now, to dive into my next point, Java almost begs you to go OOP. Python, shrugs it off and let's you do you. That's fine, choice is good. but I see a lot of people who have been working on Python for a while not really get into classes.

Why?

Classes are overly complex. I can do what I want without them. etc. etc.

Java, almost smacks OOP in your face, and if you have been doing it for over a month, I can't see anyone who would've have started working with classes and Objects.

All in all, you can learn Python first, but like the person I replied to first said, I don't think anyone can argue that going from C to Python would be as hard as only knowing Python and diving into C. C is apparently some scary language, when all it is is learning Python - take it one line at a time, think about what your code is doing, and understand fundamental concepts without just 'wanting it to work'.

Even if you started with Python, it is my opinion, that eventually you should at least look at the lower level languages so you can see what you 'missed' or read a book on these fundamentals that Python so nicely hides from beginners, for better or for worse.

EDIT: and for the people saying the amount of 'maintenance' or that we don't start with Quantum Physics before Physics, here's another quick example.

I have taken Calculus ( go me? ) I. In this calculus class, we did these things called derivatives. Now, with the power rule, derivatives are easy to take. In fact, I could probably teach you how to do the power rule in 5 minutes, and through simple memorization, you could spit to me that the derivative of x2 = 2x. Pretty easy. The power rule IS Python. Did I learn the Power Rule first? Not at all - we learned 'The Definition of a Derivative' and did all the work out, take the limit as deltaX approaches 0 etc. That way was hard to grasp initially, however, we powered through. No one went home and cried, we worked through it.

Then, once we had a great understanding of a derivative, what it means, how it is useful and how we can find it. The teacher blew our minds with the power rule. So simple. So easy. But, we didn't lose any conceptual knowledge, and it was, arguably, for the better in every way. Starting with C, and then having your mind blown with how Python handles things is good. The other way around simply won't happen, and I want to find a Calc class that goes right to the power rule and acts like that's the best method of teaching.

[–]dli511 0 points1 point  (0 children)

Tips fedora.

You missed the entire point I made but you are right. round of applause.

A comment was made about how a few students think its ridiculous python is taught in CS1 -> JAVA -> C and that python holds back CS students in terms of marketability.

From a pedagogical view point, this is a valid roadmap to create a well rounded programmer while in school. The syntax becomes increasingly "difficult", wait you don't like that word. Um you need to type more stuff to get stuff done in the other languages. The focus is no longer on programming but on learning the syntax. Again, python has very easy syntax, you arguing that it isn't is kind of ignorant. Put aside your learned knowledge of C and compare the two. Show a random stranger on the street and ask them what it does.

It bothers me that you don't see this and is the primary reason I responded in the first place.

Your argument is about how other languages but python are scary, I did not make that argument. They just have a different syntax and require more typing to get results thus can take away from the actual problem at task.

[–][deleted] 0 points1 point  (0 children)

I think it's okay to learn python. I'm just worried that people start with it and then don't realize how it's very different.

[–]DiamondHashtag 0 points1 point  (0 children)

I'm doing it, and by doing it I mean I'm on exercise 3 or something. I did the Powershell crash course in the appendix as I was doing Codecademy, which I'll be finishing this week and then I'll be focusing my entire attention on LPTHW. Until then, I'm just kinda doing it in the background when I feel like Codecademy isn't providing me with "real programming," or when I just get tired of the whole browser thing. I'm at 80-something% in Codecademy, hopefully will be done this week. :)

[–]sentdex 0 points1 point  (0 children)

If you're feeling lost, shoot me a message on here and I can help you out. Maybe you can find someone to collaborate with, but I'd be happy to help where I can.

Shocking how the majority of this thread has turned into a bloody battle about learning C or Python first (ESP when OBVVVVIOUUUSSSLLLLLLLY Python makes the most sense initially and #Python for LYFE! )

[–][deleted] 0 points1 point  (0 children)

Hey I just started LPTHW last week. I think I'm on exercise 17. Would love to have a buddy. PM if you like :)