Which Programming Languages Should I Learn?

C++ is a good language to know if you want to go into software development.  So are Java and C# and Python.  More important than any of these, however, is versatility.  With documentation handy, you should be able to develop a basic working knowledge of pretty much any language within a day or so.  Don’t be scared off by that; it’s much easier than it sounds.  Languages tend to follow certain patterns.  If you can get the thinking down, translating it into code is the easy part.

I recommend being at least familiar with the major language groups.  I tend to group them like this:

  • C-likes (C, C++, Java, etc.)
  • Scripting languages (Python, Perl, Ruby, etc.)
  • Lisp-likes (Common Lisp, Scheme, Clojure)
  • Assembly

There’s a bunch of other categories, but these are the important ones.

C-likes are all pretty similar, differing mainly in the details and advanced features.  As such, once you know one, it’s not too hard to switch to another.  A lot of production code is written in them.  Learn one and then figure out the rest as necessary.  A couple notes:

  • C is the simplest, but it doesn’t have any advanced features, and those can be useful.
  • C++ is probably the hardest to learn, but it hides the least from you (aside from C).

Scripting languages are important because they allow you to hack a tool together quickly.  Need to crawl a website looking for references to a certain image? 5 minutes of scripting.  Need to flip a the tenth bit of ten thousand different files? 5 minutes of scripting.  You can do a lot more with them if you want (e.g.  a lot of Google’s stuff is written in Python), and they’re excellent workspaces for testing out ideas.  Find one you like (or, at least, can tolerate) and bring it out when you want to experiment.

Lisp-likes are useful because they force you to think in a specific manner that’s likely not how you normally work (functional programming, for what it’s worth), and that can be useful in any language.  Study one of these enough to get a handle on how they work and then get out of there, unless you happen to like the language.  The thinking is the important part with these but, if you fall in love with one of the languages, feel free to continue exploring it.

Finally, assembly is important because it’s how the machine thinks.  Chances are high that you will never actually use assembly.  It’s a pain in the ass to work with.  That being said, it gives you some valuable insights into how your code is ultimately run, and that can help you write better code in higher-level languages.

Don’t chain yourself to a specific language.  Think of them as tools, and remember that not every tool is ideal in every situation.  Sometimes you need a hammer, sometimes you need a screwdriver, and sometimes you need your dog.  Don’t be afraid to experiment with new languages.  If you spend a day learning something new, your time wasn’t wasted, even if you never touch the language again.


Monday, March 14th, 2011 Thoughts

1 Comment to Which Programming Languages Should I Learn?

  • great post, thanks for sharing. keep it up

  • Leave a Reply