You're Speaking my Language, Baby. Part 1: Introduction

If you're about to start on a programming project of some sort (and I am), then the first choice you have to make is the main programming language you're going to use. Now, if you're carrying out this project on your employers time they probably have very specific views about that. I'm not doing this project on company time, though, so the world is my oyster, figuratively speaking. There are, at a rough guess, shit loads of programming languages out there. There's a reasonably good list to be found here, though it is missing a couple of the weird ones. While constructing the project using a language which uses LOL cat type speech for syntax, or takes its input in the form of abstract art would be an excellent mental challenge, I'm sure, that's just not what I'm looking for.

I'm also, right off the bat, going to eliminate a couple of other classes of language. First of all: no functional programming languages. I have no patience for learning a new programming paradigm, expecially one which up until now has shown limited application outside academia. No Haskell, no CAML and absolutely no Prolog.

I'm also not considering high level dynamically typed languages, so no Python and no Ruby. For that matter, no Groovy or Lua either. You can program very quickly in them, but I'm not prepared to take the performance hit which comes with them. Python might be very popular, but I think it actively encourages bad programming practice and I want no part of that. It's an excellent hobbyest language, but that isn't what I'm looking for.

Lastly: I'm not looking at anything based on Microsoft's .Net platform, and that includes Mono.

The questions I'm going to be asking of the languages I am considering are the following:

  • How well  can I use it?
  • Generally, speaking, how good is the performance?
  • What tools are available? Specifically, does it have access to the libraries I'll need to build the project. These are mostly ones relating to 3D graphics, inter-computer (client-server) communication and (possibly) physics. There are probably a couple of other things I haven't thought of yet.
  • How relevant is it to others? That is, if I write the project in this language will it be useful to other interested parties?

I considered three languages and I'll tackle them one at a time in future posts.