notes-computer-programming-programmingLanguageDesign-popularity-hackerNews131010

analysis of

https://news.ycombinator.com/item?id=6527104

as of mid-day, 131010

http://arcane-waters-4617.herokuapp.com/

source: https://github.com/bshanks/lang-rank (forked off of https://github.com/thomseddon/lang-rank )

summary:

" The resulting lists are quite similar but not identical, so i've analyzed them to find sets of languages that always or almost always appear at the top. I also made the corresponding 'most disliked' lists to find the most disliked languages.

On every 'most liked' list out of the above with some sort of control for wellknown-ness[1], the two most liked languages are C and Python. On every corresponding 'most disliked' list, the most disliked five languages are coldfusion, cobol, visual basic, actionscript, php.

Looking at various lists, the next most after C and Python liked usually tend to be lisp, scheme, lua, haskell. Then clojure, rust, erlang, go. Then sql. Then assembly, C#. Then ocaml, F#.

And after {coldfusion, cobol, visual basic, actionscript, php}, the next most disliked usually tend to be groovy or java.

In other words, the partial ordering seems to be approximately[2]:

  {c, python} >
  {lisp, scheme, lua, haskell} >~ {clojure} >~ {rust, erlang, go} >~ {sql} >~ {assembly, C#} >~ {ocaml, F#}
    > ... >~
  {groovy, java} > 
  {coldfusion, cobol, visual basic, actionscript, php}

It's interesting to contrast this 'most liked (controlling for wellknown)' ordering with the most (like+dislike)d counts, whose top 9 items are javascript, python, java, php, c, ruby, c++, sql, c#:

[1] by which i mean, the six lists (like/dislike), ( (likeDirichlet/(likeDirichlet+dislikeDirichlet)), lower bound of confidence interval at 95% level ), (like/dislike)*log(like) ), ( (like/(like+dislike))*log(like) ), and ( (likeDirichlet/(likeDirichlet+dislikeDirichlet))*log(likeDirichlet).

[2] where >~ means a relation that holds for many of the lists under consideration, and > means a relation that holds for all of them. " -- https://news.ycombinator.com/item?id=6530766 (a comment which i wrote)


analysis intermediate results:

over just:

Most (dislike/like)d

Most ( (dislikeDirichlet/(likeDirichlet+dislikeDirichlet)), where xDirichlet = x plus min_{over all languages}((like+dislike)/2) )d

Most ( lower bound of confidence interval at 95% level )d :

worst 2: coldfusion

worst 3:

worst 4:

coldfusion, cobol, visual basic, actionscript

worst 5:

worst 7:

coldfusion, cobol, visual basic, actionscript, php, groovy

worst 8:

coldfusion, cobol, visual basic, actionscript, php, groovy, java

worst 9:

worst 10:

worst 12:

worst 14:

coldfusion, cobol, visual basic, actionscript, php, groovy, java, fortran, rexx, tcl, perl, delphi, c++

worst 15:

over Most (dislike/like)d

Most ( (dislikeDirichlet/(likeDirichlet+dislikeDirichlet)), where xDirichlet = x plus min_{over all languages}((like+dislike)/2) )d

Most ( lower bound of confidence interval at 95% level )d

Most ( (dislike/like)*log(dislike) )d

Most ( (dislike/(like+dislike))*log(dislike) )d

Most ( (dislikeDirichlet/(likeDirichlet+dislikeDirichlet))*log(dislikeDirichlet), where xDirichlet = x plus min_{over all languages}((like+dislike)/2) )d

worst 15:

worst 15:

... didn't do analysis from 14 to 10.. ...

worst 9:

cobol, coldfusion , visual basic , actionscript , php, java, groovy

worst 8:

cobol, coldfusion , visual basic , actionscript , php, java

worst 5:

worst 3:

coldfusion , visual basic

over just Most (like/dislike)d

Most ( (likeDirichlet/(likeDirichlet+dislikeDirichlet)), where xDirichlet = x plus min_{over all languages}((like+dislike)/2) )d

Most ( lower bound of confidence interval at 95% level )d

:

c, python, lua, scheme, lisp, haskell, rust, clojure, erlang, go, sql, ocaml, assembly, f#, c#

in all top-14:

c, python, lua, scheme, lisp, haskell, rust, clojure, erlang, go, sql, ocaml, assembly

in all top-12:

c, python, lua, scheme, lisp, haskell, rust, clojure, erlang, go, sql,

c, python, lua, scheme, lisp, haskell, rust, clojure, erlang, go,

in all top-9:

c, python, lua, scheme, lisp, haskell, clojure, rust

in all top-8:

c, python, lua, scheme, lisp, haskell, clojure

in all top-6:

in all top-5:

in all top-4:

in all top-2:

over Most (like/dislike)d

Most ( (likeDirichlet/(likeDirichlet+dislikeDirichlet)), where xDirichlet = x plus min_{over all languages}((like+dislike)/2) )d

Most ( lower bound of confidence interval at 95% level )d

Most ( (like/dislike)*log(like) )d

Most ( (like/(like+dislike))*log(like) )d

Most ( (likeDirichlet/(likeDirichlet+dislikeDirichlet))*log(likeDirichlet), where xDirichlet = x plus min_{over all languages}((like+dislike)/2) )d :

in all top-15:

c, python, lua, scheme, lisp, haskell, rust, clojure, erlang, go, sql, assembly, c#

in all top-13:

c, python, lua, scheme, lisp, haskell, rust, clojure, erlang, go, sql,

in all top-11:

c, python, lua, scheme, lisp, haskell, rust, clojure, go,

in all top-9:

c, python, lua, scheme, lisp, haskell, clojure,

in all top-7:

c, python, lua, scheme, lisp, haskell,

in all top-6:

c, python, scheme, lisp, haskell,

in all top-5:

c, python, lisp,

in all top-3:

c, python

in all top-2:

---

other insightful comments on that poll:

"

upvote

nostrademons 7 hours ago

link

This poll seems to give considerable credence to Stroustrop's Law: "There are two kinds of programming languages: The ones nobody likes, and the ones nobody uses." Popular industrial languages like C++, Java, ColdFusion?, PHP, and Cobol rank horribly, while niche languages like Lisp, Ocaml, Haskell, and Erlang or emerging stars like Go, Clojure, and Scala rank highly. Even Objective C, which was a cult favorite before Apple made it popular, now has more dislikes than likes.

My pet theory on why this is is that when a language becomes popular, people have to use it against their will. Everybody who uses Haskell likes it, because there is basically no reason to use it if you don't like it. Not everybody who uses C++ or Objective C likes it, because there are many reasons to use them (eg. getting paid) that don't involve liking them.

There are a couple of exceptions: Python and C consistently rate highly despite being widely used, and Rexx and Groovy consistently rate low despite being virtually unknown. The latter might just be bad languages and the former really good languages; actually, this poll seems to be pretty good evidence that the old combination of Python + C for apps is a pretty solid choice.

reply " -- https://news.ycombinator.com/x?fnid=o9jmxBV3WD0wFRTgJfuwlq

---