Popularity vs Productivity vs Performance

October 1st, 2013



What to choose

 Screen Shot 2013-09-05 at 9.52.45 PM

 Screen Shot 2013-09-05 at 9.52.45 PM

A more popular car will have better servicing as parts and skills will be common. A fast car is compelling but sometimes speed is easily sacrificed for comfort.

The question of language efficiency verses productivity has been nagging me. The nagging question includes  what  languages, frameworks and packages are best for collecting data, analyzing data and exposing the data in a rich UI via a web browser.

The question goes well beyond just languages. For web interfaces javascript is the clear winner and the question is more what frameworks to use such as ember.js, backbone.js, angular.js, knockout.js etc and whether to use D3 or go with something like highcharts. But this posting just goes into languages themselves.

It is a huge decision to make at the beginning of a project as to which language to use and why.

Screen Shot 2013-09-05 at 9.52.45 PM


 Screen Shot 2013-09-05 at 9.52.45 PM

 Screen Shot 2013-09-05 at 9.52.45 PM

Productivity is probably the most important factor when choosing a language.  As the founder of Slideshare, Jonathan Boutelle, said  when asked if he regretted using Ruby instead of  Java inhis response was that the question was moot, that he wouldn’t even be there talking if he had use Java. Sure Java would have scaled better and Ruby had concurrency issues but  Slideshare would not have succeeded, at least not  as fast,  or possibly not even existed had they used Java.

Here is an interesting graphic on speed of the programs in various languages

From Dion Hinchcliffe  

Now the above graphic might be hard to read (wish it was larger) but what it is indicating is that Python is  roughly 10x times slower in execution time to than the equivalent programs in Java. On the other hand the expected productivity gain for a programmer is 5-10x faster in Python than Java. Now on the surface my reaction is “OK, it’s faster to program in Python, ok, but Java is 10x faster so it’s clearly the choice!”, but if I put the numbers into real life I’m like OMG – imagine a Python program that takes 1 day to write, now that same program would take 5-10 days in Java!? Thats a huge deal. Hands down, I’m going to program in Python (or something other than Java).  I can deal with some runtime performance issues.

Should a company program in Java or Python? What if Python would take a year to bring to market? What if the Java verisontook 5-10 years ?!

Here is another graphic on productivity from the book “From Java to Ruby

The data is base on a study of productivity in C, Java, Perl, Python: http://page.mi.fu-berlin.de/prechelt/Biblio//jccpprt_computer2000.pdf

As far as productivity comparisons, you may have many issues with the above to graphics, but  I think the following two images of Python vs Java explain it nicely:



Java equivalent



For a down and out dirty view of Java sprawl that further exacerbates productivity check out:


(as a rebuttal try pursing hello world in gnu packaging : http://ftp.gnu.org/gnu/hello/hello-2.6.tar.gz )

Language Expressiveness

 Screen Shot 2013-09-05 at 9.52.45 PM

Fascinating article about how languages are becoming more expressive


Screen Shot 2013-07-23 at 8.04.41 PM

Functional vs Object Programming

 Screen Shot 2013-09-05 at 9.52.45 PM

Related is  a discussion of functional programming verses object oriented programming

  Screen Shot 2013-09-05 at 9.52.45 PM


 Screen Shot 2013-09-05 at 9.52.45 PM

Screen Shot 2013-09-05 at 9.52.45 PM

Python rockets to ascension and Java becomes lack luster



Screen Shot 2013-07-26 at 8.38.36 AM


What are the most influential languages

Screen Shot 2013-09-05 at 9.52.45 PM

Another perspective on languages , the most influential languages:

Screen Shot 2013-07-16 at 9.52.35 AM

 Screen Shot 2013-09-05 at 9.52.45 PM

Languages mentioned in job postings as % and % increase

 Screen Shot 2013-09-05 at 9.52.45 PM


 Screen Shot 2013-09-05 at 9.52.45 PM

Language popularity based on book sales

Screen Shot 2013-09-05 at 9.52.45 PM

The issues of showing total growth  verses % growth lend itself well to heat map representation. Here is a heat map from O’Reilly:

(Interesting to all the Oracle folks: PL/SQL shows a 51% growth 2007-2008.

Here is data from O’Reilly on growth over time, showing Python and C# growing steadily:



Tiobe Index

Screen Shot 2013-09-05 at 9.52.45 PM


Google language trends

Screen Shot 2013-09-05 at 9.52.45 PM

Here is google trends normalized by C programming (with out normalization all trends are down because google trends show hits normalized by all traffic and as general traffic increases verses computer geek searches general computer geek searches trend downwards)

Interesting how Ruby seems to be trending down (as normalized against C  searches)


Other links on popularity

Screen Shot 2013-09-05 at 9.52.45 PM


Screen Shot 2013-09-05 at 9.52.45 PM

Screen Shot 2013-09-05 at 9.52.45 PM

Here is a fascinating site with empirical data on speed of languages http://shootout.alioth.debian.org/

Current speed might be a bit misleading as popularity will impact the efforts put into the issues of a language and a language that is popular though maybe less efficient will see improvements, for example it’s interesting to see the improvements in Java over the years, and now to see the improvements in Ruby.  Though Ruby is slower than  Scala and Scala’s productivity may even be better than Ruby, Scala doesn’t, yet, have the market momentum, thus the assurances that it is a language to invest in now.

Also if speed of the language is an issue the solution is not to throw the baby out with the bathwater, ie throw out the productive programming language altogether and go for a fast one such as C or JAVA but to find the areas of slowness in the productive framework and replace those with a fast function in another language, ie polyglot programming.

 Screen Shot 2013-09-05 at 9.52.45 PM

Other stuff

 Screen Shot 2013-09-05 at 9.52.45 PM

 Screen Shot 2013-09-05 at 9.52.45 PM

Just for Fun

Here  is how I started my morning, a fun video on Python, that catalyzed the above discussion: 




  1. Trackbacks


  2. khailey
  3. Thom
    | #2

    The python to java comparison is ridiculous. You could accomplish the same thing in java using either an overloaded method or by simply casting up to Object (instead of making a pointless interface and creating an array of said interfaces). To write the sum function in Java in a non-dumb way:

    public int sum (int a, int b) { return a+b; }

    public String sum (String a, String b) { return a+b; }

    public static void main (String[] args) {
    System.out.print(sum(1, 2));
    System.out.print(sum(“spam”, “eggs”));

nine − = 7