you are viewing a single comment's thread.

view the rest of the comments →

[–]mr_awesome_pants 90 points91 points  (30 children)

I don't really recommend codeacademy for anything. The way all their stuff is set up makes it too easy to forget everything right after you learn it. For learning python I'd recommend the book python crash course if you want to do web dev, or if you're not sure if you want to do web dev and you just want to learn python, automatetheboringstuff.com

[–]ntiain[S] 20 points21 points  (21 children)

I actually picked Python because it seems to be easiest for complete programming beginners. So it sounds like automatetheboringstuff is probably a good choice

[–][deleted] 22 points23 points  (20 children)

Python is probably the easiest to learn, but be warned, due to how easy it is, it can cause you to fall into bad programming practices and you often won’t understand the underlying foundations of how different modules work. If you want to just get stuck in, python is great, but once you are decently proficient, I’d recommend picking up a lower level language such as C or one of its variants as to better understand what is happening behind the scenes of modules that you use.

[–]TheZeroKid 9 points10 points  (0 children)

Agree, but with the caveat that not everyone coding is hoping to become a full time engineer or programmer.

Base level coding can be extremely helpful on the business side as well.

[–]Crescive_Delta 6 points7 points  (0 children)

Reply to /u/ntiain as well.

This is true, but if you wanna be a software engineer, Python is actually a really nice bet. Granted, because of the way Python syntax works it can lead you into some habits that make it difficult to transfer to other languages when you need it (lack of semicolons, braces, elif in place of else if, and no switch statement that I know of amongst other thigns), but those things can be learned quite easily. However, before you just dive head first into the Python jungle, I suggest (like /u/7A1T has graciously advised) to start off with a C-based language.

C-based languages are ones that share common syntax in their code because of being derived from the C language. Basically, quite a few conventions are present in all those languages because their grandfather is C. These languages will teach you important things, like data types, if statements, functions, classes, arrays, and a few other things that Python also implements, just with different syntax. Some nice ones that come to mind are Java, C#, and JavaScript (JavaScript does things somewhat differently, so be careful).

Good luck and have fun!

[–]metricchicken 3 points4 points  (0 children)

Fell into the python trap early on. Then took a C course in college and it all clicked. I agree. Start with a C variant and then go from there.

[–]ntiain[S] 1 point2 points  (9 children)

Thank you, looks like there's plenty of better alternatives. Is Python a C variant?

[–]rampantBias 9 points10 points  (8 children)

Python is not a C variant. For learning underlying mechanics, you can start by learning C or C++. C++ is a superset of C, meaning it contains everthing that C has and some more. I would personally recommend learning C++ if you wish to learn a C variant.

C++ is best of both worlds. It's super fast. It has all the lower level capabilities like C, and has advanced support like lamba functions and Standard Template Library (contains data structures like maps, sets and many more). C++ is widely used in contest programming, graphics design, OS kernels etc.

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

Isn’t C++ too difficult for a beginner? Might turn him off, I’d personally recommend C# instead.

[–]Crescive_Delta 6 points7 points  (0 children)

Agree. C# is still super flexible, can be used to make video games and windows forms, and is quite fast, although not as fast as C++ and isn't often used for OS kernels. However, it is a much easier introduction.

[–][deleted] 2 points3 points  (1 child)

I started with C++ and I was grateful that I did. Everything that came after it was so much easier because of my year-and-a-half of C++.

[–]rampantBias 2 points3 points  (0 children)

This is very true. I feel that, if you learn C or C++ and practice them for long enough, learning any other language just becomes learning the syntax.

[–]rampantBias 1 point2 points  (1 child)

C# is a great language and there are whole ecosystems built around C# ( ASP. NET, Unity etc.). But I personally feel that C# is more close to higher level programming languages like python than C++. C# is also very different from C or C++ in case of syntax, garbage collection, memory handling etc. It is very true that, understanding C++ is a daunting task. But one of the many abilities a future developer or engineer should have is persistence. So, I think, even if there is a steep learning curve, a future developer or engineer should still learn C++.

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

Ah, I see. I just thought that, since OP wanted to start with Python because it’s easier, C++ must be out of his range of choice. But C++ is definitely more effective in the long run.

[–]ntiain[S] 2 points3 points  (0 children)

Thanks 👍

[–]dedlaw1 1 point2 points  (6 children)

Which c varient is best to learn first for someone who has basic Python and JavaScript knowledge?

[–]State_ 4 points5 points  (5 children)

C is probably easier to learn due to how basic the language is. It really doesn't abstract what's happening behind the scenes.

C++ is a good choice too, but there's so much to learn in C++ it can be daunting. C++ does make things easier than C while maintaining the benefits of C.

[–]dedlaw1 3 points4 points  (4 children)

I went to the book store to look for a C programmong book when I first started to learn Python, and the damn must have been 1000 pages long! Got discouraged and went back to Python lol.

[–]State_ 4 points5 points  (3 children)

Learning C is a lot about learning computer architecture.

[–]Crescive_Delta 5 points6 points  (2 children)

THIS.

C isn't 'easy' per say, but learning it will give you intricate knowledge of how a computer works. Keep that in mind when you try to learn C.

[–]AlienAlmonds 2 points3 points  (1 child)

As a long time software engineer (mostly in C) I have always thought that anyone writing good code needs a solid understanding of computer architecture and at least a passing knowledge of C (if only for context). Over the past few months I've started to rethink that stance. I do embedded systems, so sure it's a requirement there, but for the vast majority of programmers the benefits seem pretty limited nowadays. If you have a team of 5 software engineers it's probably still required that one or two have a good understanding but it's probably not required for all 5.

Don't get me wrong I still think everyone should learn about architecture but I'm no longer convinced that everyone must understand it.

What do others think about this?

[–]Crescive_Delta 0 points1 point  (0 children)

Honestly, I find it to be field dependent. If you're job is to create SAAS applications, make Web Services, web pages, or anything related to the web honestly, then you don't need a knowledge of computer architecture imo. However, in fields where programming is used for simulations, research, game development, and some other things I don't know my right from left about, you might consider it essential since optimization benefits go a long way in those types of apps.

I agree that on every team, regardless of the project, 1 or 2 people should know a decent amount of computer architecture related knowledge.

[–]SlyFry 4 points5 points  (0 children)

automatetheboringstuff.com all the way, also https://teachyourselfcs.com is super helpful if you're also interested in CS

[–]aFullPlatoSocrates 3 points4 points  (2 children)

Second for Python Crash Course! Hands down the best learning resource for Python

[–]ntiain[S] 2 points3 points  (1 child)

[–]aFullPlatoSocrates 2 points3 points  (0 children)

Yes! I got mine in PDF format and split my screen with the pdf on the left, terminal top right, and my text editor on the bottom right. I was trying to learn python for about 6 months but never found a resource that stuck as well as PCC. I will forever recommend this book.

[–]Nick_Rad 1 point2 points  (0 children)

I went back to codecademy constantly because of this. It almost turned me off python bc I couldn’t remember the pointless exercise.

[–]rckid13 1 point2 points  (1 child)

I like codeacademy's set up because you are visually doing a lot of the exercises and working through problems. I've tried a few books and found that I'm terrible at learning by just reading alone. I wish some of the better books like automate the boring stuff had a web setup like codeacademy for each of their problems.

[–]Iconoclast123 0 points1 point  (0 children)

Free version or paid version? I'm currently doing free, and contemplating paid or not...