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.
8 replies to this topic
#1
Posted 04 April 2011 - 02:15 AM
@tormaroe, creator of languageheap.com.
|
|
|
#2
Posted 04 April 2011 - 03:36 AM
A couple that come to mind to me, and I would consider important, are:
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.
- 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)
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
Posted 04 April 2011 - 03:52 AM
Some good points, thanks! And esoteric languages added to my task list with top priority ;)
Could you maybe elaborate a bit on optimizability?
Could you maybe elaborate a bit on optimizability?
@tormaroe, creator of languageheap.com.
#4
Posted 04 April 2011 - 01:07 PM
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... :)
@tormaroe, creator of languageheap.com.
#5
Posted 06 April 2011 - 04:34 PM
I think a good one would be assembly instructions per line of code (although this would normally exclude interpreted languages).
#6
Posted 06 April 2011 - 09:39 PM
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.
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.
@tormaroe, creator of languageheap.com.
#7
Posted 07 April 2011 - 04:26 AM
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
Posted 07 April 2011 - 09:00 AM
rocketboy9000 said:
Anyway, this metric doesn't make sense until you compile them all into the same assembly language, for the exact same hardware.
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 :)
@tormaroe, creator of languageheap.com.
#9
Posted 07 April 2011 - 11:58 AM
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


Sign In
Create Account


Back to top









