Introduction

Jesse Farmer says "Motivation, frustration tolerance, social support, and access to
expertise are all more important than the raw language when you're
trying to become a programmer.".

However, what about when you're past that stage? Say you want to build your portfolio on the way to getting your first job or you want to change specialties for your fourth. Maybe you have a start-up, or you just want to build cool stuff.

Some languages (and frameworks!) are a better fit for projects than others.
Why? There are several types of programming paradigms.

If you are modelling a process or creating a game, you would find an object-oriented programming language to be more intuitive to use, whereas if you want to manipulate data you may prefer to go with functional. Why? They go with the flow.

You'll notice that some languages have multi-paradigm support. You'll also notice that they are the most popular languages. This is not a coincidence.

It's also well worth learning languages from new paradigms for the intellectual challenge.

If you're doing that, Steven Grimm recommends:

  • Assembly language so you know what the other languages are doing under the covers.
  • C since it is the common ancestor of many subsequent languages and
  • is the language that many of those languages' interpreters and compilers
  • are written in.
  • Java (or alternately, Smalltalk) to get exposed to object oriented programming and managed runtime environments.
  • Haskell (or alternately, Scala or F# or Ruby) to learn to think
  • functionally; functional programming is highly likely to be the next
  • mainstream paradigm.
  • Python to expose yourself to dynamically-typed languages.
  • SQL to expose yourself to relational algebra.

Other factors you might like to consider are

  • How well versed are you in the programming language? (This becomes more important as the deadlines get closer)
  • Is it a new language? Has it been tested and proven in the current domain?
  • How many people actually code in it? This is Important if you need help.
  • Their job prospects and salary expectations

Without further ado...