

Languages a well-rounded programmer ought to know - dsrguru

There's obviously a lot that goes into making a well-rounded programmer.  Examples include, but are not limited to, having a deep understanding of multiple programming paradigms, knowledge of different data structures and algorithms, understanding of computer architecture and operating systems and networks, knowledge of higher mathematics, and lots of experience actually writing code.<p>However, this post isn't about those things.  This post is just a very subjective sampling of very useful languages that are either useful for the ways of thinking they help you acquire or for the application domains in which they excel or for both.  I consider these the bare minimum of languages that a hacker should know.<p>Here they are (with double newlines because I couldn't figure out how to do single newlines on HN):<p>A LISP dialect (preferably either Clojure, Common Lisp, or Racket)<p>Python, Ruby, or Scala<p>Haskell, ML, OCaml, Erlang, or Scala (don't pick Scala twice)<p>C<p>A Bourne-derived UNIX shell (Bourne, ksh93, or Bash)<p>HTML/CSS/JavaScript (at least basic proficiency)<p>Optional: Any logic programming language<p>Agree?  Want to rip my eyes out?  Let me know!
======
jnbiche
My take on the list would be to merge LISP with the other functional languages
(even though I realize LISP in not a pure functional language, but then
neither is Erlang, OCaml, ML, or Scala), and add a list of prototype-based
language, like JavaScript, ActionScript, and Io. However, I do recognize
LISP's significant cultural impact on hacker culture, so I'm torn about not
requiring it.

Cool list, though. Will probably inspire me to go back and try to further my
understanding of Haskell, which hands down has had the most disproportionate
effect on my understanding of programming.

------
transitive
my list is pretty different. i'm gonna totally exclude the functional language
category. functional languages can do some really cool things and some people
swear by them, but none of them are things that you _should_ know for
professional purposes.

a low level language - C is the most important one by a million miles

a high level enterprise oriented language - Java or C#

a high level scripting language - Python, Ruby, Perl

Unix Shell Scripting (bash is the most popular i guess)

the frontend web stack - HTML/CSS/JavaScript

obviously people will have widely varying degrees of proficiency between those
categories, but everyone should be at least familiar with those categories if
not an expert in all of them. you probably should be an expert in one of them
though. having a "native tongue" is a useful thing.

~~~
achompas
_functional languages can do some really cool things and some people swear by
them, but none of them are things that you should know for professional
purposes._

Thinking "functionally" has tons of holistic benefits for a programmer. It can
also shrink your code base significantly.

Why ignore these gains if they can make you a better professional coder?

------
ACT2
C, C++, Java, C#, F#, some good version of BASIC. Anyone who discounts BASIC
out of hand is a wanna be.

~~~
dsrguru
I don't believe C++, Java, and C# do anything positive to affect the ways a
programmer thinks. That's really the purpose of this list.

I could add F# to the functional languages since, from what I understand, it
almost exactly is to Scala what C# is to Java. But I don't view Microsoft-
specific languages as languages a hacker needs to know. XD But what mental
growth would BASIC facilitate?

~~~
transitive
Java and C# do facilitate the way a programmer thinks, but maybe not in the
way you're thinking of. they won't make you a more genius hacker that comes up
with the cleverest code. they'll make you think longer and harder about your
engineering decisions and the ramifications they have on a large project.

------
facundo_olano
C?

~~~
dsrguru
Whoops, was in the original before I discovered a single newline doesn't
provide any whitespace on HN. Thanks!

