The Definitive Guide to Language Selection

Started by
23 comments, last by stimarco 17 years, 5 months ago
I don't think this is a good, idea mostly because in a thread based system like this it will be hard to find actual information. Someone experienced would have to compile the information somewhere. Also the Serapth's post is heavily biased, towards OO imperative compiled1 c-derived languages (that's actually quite specific). To be fair you'd need to cover OO, procedural, logical (eg. Prolog) and functional at least. You would need to at least mention a minimum of special features like memory management (GC? RAII possible?), concurrency (message based? Lock based? Data flow variables? Implicit? Thread-based? Futures?) and evaluation (lazy or eager?). FYI evaluation style is very important when choosing a language, both because of the technique of programming and because of effiency gains/loses.

Your post also contains lots of misinformation, which could really misguide beginners. "99% of commercial windows or console games", more like 10-15 %, AFAIK the Java, C and C# are more widely used.

About the greek and chinese, they won't really understand the advantage of early/late binding, but neither will they understand the advantage of Boost, libraries, etc. You will need to properly explain all concepts before describing languages, and that isn't an easy task. You need to give beginners easy to understand information like "X is easy to learn", "y is efficient". However this will most likely misguide them, since they want to easily and efficiently create their new MMORPG. So you'll also need to explain how to choose a language, that you can't just go ahead and create a MMORPG, you need years of experience in various languages and projects before even starting the design.

If "definitive" guide would have to be created you would at least need to cover different approaches to programming, like functional (maybe also logical or constraint based). Some languages I don't think you can leave out:
Scheme (SICP, a good approach to programming)
Common LISP (cool object system, and have lots of cool features neatly integrated)
Haskell (lazily evaluated, functional, monads, statically typed)
Standard ML (interresting type system, similar to Haskell in some regards)
O'Caml (another functional languages (not strictly functional though) )
Smalltalk
Erlang (fault tolerant, interresting concurrency model)
Epigram (not all that mature or proven, but have dependent types which is interresting)
Prolog (example of logic programming)
AspectJ (one of the most important aspect-oriented languages)
Java (imperative, JIT compiled, OO)
C (low-level, very popular)
Objective C (popular on Macs)
C++
C#
Oz (an example of a lanuage integrating many concepts)
I have most likely forgotten a bunch.

I doubt many people here at GDNet would be able to create such a guide, there are a few who I believe might be capable of doing it (I'm not one of them).

1: C# is actually a hybrid language, but in the end it's compiled on the end user's machine.
Advertisement
To add to the language database: Felix along with any C++ libraries, and Objective Caml with LablGL and/or OCamlSDL bindings.
Quote:Original post by CTar
I don't think this is a good, idea mostly because in a thread based system like this it will be hard to find actual information. Someone experienced would have to compile the information somewhere. Also the Serapth's post is heavily biased, towards OO imperative compiled1 c-derived languages (that's actually quite specific). To be fair you'd need to cover OO, procedural, logical (eg. Prolog) and functional at least.


You are 100% correct. My hope was others here would do a writeup about other languages.

Obviously, that failed.
The reason that this effort has failed - and the reason that similar efforts have always failed, and likely will always fail - is because what language a beginner selects really doesn't matter. People who no longer consider themselves beginners put far too much emphasis on the matter. The beginner should pick a language - any language, based on any criteria, no matter how bad or irrational - and stick with it. Yes, picking another language may have made things easier, but not by that much.

These days, whenever someone asks "language X or language Y," my response is "flip a coin." Seriously, it doesn't matter that much. Yes, picking C# when your objective is to write games for mobile phones may seem irrational, but the truth is that the majority of your early work will not be on the mobile phone but on the PC, and the majority of your gained knowledge/understanding of programming translates to Java or C++.

This is why language wars are silly.
Oluseyi has a good point. (I'd probably be more sarcastic and reply with: "English".)

I started with Sinclair BASIC. Unfortunately, advising people to start on a Sinclair ZX81 / Timex 100 rarely goes down well with the instant gratification crowd intent on creating the next great MMORPGRTSONEONEONE in a week.

There is no reason for an FAQ for this subject, simply because the question is, at best, rhetorical.

There is no way to provide a definitive answer without knowing far more about the questioner's intentions. When the questioner has given you the full, contextual background behind his query, the answer is, more often than not, dictated by pragmatic necessities rather than base desires and thus becomes moot.

I would therefore replace any such FAQs with a more general guide to game development for beginners. I'm working on an outline for such an article at the moment, which I intend to post to the forums for further refinement and discussion before embarking on the full work. (I could use some writing samples for my CV, so this seems a good opportunity to kill two birds with one flame war.)
Sean Timarco Baggaley (Est. 1971.)Warning: May contain bollocks.

This topic is closed to new replies.

Advertisement