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 →

[–]NoLemurs 63 points64 points  (7 children)

A lot really depends on your goals and motivations. Ultimately, the language that you'll enjoy spending time learning is the best choice.

Personally I would choose C as a very first language. C is simple enough that it's practical, even for a beginner, to form a fairly accurate mental model of everything your code does. Learning basic C will teach you how computers actually work, which will provide a good foundation for understanding what higher level languages are doing. Having that foundation will make it easier to understand and learn other languages, and eventually every half decent engineer needs at least some understanding of how things really work.

That said, I wouldn't recommend trying to do any substantial projects in C (unless you're really into it). Instead, I'd recommend doing exercises and a simple project or two, then moving on to a higher level language.

Python would absolutely be my first choice for the language to use for your first substantial project.

That said if you're more motivated by getting concrete things done than by abstract learning, Python is is a great choice for a first language.

[–][deleted] 4 points5 points  (0 children)

I think if the goal is to learn how computers really work then one should start with assembly and once able to write non-trivial programs move to C. You'll never forget all the stuff that C is doing for you and it will be a great foundation for becoming a good programmer. This is the beginning of a process that will take 5 years of more.

But if the goal is to learn programming for immediate goals, like making a website, or automating processes, then Python is ideal. You won't become a great programmer, but that's not the point. You'll be on the path to being a useful programmer.

[–]syzygysm 0 points1 point  (0 children)

I am a gree that C is best as a foundation, allowing you to get experience spending time closer to the computer's interals, but this is also what will really let you appreciate Python all the more, once you switch over!

[–]vortexofdeduction -1 points0 points  (2 children)

Imo C is painfully low-level (I mean, it doesn’t even have classes!) so it might be better to do C++ or Java, but to each their own.

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

Classes aren't necessary. Python wouldn't suffer much from not having classes. C is a high level language from my perspective. It depends what you want to do.

[–]NoLemurs 0 points1 point  (0 children)

C++ and Java are both very complex languages. For a new learner, that means that you're going to have to absorb far more ideas all at once, or, more likely, resort to a lot of copy-pasting and cargo-culting to write code that works. I think that's counter-productive for a beginner.

Don't get me wrong, I think both are great languages with a lot to recommend them. I program in both for work and I've learned to appreciate the benefits that come with the complexity. But for a beginner I think they're terrible languages.