| Learning different programming languages definitely helped expose me to new ideas, but I think it's a relatively shallow way to grow. There's only a few that I think are really worth learning for the sake of personal growth: - both C and C++ - Some form of lisp. I could see julia taking this spot. - Haskell - SQL There are obviously more that are worth learning for industrial use. Learning the above will give a solid understanding of how every other language works though, even if there's different semantics for a particular language. When I was really into learning new languages, I think it was because I didn't have a good sense of how to do more challenging things. At some point, I settled down and got more into projects that really require more domain knowledge. Writing an external merge sort, interpreter & compiler, a gameboy emulator, a disk persisted b+tree, ray tracing & physically based rendering, etc. Those types of problems are what really pushed my boundaries and made me think more about how to solve problems. In the case of ray tracing & pbr, it forced me to learn some calculus, linear algebra, and statistics, which has been an incredibly rewarding experience. It can be fun to imagine what solving a problem looks like in a language, because it may have some qualities that play to the strengths of a solution. At the end of the day, the languages are just tools people have come up with. Learning the quirks of C++ becomes less fun when you start to realize that it is the way it is because of how history unfolded rather than because of some interesting concept. (edit: hn list formatting) |
Choosing a language to learn depends on, among many more aspects:
* What style do you prefer. Return codes vs exceptions, small lambdas vs elaborate functions...
* What paradigms you find useful (procedural, functional)
* how do you think, rather mathematical, more in a state/execution way or more like cooking (recipes),...
* what applications do you like? Frontend to a store, embedded/industrial, mission critical,...
* simply taste. I hate ruby and love python. For a lot of people it is the other way around.
* do you love optimizing? For what memory, speed?
* Do you prioritize or advocate readability, maintainability, re-use?
In the end you have to choose your battles, you can't master all paradigms and styles in one lifetime.