5 ms·
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
by chrsig 4y ago
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)
- tomtheelder 4y agoWhat would you say the value is in learning some sort of lisp? I see the value in all the others, but lisp dialects tend to be pretty vanilla aside from their syntax. I can't think of anything you'd learn from lisp that you wouldn't from Haskell.
- aranchelk 4y agoI’d imagine idiomatic use of macros.
- tomtheelder 4y agoAh that makes a lot of sense.
- chrsig 4y agoI think the big value is in learning to work with the AST itself, internalizing structure and representation. And how else are you supposed to enjoy SICP?
- synthc 4y agoMacros
- nuancebydefault 4y agoI think it is impossible to make a list of programming languages that are worth learning. Just as a comparison, would you also make such a list for normal languages? English, Arabic and Chinese? 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.
- mikepurvis 4y agoBut I think the point should be to get at least a taste of either end of every one of those continuums, so that you get a broad overview of what kinds of problems are well suited to different sets of tradeoffs. For another silly example, see the difference between rust’s collect and using generators in Python. Same end result with very different semantics. Without this, there’s a risk that the “learning” is just tunneling in on your own pre-existing prejudices (insert hammer-nail metaphor here).
- nuancebydefault 4y agoI understand what you mean and I agree for the most part. Still, there are multiple degrees of freedom for choosing languages, any list is just a proposal.
- mikepurvis 4y agoRight, but the presence of all those degrees means it’s valuable to at least dabble in many different languages, vs asserting that a list of just a few basically has it covered.
- 4y ago
- fifilura 4y agoI think SQL is both the simplest to learn and most worthwhile in this aspect. Why? Short answer - Because it doesn't have for loops. It forces you to think about data in another way. It is like origami for programming. You can't brute force it, you have to fold your way to the result.
- rileymat2 4y agoI understand what you are saying, but what you can end up with is stored procedures with loops.