Hacker News new | past | comments | ask | show | jobs | submit login
Languages a well-rounded programmer ought to know
6 points by dsrguru on March 11, 2012 | hide | past | favorite | 8 comments
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.

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.

Here they are (with double newlines because I couldn't figure out how to do single newlines on HN):

A LISP dialect (preferably either Clojure, Common Lisp, or Racket)

Python, Ruby, or Scala

Haskell, ML, OCaml, Erlang, or Scala (don't pick Scala twice)

C

A Bourne-derived UNIX shell (Bourne, ksh93, or Bash)

HTML/CSS/JavaScript (at least basic proficiency)

Optional: Any logic programming language

Agree? Want to rip my eyes out? Let me know!




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.


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


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?


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.


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.


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?


C?


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




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: