4 ms·
These lists always seem a bit silly to me. It seems to be an attempt at being hip rather than a practical list. I thoroughly enjoy Haskell and Erlang, but I'm
by brent 18y ago
These lists always seem a bit silly to me. It seems to be an attempt at being hip rather than a practical list. I thoroughly enjoy Haskell and Erlang, but I'm not sure they are languages anyone "should know". My list would be more like (pick one from each):
1. C
2. Python, perl, or ruby
3. Matlab or R
4. Common Lisp or Scheme
5. A fifth sufficiently different language, but with worthy concepts: Erlang, Haskell, O'caml, Prolog, Lua, Javascript, etc...
The choices in the first 4 don't matter too terribly much and the selection of a single language from #5 would largely be based on your own personal interests.
- wanorris 18y agoIf you want to really be well versed in programming techniques, it's worth learning a statically-typed functional language -- Haskell, OCaml, SML, or similar. This will teach you techniques you won't commonly see anywhere else. I wouldn't say you need to learn one of these, but I wouldn't say you need to know Matlab, or Lisp/Scheme either. Just that learning different programming styles will make you a better programmer. Prolog and Erlang reputedly have this property as well, but they're still in my to-learn queue, so I can't speak first hand about them. Also, unless you never plan on going near the web, JavaScript is pretty much a necessity these days.
- tlrobinson 18y agoYour list seems just as "hip" as his list.
- brent 18y agoWhy do you say that? Which part is hip? If my #5 were my list I could understand the comment, but my list is much more reasonable than the post. I use c, python, and matlab on a near daily basis for work so they are all quite practical. I think Scheme/Lisp are important to learn even if you'll never explicitly use them. The pl in 5 are useful depending on your domain, but I certainly wouldn't list these items as all being important to learn.
- evgen 18y agoI would venture to say that Matlab/R are completely superfluous for most programmers. Few of us do hardcore number crunching, and for those few times it is necessary add-ons like NumPy take care of the problem. Someone considering your list would be better off dropping the Matlab/R choice and replacing it with Javascript.
- tlrobinson 18y agoI didn't think either list was "hip", I just meant that your list wasn't very different than his, except seemingly arbitrary substitutions based on what you happen to use. He explicitly states: Note that I’m not necessarily advocating using any of these languages for a real project, but I believe that learning them will make you a better programmer in whatever language you do use. I do think the original list was better, since Erlang, Haskell, and Prolog shouldn't be lumped together in the "different" category, Javascript could be considered part of the Python/Ruby/Perl class, and I question the usefulness of learning MATLAB unless you actually need it.
- brent 18y agoIt isn't arbitrary at all. I think people should know a compiled language (procedural), a scripting language, a numerical computing language (w/ vectorized notation), and a functional language. I think its completely excessive for the average programmer to know Haskell AND Erlang AND Prolog AND Smalltalk. Do you think people should know all of those? I see advantages to learning each, but I think my list would take the average person a bit further.
- AndyKelley 18y agoProlog is disgusting. I wouldn't recommend it.