If a programming language has nothing new to teach you, it is not worth learning. For this reason, it is probably a good idea to learn multiple ones that are “conceptually orthogonal” to each other. Examples:
lisp (code-as-data, syntax vs semantics, metaprogramming)
prolog (declarative programming)
a simple RISC assembly language (machine details, stack vs heap)
haskell (functional programming, type inference, lazy evaluation, monadic theory, type classes)
Learning ideas has better ROI than learning tools. It’s easy to pick up tools as needed for work, but recognizing ideas/patterns is both a more transportable kind of knowledge and harder to acquire. Also key ideas behind computation do not have a “half-life,” whereas tool/tradeschool type knowledge does.
Exactly, it’s all about the concepts underlying the tool and recognizing situations when a certain tool has a better ROI than some other one at solving a problem at hand.
But, sometimes it can be hard to make a fair judgement on whether you really know something or just think that you know. So, it might definitely be useful to know a few other techniques/tools of doing the same thing in order to foolproof yourself.
If a programming language has nothing new to teach you, it is not worth learning. For this reason, it is probably a good idea to learn multiple ones that are “conceptually orthogonal” to each other. Examples:
lisp (code-as-data, syntax vs semantics, metaprogramming)
prolog (declarative programming)
a simple RISC assembly language (machine details, stack vs heap)
haskell (functional programming, type inference, lazy evaluation, monadic theory, type classes)
ruby (message passing, object oriented programming, regular expressions)
APL (concise syntax, vector programming, non-ascii programs)
Assuming you are a person not influenced by external incentives.
Learning ideas has better ROI than learning tools. It’s easy to pick up tools as needed for work, but recognizing ideas/patterns is both a more transportable kind of knowledge and harder to acquire. Also key ideas behind computation do not have a “half-life,” whereas tool/tradeschool type knowledge does.
Exactly, it’s all about the concepts underlying the tool and recognizing situations when a certain tool has a better ROI than some other one at solving a problem at hand.
But, sometimes it can be hard to make a fair judgement on whether you really know something or just think that you know. So, it might definitely be useful to know a few other techniques/tools of doing the same thing in order to foolproof yourself.