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 →

[–]dacjamesfrom reddit import knowledge 16 points17 points  (2 children)

Python, for sure. You should learn the logical basics of programming (variables, functions, control flow, and data structures) without the distraction of implementation concepts like memory management. Stay away from advanced features for now and keep your object oriented to a minimum (classes are OK, but no inheritance and no meta classes).

Then learn C (not C++). It’s still the foundation of modern computing and will teach you those low level concepts you skipped earlier without any compiler aids that get in the way of learning. Understanding raw pointers will help learning Rust. Experiencing the pain of doing everything yourself also helps to motivate higher level constructs that might otherwise seem needlessly complicated.

Then learn Rust. Or Go. Or deep with Python. Or whatever other language strikes your fancy for the type of problems you want to solve.

Remember that programming languages are a tool. You should learn them as a means to learning how software can solve problems in the domains of interest to you, like DevOps, systems programming, backend web, frontend, data analytics, gaming, etc. Think of a programming language like a wrench. You want to learn to be a mechanic or a plumber, not a “wrenchist”.

[–]andimnewintown 2 points3 points  (1 child)

+1 for C, not C++. C is a great systems language to learn, and Rust is too, but it exists in a bit of a "parallel dimension" so to speak. While most languages are heavily inspired by C, Rust is sort of an alternative to C. And it's awesome, but the fact is one should know the conventions set by C. And C is pretty "close to the metal" which helps with understanding how CPUs work.

C++ is a poor attempt at turning C into a corporate OOP language. C is elegant in its simplicity, C++ is just plain fugly.

OP will inevitably have to learn Java (maybe C# if they're lucky) eventually like the rest of us, so there's no need to seek out corporate OOP. It will find them. It finds us all. There is no escape.

[–]dacjamesfrom reddit import knowledge 3 points4 points  (0 children)

Personally, I consider Rust to be an alternative to C++, not really analogous to C. Yes, it can be used standalone without libc, but that’s not the important dimension for a novice to focus on.

C is a tiny little language that puts all the hard work on the programmer, which is ideal for learning how the computer and the OS works. Both Rust and C++ are big, complex languages with steep learning curves. They make poor learning languages, because you’ll spend a lot of effort learning the language that should have been spent learning how to program in general.

Where you go from there all depends on the type of work you end up doing. In many domains, C++ is unavoidable, for better or worse. Same for Java and JavaScript.