An article was recently published that looks at evaluating First Programming Languages (FPL) the language to use for an introductory course of programming.
An existing issue is that formally assessing a programming language isn't really defined, with a lot of evidence being anecdotal. The proposed evaluation framework looks at technical and environmental feature sets. "The technical feature set covers the language theoretical aspects, whereas, the environmental feature set helps evaluating the external factors." These feature sets are covered in table 2 of the article (link to PDF) and consist of the following:
The article explains each of these points in details, and gives each of the languages being evaluated a rating based on this explanation, followed by a detailed explanation of how the scores of each rating can be compared this includes allowing an evaluator to weigh certain criteria they deem important against the others. As this is for choosing a language to teach someone to program with, different places will have different reasons and goals, so would want to weight things differently.
As the default weight settings do not conform to the original popularity index of the languages, so there should be a different weighting criterion. However, it is very hard to come up with a generic and correct weighting criterion. Therefore, the scoring function should be customizable and the user should be able to tune the weight of each feature based on her preferences. As an example, consider the fact that Ada holds 3rd position in overall scoring, but is not being considered among highly used FPLs as of now.
I read the criteria and immediately concluded they wanted Java to come out top, probably followed by Python or C#. Turned out that that's what happened. I think the issue is that any such list is going to be driven at least as much by the prejudices (in the academic sense, not a perjorative sense) of those who draw it up as anything. In this case they "hid" it by selecting criteria that would demand it come out as Java, Python or C#. The killer is "Demand in industry". Since when was "demand in industry" a criterium for a first language? Surely ease of use would trump it, but then we might end up with the likes of Pascal or (horrors!) BASIC entering the mix.
Not that I've a strong opinion on an alternative -- my first language was Sinclair BASIC, then I did some QBasic, then Pascal, bits of C++ (back before C++98 was fully accepted, so I was using an old Borland compiler from the mid 90s), then Fortran 9x. These days I program in a mix of Fortran 03/08 and, when the ungainly OO syntax becomes too much to bear I swap to C++. At work I'm exclusively in C++11. I wouldn't recommend *any* of these as a beginner's language with the possible exception of Pascal (or, if very tightly controlled, Fortran 08 and C++11 and above, but the danger of tangling yourself with either of them and producing horrific code is pretty strong).
If you read the paper they also point out that Java is a popular teaching language anyway - so it would be a little weird if it wasn't high as it would mean that their framework was really off base. They also stress that they have created a framework and not objectively ranked languages - you can add different weights to different criteria if you like (and choose different languages to evaluate) which will change any rankings.