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.