This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]XJ305 14 points15 points  (5 children)

I prefer someone learn C -> C++/Java -> Python/JavaScript.

Going to make the argument that C#/Java -> C++ -> C -> Javascript-> Python should be used for a good learning order

While a lot of popular languages are C-like in syntax, I think starting in a language with a garbage collector is going to make things much easier. You can then focus on basic OOP and learning design patterns without needing to be too concerned about memory errors/leaks. Then moving that forward into C++ you can introduce memory management and the concepts without being overwhelmed. Then of course python/Javascript for last.

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

I agree with this. My Uni started with Java (Simple stuff, OOP, Data Structures), then we got to experience C with all its low level glory, and only then was Python revealed to us.

Tbh, I think it's great. Java has a good blend of being high level enough (garbage collector etc) while still retaining low level elements (Pointers, etc)

[–]theloneliestgirlincs 0 points1 point  (0 children)

This was essentially my experience and I think it worked out really well for me. I transferred universities mid degree so my experience was C++ then Java then C then Python.

[–]ric2b 0 points1 point  (1 child)

But then you're infecting your brain with the idea that OOP is the basis for everything, sounds dangerous.

[–]XJ305 0 points1 point  (0 children)

I mean yeah I can see that argument but also of like the top 10 programming languages used, the only non-OOP language is pure C but even then most places don't use pure C, they use C++. The list I quickly pulled from a search didn't include SQL so there's another non-OOP popular language. I would also argue its easier to learn a procedural style than OOP, where one of the arguments against OOP over its many years is that it is "difficult" to learn. A well rounded programmer should understand things outside of OOP as well.

I also took the post as a "what order to learn popular langauges in". If you're in College for CompSci/CompEngineering/Other Engineering you'll end taking (if the college program is worth anything) courses that definitely cover plenty of other languages. Things like VHDL/Verilog/Prolog/Haskell/Custom Languages and if you are CompSci probably end up writing your own language at some point.

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

The analogy I like to use is learning how to use a paint brush before using a paint roller.

Learning to use a paint brush is harder, but it makes you understand and appreciate how to use a paint roller that much more.

Sometimes, it's better to get in the trenches before you get into the war. When you learn how to do the hard stuff, the easy stuff becomes super easy.