The Definitive Guide to Language Selection
Members - Reputation: 1134
Posted 23 October 2006 - 03:55 AM
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) )
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)
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.
Crossbones+ - Reputation: 4225
Posted 23 October 2006 - 05:12 AM
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.
Staff Emeritus - Reputation: 1670
Posted 23 October 2006 - 05:29 AM
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.
Members - Reputation: 1063
Posted 23 October 2006 - 08:15 AM
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.)