logo
Header graphic 2 of 9

There's more

My criteria for choosing a programming language and its implementation

Generally speaking, the choice of programming language influences your project's success. If you're writing a massively multi-threaded application with a high need of concurrency and fault-tolerance, you might save a lot of time by using Erlang, a language that has been designed for just that (Amazon's SimpleDB, for example, is implemented in Erlang).

Likewise, if you're writing a computer game, you might consider to not write it in Perl.

The important part is: web sites and web programming are almost as diverse nowadays, as computer games are different from telecommunication network software. You might write a web application that needs to provide a uniform, usable interface that is able to present hundreds of database forms to a user and thus you might want to use Java or C# and technologies like Google Web Toolkit or Eclipse RAP. Similarly, you might want to use Python and Django if you're designing the next big social network site and need really nice templates, because your users care about design more than uniform usability.

It's important that you recognize that you can still achieve everything in every Turing-complete language. For a long time, developers tended to focus on the libraries that were available for a programming language to make a choice, or they just went with the one language they knew best. Today, I'd argue that, while you're certainly more productive in a language you know, with libraries you already know by heart, in the long run it might save you a lot of time, bugfixing and grief to choose a language that already has excellent support for your problem, right from the start, built into the language itself. It's difficult to estimate performance gains in this area, especially if you're starting on a big project with many developers with differing skill-sets.

So choosing the language makes a difference:

Now, the criteria that I am using are currently mostly revolving around:

...but that might not fit your needs exactly. It's important however that you know that there are differences. Quite a bit of my daily work consists of finding the best technology to solve a certain problem, or fixing the problems of somebody who made a bad decision some time ago. You can avoid a lot of mistakes by doing just a little extra out-of-the-box internet research before starting a project.