The Definitive Guide to Language Selection

Started by
23 comments, last by stimarco 17 years, 5 months ago
Quote:Original post by Kazgoroth
Quote: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.
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?

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.
Advertisement
Quote:Original post by Kazgoroth
Quote: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.
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?

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.
Another idea: How about making overview table that rates the most important aspects used for language selection each language, like this:
Note: This table is a mock example for illustrations only.                                             C    C++    Java    C#    Python    Delphi    BlitzBasic    DarkBasicEasy 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.
___________________________Buggrit, millennium hand and shrimp!
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.
maybe, just maybe this will help beginners more.

http://www.gpwiki.org/index.php/Picking_a_Language
http://crowleyhammer.blogspot.comMy journey into programming games
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).
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.
___________________________Buggrit, millennium hand and shrimp!
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.
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.
I think the most important thing to get across to beginners is that the language they pick to start with does not have to be (and should not be) the one they use for every project they ever write in their lives.

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.

This topic is closed to new replies.

Advertisement