4 ms·
Peter Norvig in his essay "Teach Yourself Programming in Ten Years"[0] wrote this: > Learn at least a half dozen programming languages. Include one language th
by dgb23 5y ago
Peter Norvig in his essay "Teach Yourself Programming in Ten Years"[0] wrote this:
> Learn at least a half dozen programming languages. Include one language that emphasizes class abstractions (like Java or C++), one that emphasizes functional abstraction (like Lisp or ML or Haskell), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), and one that emphasizes parallelism (like Clojure or Go).
There is also similar advice from other well respected veterans. Being able to choose from a smallish deliberate set of languages that introduce some powerful concept each or have some unique reach.
Then there is "Beating the Averages"[1] by Paul Graham.
> A suspicious person might begin to wonder if there was some correlation here. A big chunk of our code was doing things that are very hard to do in other languages. The resulting software did things our competitors' software couldn't do. Maybe there was some kind of connection. I encourage you to follow that thread. There may be more to that old man hobbling along on his crutches than meets the eye.
I think this hint is important and relates to the above. There are things that you can do in X, that are "very hard" to do in Y, probably vice versa. It is powerful and helpful to know a heterogeneous set of languages and tools.
The distinction between say Java, C# or Typescript is almost arbitrary from a technical, real brain "juice" kind of perspective. The distinction between say SQL, C or Lisp however lets you see a problem in a whole different light as each introduce things you cannot do easily in the other.
Example: Why does a particular Blub webapp suck? Because it runs slow, changes to it take too much time, it has data consistency issues that it moves to the user or introduces as bugs? Hint: There are solutions to these problems and some technologies make them just fall out, almost for free, if one has taken the time to learn them.
I don't yell this down from an ivory tower. I say this as someone who has went through the pain repeatedly, because I and most people around me didn't get this. Pragmatism is not always "what everyone else does."
And coming back to the article; I don't say the ecosystem and the culture around a language or platform don't matter. It is just one factor of many. When looking at these things I found it is _useful_ to consider languages (and so on) that are slightly niche and opinionated enough so they make particular things easy that would otherwise be hard.
---
[0] https://norvig.com/21-days.html https://norvig.com/21-days.html
[1] http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html