Jump to content

Rating programming languages

- - - - -

  • Please log in to reply
8 replies to this topic

#1
tormaroe

tormaroe

    Newbie

  • Members
  • PipPip
  • 15 posts
I'm looking into various ways of rating programming languages. One obvious criteria is popularity, and TIOBE Programming Community Index is a great source for that.

What other criterias could you use, and how would you start "calculating" a language's rank in those criterias? Do you know of any sources to this kind of information?

So I'm not looking for language categories, but areas where every programming language could be given a value on a scale from 1 to 10 (or something like that).

Some criteria that come to my mind are: Maturity, Expressive Power, Usability/Ease of Use, and Quality of Documentation.

#2
ZekeDragon

ZekeDragon

    Writes binary right handed and hex left handed

  • Moderators
  • 2,103 posts
A couple that come to mind to me, and I would consider important, are:
  • Availability of Bindings/Libraries
  • Portability
  • Usefulness of Standard Libraries
  • Optimizability (Notice I didn't say how well the compilers optimized, but how easy it is to optimize the language)
I suppose that's what I've got now. I don't think it would be very easy to get ratings like this for each language, since the rating is always ultimately subjective.

As a side note, your website completely excludes most Esoteric Programming Languages such as brainf*ck and LOLCODE, and Stack-based Concatenative Languages such as Joy or Factor.
Wow I changed my sig!

#3
tormaroe

tormaroe

    Newbie

  • Members
  • PipPip
  • 15 posts
Some good points, thanks! And esoteric languages added to my task list with top priority ;)

Could you maybe elaborate a bit on optimizability?

#4
tormaroe

tormaroe

    Newbie

  • Members
  • PipPip
  • 15 posts

ZekeDragon said:

As a side note, your website completely excludes most Esoteric Programming Languages such as brainf*ck and LOLCODE, and Stack-based Concatenative Languages such as Joy or Factor.

Brainf*ck has been added... :)

#5
rocketboy9000

rocketboy9000

    Learning Programmer

  • Members
  • PipPipPip
  • 79 posts
I think a good one would be assembly instructions per line of code (although this would normally exclude interpreted languages).

#6
tormaroe

tormaroe

    Newbie

  • Members
  • PipPip
  • 15 posts
Remember that a language does not define its compiler or interpreter. A language can have many different. And how statements and constructs are turned into assembly instructions can differ based on a lot of things, like settings etc. And you can't always compare two lines of code in two different languages either. Ilduw don't think looking at this kind of thing would be very valuable I'm afraid.

Updated: Also, most compilers today create assembly code for a VM, like bytecode for JVM-languages or IL for .Net. Comparing bytecode and IL is not necessarily straight forward.

Edited by tormaroe, 07 April 2011 - 12:30 AM.


#7
rocketboy9000

rocketboy9000

    Learning Programmer

  • Members
  • PipPipPip
  • 79 posts
Uhh... I consider a bytecode equivalent to an interpreted language. It's not a compiler until it can produce code that runs directly on hardware. JIT compilation is just another kind of interpreter, that is a fast one. Anyway, this metric doesn't make sense until you compile them all into the same assembly language, for the exact same hardware.

#8
tormaroe

tormaroe

    Newbie

  • Members
  • PipPip
  • 15 posts

rocketboy9000 said:

Anyway, this metric doesn't make sense until you compile them all into the same assembly language, for the exact same hardware.
I agree, and that is both a huge cataloging task and really not very interesting or useful (at least in my opinion). How many lines of code it takes to solve a problem, how readable the code is, how flexible the code is - those are all much more important characteristics than a slight difference in the machine code produced ... for most people that is ...

My main point is: You are not talking about language characteristics, but implementation characteristics. So while I for instance talk about Ruby, and would compare that to Python, you would want to look at MRI, YARV, JRuby, Rubinius, IronRuby, MacRuby, and HotRuby separately, all with distinct runtime characteristics, and compare them. Not that that isn't interesting too...., but too much work for me :)

#9
rocketboy9000

rocketboy9000

    Learning Programmer

  • Members
  • PipPipPip
  • 79 posts
Ok then, I have a few other metrics: typical performance, i.e. on reference interpreter/compiler could be measured by trying the same task, something involving a variety of operations. memory management performance could be tested for various garbage collected languages. Loading time could be measured: how long does it take to start running a large application, say 1000 lines? I/O performance could be measured as characters/second.




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users