Learn Programming Models, Not Programming Languages
It’s unlikely that we’ll see an end to the holy war about which programming languages new programmers should learn first.
But after you can read in input, write loops, and do something interesting, what next?
My advice: learn programming models, not programming languages.
I’m afraid it’s a bit naive to be stuck to one tool or ecosystem. Especially if you’re a student. As a student, it’s okay to have mediocre results. Your primary goal is to learn things, not deliver amazing results.
As I’m further along my career as a developer and engineer, I’ve found the most useful things I’ve learned from my courses were not the ins-and-outs of Python or C. It was the mental models the languages helped me build up. And I think a failure of lots of blogs/coursework/videos is that they fail to emphasize what exactly those models are.
We live in a wonderfully rich environment where programming languages have borrowed the good ideas from their ancestors and now support multiple paradigms. It also means that the lines between these paradigms are blurred. And if we don’t stress what these paradigms are and where and how they evolved, students will struggle to build up this understanding themselves.
So, in no comprehensive fashion, here is a list of programming models that I think beginner and novice programmers need to be aware of:
- Imperative Programming
- Hardware Description Languages (VHDL, Verilog)
- Memory Management
- Functional Programming
- Object-Oriented Programming
There is a lot that can be said about every model here. And I’m far from being an expert on any one of these topics.
Instead, I hope you Google around and take a look at the linked references and resources. They’ll do a much better job of explaining the concepts.
I assure you, you’ll be a much better programmer by learning multiple paradigms. I wish you more than luck in your journey.