The Definitive Guide to Language Selection
#1 Members - Reputation: 3283
Posted 22 October 2006 - 12:18 PM
#2 Staff - Reputation: 8897
Posted 22 October 2006 - 12:36 PM
2. Your guide only covers two programming languages. How is that definitive? Even if someone covers the other three languages mentioned, a guide covering only five programming languages can still hardly be considered definitive; why have we automatically ruled out the entire BASIC family and it's derived languages, countless scripting languages, and C among many other languages.
3. You mention that many existing tools and SDKs are implemented in C++; whil this is to an extent true, I think you'll find that legacy code/libraries/engines written in C are far more common than those in C++.
4. Again, you mentioned the availability of compilers across multiple platforms as an advantage of C++, but there are many platforms which lack C++ compilers or lack a fully-featured standards-compliant implementation; if you're looking for something that should be available everywhere you'll probably find C to be much better supported.
Just a few quick points. If someone hasn't done it later I might take a stab at a brief coverage of the other languages you missed, but I'm still unsure as to the actual value of this thread as a reference.
#3 Members - Reputation: 3283
Posted 22 October 2006 - 12:59 PM
Quote:
Original post by Kazgoroth
1. What do you feel qualifies you to write 'The Definitive Guide To Language Selection'.
This thread hopefully by the time it is closed :) I am not qualified to write such a thing, nobody is. I am qualified though, to get the ball rolling and hope the community can be mature enough to be as impartial as possible, and through community effort make such a guide. Ok, perhaps the title was a bit grand... hey, cant blame a guy for shooting high! :)
Quote:
Original post by Kazgoroth
2. Your guide only covers two programming languages. How is that definitive? Even if someone covers the other three languages mentioned, a guide covering only five programming languages can still hardly be considered definitive; why have we automatically ruled out the entire BASIC family and it's derived languages, countless scripting languages, and C among many other languages.
You are right, I only covered two languages. Frankly, I only have years of experience with two languages and prefer to only speak on subjects I understand. I havent ruled out anything, I hope other people pick up the flag and cover their languages of expertise. Ideally I want to see VB, VB.Net, Python, Delphi, etc... all covered in this thread. But like I said earlier, I have no right to comment on the strengths and weaknesses of those languages. Look to this thread as a place for each language expert to argue the weaknesses and strengths of their chosen languages. The two examples I cited were just to get the ball rolling, I hope. I have ruled out nothing, and I hope nobody else does either. Hey, if you have a particular language you want to argue the merits of, please pipe in! I hope this to be a definitive thread we can direct new developers to when they ask "What language should I choose". If I alone answered that question, this thread would be dripping with ignorance and bias already!
Quote:
Original post by Kazgoroth
3. You mention that many existing tools and SDKs are implemented in C++; whil this is to an extent true, I think you'll find that legacy code/libraries/engines written in C are far more common than those in C++.
Yes, but I figured that was rather a matter of splitting hairs and very confusing to a new developer. C today, is pretty much C++, although that is a terrible mindset to take! If someone wants to take C on as an independant language from C++, that is their perogative. Although frankly, I think very very few people actually use C anymore.
Quote:
Original post by Kazgoroth
4. Again, you mentioned the availability of compilers across multiple platforms as an advantage of C++, but there are many platforms which lack C++ compilers or lack a fully-featured standards-compliant implementation; if you're looking for something that should be available everywhere you'll probably find C to be much better supported.
Really? The fully featured standards compliant part I can beleive ( hell, is their a single fully compliant compiler even available??? ;) ). Frankly though, I cant think of a single relevant ( to gaming ) platform, that doesnt have a C++ compiler available for it. Please inform me if im wrong, but I know of C++ compiliers for Windows, Dos, Linux, BSD, Mac, GameCube, Xbox, PS2, PSP, DS, nGage, and most mobile phones. Granted, C is more available across platforms but I cant think of two many platforms without C++ available to them.
Quote:
Original post by Kazgoroth
Just a few quick points. If someone hasn't done it later I might take a stab at a brief coverage of the other languages you missed, but I'm still unsure as to the actual value of this thread as a reference.
That is exactly the point. I want this to be a one stop shop of (mostly) unbiased merits of various languages. Please do so! It beats having the same conversation again and again, let alone devolving into lame language wars. If you can accurately describe the pros/cons of a programming language I havent covered with a minimum of bias, please do so!
#5 Members - Reputation: 960
Posted 22 October 2006 - 01:15 PM
Quote:
Original post by Serapth
.NET is a library of routines to do day to day stuff.
.NET is more than this. It includes the CLR (Common Language Runtime), Microsoft's implementation of the CLI (Common Language Infrastructure). Such inadequate abbreviations of the larger picture constitute the main source of misunderstanding regarding .NET, an issue you appear to be aware of:
Quote:
.NET is a very confusing topic to many ( for good reason )
Quote:
It *can* execute a bit slower because of the overhead of being virtualized.
It can also execute more quickly, because the JIT compiler can make optimizations relative to the machine the program is being run on.
#6 Members - Reputation: 3283
Posted 22 October 2006 - 01:18 PM
Quote:
Original post by nilkn
I only skimmed your post, but I want to point out the following.Quote:
Original post by Serapth
.NET is a library of routines to do day to day stuff.
.NET is more than this. It includes the CLR (Common Language Runtime), Microsoft's implementation of the CLI (Common Language Infrastructure). Such inadequate abbreviations of the larger picture constitute the main source of misunderstanding regarding .NET, an issue you appear to be aware of:Quote:
.NET is a very confusing topic to many ( for good reason ) Quote:
It *can* execute a bit slower because of the overhead of being virtualized.
It can also execute more quickly, because the JIT compiler can make optimizations relative to the machine the program is being run on.
You are right on both accounts, and like you said, it is a topic of which I am aware of. However, im intending this thread to be a primer for new users, so I dont want to get to mired in details. Hell, explaining what .NET actually is could take an entire thread on its own, and still fail! :)
#7 Members - Reputation: 239
Posted 22 October 2006 - 01:49 PM
I have a question?
Why not do a Wiki article so that people can put their information in an unbais enviroment and edit what of other people they find bias. That's exactly what Wiki is for! Then people could write about as many languages as exist. A link from this forum to the article would also be very apropriate. It could be a Gamedev community driven Wiki-project! Wouldn't that be cool?
#8 Members - Reputation: 198
Posted 22 October 2006 - 02:49 PM
However, it was stated at the beginning that this thread should be summarising language pro's and con's and NOT getting pedantic about other peoples comments.
So far there have been like 7 posts, yet only one of which is useful (the first). The rest of them have been just snapping at each other and about what X ACTUALLY is. Who the hell cares! this is for beginners, and beginners are not going to notice the minor inaccurate descriptions on peoples posts unless other people point them out. So how about we all shut up and if you have a post with something USEFUL to add for a BEGINNER then do so.
#9 Staff - Reputation: 8897
Posted 22 October 2006 - 04:37 PM
Quote:It's because those inaccuracies aren't going to be noticed by a beginner that they should probably be pointed out; as a beginner, do you want a simple to understand explanation that isn't correct?
Original post by DjMaSh
this is for beginners, and beginners are not going to notice the minor inaccurate descriptions on peoples posts unless other people point them out.
While people should certainly try to stick to the topic at hand and not nitpick minor details too much, I'd suggest that you'll end up with a better resource if people are allowed to point out what they feel are gaps or flaws in the information.
#10 Members - Reputation: 271
Posted 22 October 2006 - 07:19 PM
I don't think this forum is suitable for debating the different kind languages, what each one is good for or how alike they are. This thread would likely cause people to side with their language and ultimately turn into a war of the languages as I have seen in past threads on similar issues.
#11 Members - Reputation: 100
Posted 22 October 2006 - 11:36 PM
Quote:
Original post by Kazgoroth Quote:It's because those inaccuracies aren't going to be noticed by a beginner that they should probably be pointed out; as a beginner, do you want a simple to understand explanation that isn't correct?
Original post by DjMaSh
this is for beginners, and beginners are not going to notice the minor inaccurate descriptions on peoples posts unless other people point them out.
While people should certainly try to stick to the topic at hand and not nitpick minor details too much, I'd suggest that you'll end up with a better resource if people are allowed to point out what they feel are gaps or flaws in the information.
It probably won't make a difference to the beginner. By the time beginners are going to need to know about these topics, are when they are quite experienced and capable of picking a language on their own.
#12 Members - Reputation: 100
Posted 22 October 2006 - 11:36 PM
Quote:
Original post by Kazgoroth Quote:It's because those inaccuracies aren't going to be noticed by a beginner that they should probably be pointed out; as a beginner, do you want a simple to understand explanation that isn't correct?
Original post by DjMaSh
this is for beginners, and beginners are not going to notice the minor inaccurate descriptions on peoples posts unless other people point them out.
While people should certainly try to stick to the topic at hand and not nitpick minor details too much, I'd suggest that you'll end up with a better resource if people are allowed to point out what they feel are gaps or flaws in the information.
It probably won't make a difference to the beginner. By the time beginners are going to need to know about these topics, are when they are quite experienced and capable of picking a language on their own.
#13 Members - Reputation: 312
Posted 23 October 2006 - 12:14 AM
Note: This table is a mock example for illustrations only.
C C++ Java C# Python Delphi BlitzBasic DarkBasic
Easy to learn and use - -- + + ++ + ++ ++
Big community + ++ ++ ++ ++ + / /
Gamedev libraries available ++ ++ / / + + ++ ++
Run time efficiency ++ ++ / / / ++ / /
Free implementations available + + + + + - - -
Often used by professional game developers + + - - - - - -
Has been used to make (semi-)pro games + + + + + + + +
Note: This table is a mock example for illustrations only.
I think that would be more useful than long rants by advocates.
Bonus points: make each rating an expandable link/popup that explains the rating in more detail.
Even more bonus points: Allow voting, web 2.0 style.
#14 Members - Reputation: 453
Posted 23 October 2006 - 12:32 AM
Quote:
Original post by DjMaSh
I think this thread is retarded. I am a beginner programmer and am interested in such facts.
However, it was stated at the beginning that this thread should be summarising language pro's and con's and NOT getting pedantic about other peoples comments.
So far there have been like 7 posts, yet only one of which is useful (the first). The rest of them have been just snapping at each other and about what X ACTUALLY is. Who the hell cares! this is for beginners, and beginners are not going to notice the minor inaccurate descriptions on peoples posts unless other people point them out. So how about we all shut up and if you have a post with something USEFUL to add for a BEGINNER then do so.
I agree, but u have to consider this is GameDev.net. There are some real helpfull people with good threads, but you also have to consider that most of the programmers who respond to this are in their cubicle and haven't seen the sunlight in a couple weeks. They get cranky and then come here to vent.
What we really need on this board is a list of poster for beginners to beware. Now that would have some real merit.
#16 Moderators - Reputation: 2286
Posted 23 October 2006 - 01:05 AM
Quote:
Another idea: How about making overview table that rates the most important aspects used for language selection each language, like this:
I don't think that's particularly useful. Whether or not a language has widespread professional use is pretty much irrelevent, in almost all cases, as a basis for selection by a beginner. Furthermore, categories like "run time efficiency" are misleading and equally useless, because the language isn't the entire deciding factor there. And so on.
It's pretty much impossible to come up with a simple, general metric like that that actually has utility, because the statements it makes are so broad and vague and hide so many implications.
Quote:
What we really need on this board is a list of poster for beginners to beware. Now that would have some real merit.
That's what the rating system is (ostensibly) supposed to do. Although I'm not sure how well the use and meaning of the system is communicated to new users.
In general I would agree that it would be nice to have a resource discussing the merits of a variety of languages, but I'm so sure it could actually happen in a way that would be useful. Certainly this thread (or any thread) is not a suitable medium (although Serapth gets some credit for trying). An article or some other "mostly static" medium would be preferable, because it wouldn't get clouded by discussion and misinformation. A discussion thread is more useful as a research mechanism.
The problem, though, is that there are as many (good) reasons to pick a particular language as there are languages themselves; and you have to remember that the complete neophyte has different needs for a language -- typically, he needs a language that will help teach him the concepts involved in programming without bogging him down in language-specific idiosyncracies (which is why, for example, the "professional use" portion of the previously suggested metric is mostly pointless).
#17 Members - Reputation: 312
Posted 23 October 2006 - 02:02 AM
Quote:
Original post by jpetrie
I don't think that's particularly useful. Whether or not a language has widespread professional use is pretty much irrelevent, in almost all cases, as a basis for selection by a beginner. Furthermore, categories like "run time efficiency" are misleading and equally useless, because the language isn't the entire deciding factor there. And so on.
Why do you think I put this between two bold disclaimers "Note: This table is a mock example for illustrations only."? [rolleyes]
I simply used these criteria as an example, because they often come up in these discussions. Any "Definite Guide" should mention them and at least explain why they are "irrelevent". Or even better, show the rating anyway.
And even if such criteria can never be perfect, they are far preferable to random rants and discussions without any structure. The posted link is a nice example:
Quote:
Original post by crowleyhammer
http://www.gpwiki.org/index.php/Picking_a_Language
For my taste, it's still a bit long and will probably scare more beginners away than it educates. On the other hand there is still so much information missing.
That's why I think a table and expandable explanations might be a good alternative.
#18 Members - Reputation: 535
Posted 23 October 2006 - 02:44 AM
Quote:
Original post by jpetrie
<snip>
It's pretty much impossible to come up with a simple, general metric like that that actually has utility, because the statements it makes are so broad and vague and hide so many implications.
<snip>
The problem, though, is that there are as many (good) reasons to pick a particular language as there are languages themselves; and you have to remember that the complete neophyte has different needs for a language -- typically, he needs a language that will help teach him the concepts involved in programming without bogging him down in language-specific idiosyncracies (which is why, for example, the "professional use" portion of the previously suggested metric is mostly pointless).
It might be impossible to come up with objective criteria to evaluate languages, but it should be possible to come up with something that is useful for beginners. One such effort is snk_kid's blog Self taught beginner (game) programmers are misguided, let me shed some light...
When I started, I was completely clueless and like so many people I began with C++. I can't even remember why exactly, but it probably had something to do with the fact that everyone else seems to do it for gamedev. Completely clueless means here I didn't even know what a compiler is, what libraries are and didn't understood that most concepts are not tied to a language. Like a lot of beginners I didn't realize that what is learned in one specific language carries over to other languages and that that is the most important part. I also thought that all the complexity of C++ was proportional to it's power and expresiveness, and all the hard work grokking it would pay off.
A metric for the usefulness of a language should always be in light of a specific goal, for example learning how to program with the intention of making games. One thing I don't see so much is some higher perspective to all this (like snk_kid's blog) targeted at the beginner. For example, to understand something about the differences between languages it would help to explain the following concepts as well, on a very basic level:
- compiled and interpreted languages
- type system
- scalability, complexity
- programming styles: procedural, object-oriented and functional
- libraries
- importance of programming concepts vis-a-vis mastery of syntax
- when performance does and does not matter
- productivity
A discussion / article which manages to give a survey of some languages in the light of these points should be informative for beginners. I think a guide to language selection, if aimed at the beginner, should also explain some of the criteria used (and why they are used) in a general way.
#19 Moderators - Reputation: 2286
Posted 23 October 2006 - 02:56 AM
Quote:
Why do you think I put this between two bold disclaimers "Note: This table is a mock example for illustrations only."?
I'm well aware you included the disclaimer. It was precisely in response to that disclaimer that I said, "It's pretty much impossible to come up with a simple, general metric like that that actually has utility, because the statements it makes are so broad and vague and hide so many implications."
A chart or table with a number of stars or some other kind of rating next to general categories is not beneficial because it ignores the specifics, which are the key to selecting a language for most purposes. And if you include expandable detailed descriptions as to what each general category means, and when the rating given to that general category applies, you destroy the usefulness of the rating entirely for all situations where it doesn't apply, and it just makes the chart misleading.
Quote:
One such effort is snk_kid's blog Self taught beginner (game) programmers are misguided, let me shed some light...
That's a very good read.
#20 Members - Reputation: 1008
Posted 23 October 2006 - 03:36 AM
This invalidates many of the criteria usually considered. For example, *any* reasonable language is more than perfromant enough to learn with. You don't need efficiency for guess the number or tic-tac-toe [smile].
Also, the existence of great game libraries is not such a big deal. You don't need to have access to professional game engines or networking libraries from your starter language. Having some way to display simple graphics would probably be nice though. Then again almost every language has some way to do this.
I think this misconception contributes to the large number of beginners who head down the long, winding path of learning C++. Which I feel is a mistake. I would alos guess that a good majority of game developers started out with somthing simpler than C++ like some form of BASIC.
My two cents.






