Are older programming languages like Java and Perl giving way to newer languages like Python and Ruby? Is HTML5/CSS3/JavaScript overtaking Flash and/or native mobile application development? Do Microsoft’s languages still have a large developer following, even as Microsoft promotes other languages as first-class citizens on platforms such as Windows 8 and Azure? Finding the answer to these questions can be harder than you think.

In many cases, of course, the popularity of a given programming language may not matter. Many programmers try to use the best tool for the job, or when in doubt, use what they know best. But sometimes language popularity does matter:

  1. Companies deciding what language to use for greenfield projects. Attracting skilled developers can be difficult, so using languages that developers like and that lots of developers know can be helpful.
  2. Although learning a language for the sheer joy of it is great, many developers want to focus on learning marketable skills. Knowing what employers are looking for is helpful.
  3. Educators may want to avoid focusing on languages with shrinking usage, both to boost the employability of their students and to gain the largest pool of support from other developers.

There’s no definitive source of information on programming language usage and popularity, but looking at a cross-section of data sources can offer some ideas about overall trends, in terms of popularity with developers and popularity with employers.

1. StackExchange and Github

In 2010, Drew Conway and John Myles White had the idea of ranking programming languages by the number of projects in Github and the number of questions in StackOverflow and found that the results of the two sources were highly correlated. The developer-centric IT analyst firm RedMonk latched on to the idea and has continued collecting data from Github and StackOverflow to track language popularity. The most recent results, from February, are shown above.

Pros: This method draws on two different data sources, and reflects what developers choose to use on their own projects.

Cons: Because Github houses so many personal projects, these results don’t necessarily reflect what developers are actually being paid to use. Github may also favor newer languages, since many of the older projects using tried-and-true languages such as Java and Perl are still hosted at Sourceforge, Apache and elsewhere. Also, a high number of StackOverflow questions may be more of a reflection of the complexity of a language rather than its popularity. It may also skew toward newer languages that developers may have more questions about. And yes, perhaps RedMonk could have integrated Bitbucket projects into these rankings, as well.

2. Hacker News Survey

In April, a Hacker News user posted a reader poll asking “What’s your favorite programming language?” The results actually map pretty well to the RedMonk findings, though it’s surprising just how far ahead Python was in relation to everything else. Here are the top 20 as of June 4:

  1. Python (3,054)
  2. Ruby (1,723)
  3. JavaScript (1,415)
  4. C (970)
  5. C# (829)
  6. PHP (666)
  7. Java (551)
  8. C++ (529)
  9. Haskell (519)
  10. Clojure (459)
  11. CoffeeScript (362)
  12. Objective C (326)
  13. Lisp (322)
  14. Perl (311)
  15. Scala (233)
  16. Scheme (190)
  17. Other (188)
  18. Erlang (162)
  19. Lua (145)
  20. SQL (101)

Lisp, Scheme and Clojure have a combined 971 votes, which together would put Lisp just ahead of C. And combining CoffeeScript with JavaScript would put the two languages together just ahead of Ruby, though still far behind Python.

Pros: The poll explicitly asks about favorite programming languages, making this one of the best sources of information developers' preferences. It’s also a pretty big sample.

Cons: Hacker News may not be representative of developers in general, and the sample wasn’t controlled. And its primary strength is also a weakness: It obviously doesn’t reflect what’s actually being used in production, just favorites.

3. Dice.com Job Listings

The above metrics don’t necessarily reflect real-world usage, though many corporations do use Github and many professionals ask questions on StackOverflow. To get a better reflection of where the paid programming jobs are, looking at job postings may be your best bet. Last year, Dennis B. Moore shared stats he collected from Dice.com on the number of job listings for various tech skills, including programming and markup languages and frameworks. Moore hasn’t posted an update, but here’s a current look at the search terms that Moore used previously, with the percentage change over last year:

  1. Java 17,599 (+8.96%)
  2. XML 10,780 (+11.70%)
  3. JavaScript 10,738 (+11.64%)
  4. HTML 9,587 (-1.53%)
  5. C# 9,293 (+17.04%)
  6. C++ 6,439 (+7.55%)
  7. AJAX 5,142 (+15.81%)
  8. Perl 5,107 (+3.21%)
  9. PHP 3,717 (+23%)
  10. Python 3,456 (+32.87%)
  11. Ruby 2,141 (+39.03%)
  12. HTML5 2,035 (+276.85%)
  13. Flash 1,261 (+95.2%)
  14. Silverlight 865 (-11.91%)
  15. COBOL 656 (-10.75%)
  16. Assembler 209 (-1.42%)
  17. PowerBuilder 126 (-18.71%)
  18. FORTRAN 45 (-33.82%)

PHP has impressive growth, but not as impressive as Python (which is now nearly as popular on Dice.com) and Ruby. Flash had a huge comeback, but HTML5 has surpassed both Flash and Objective C in demand. Legacy languages including COBOL and FORTRAN look like they’re finally starting to be replaced.

Since I’m not sure how Moore made his selections, and he included several keywords that aren’t programming languages, here are the top 18 from the Hacker News poll (minus C, which is hard to search for, and “other”) ranked by Dice.com search results:

  1. SQL (26,221)
  2. Java (17,599)
  3. JavaScript (10,738)
  4. C# (9,293)
  5. C++ (6,439)
  6. Perl (5,107)
  7. PHP (3,717)
  8. Python (3,456)
  9. Ruby (2,141)
  10. Objective C (824)
  11. Scala (151)
  12. Scheme (226)
  13. CoffeeScript (63)
  14. Erlang (48)
  15. Lua (48)
  16. Lisp (27)
  17. Clojure (25)
  18. Haskell (16)

SQL is over-represented here because of listings for system and database administrators. Scheme is also over represented, since many of the references to the word “scheme” don’t actually refer to the language.

Pros: These results are more indicative of what’s actually being used in “the real world” than other metrics.

Cons: As such, it doesn’t reflect programmers' preference. Also, these search results are not direct representation of what’s actually being used. Further, Dice.com may not be reflective of the overall market.

4. Programming Book Sales

One interesting metric that intersects with both personal interest and corporate use is the sale of books on programming languages. As ReadWriteWeb’s Joe Brockmeier reported in April, Mike Hendrickson from O'Reilly posted data from the company’s book sales a few months ago, and the results are intriguing. As with the RedMonk rankings, the O'Reilly rankings break down into distinct tiers. The 11 most popular languages form the top tier, which Hendrickson calls “Large” programming languages:

  1. Java
  2. JavaScript
  3. C#
  4. Objective C
  5. C++
  6. PHP
  7. VBA
  8. Python
  9. SQL
  10. ActionScript

Ruby and Perl fall into the second tier, referred to as “major” languages.

Pros: Developers buy books for both pleasure and work, so these numbers could reflect a sweet spot between business and pleasure.

Cons: May skew against older languages like Perl, about which fewer new books may be published. This ranking also doesn’t factor in other publishers that may sell more books on particular languages.

5. Google Search Queries

TIOBE’s index is based on Google search trends on specific language names, plus the keyword “programming” (ex, “ruby programming,” “java programming”). ReadWriteWeb readers have said what they think of these ratings before (note: Your fellow readers are not impressed at with TIOBE.), so they’re included here only for the sake of completion. The May rankings don’t fit well with any of the data looked at here, with both Python and Ruby dropping in popularity.

Pros: ?

Cons: These results don’t reflect what developers like or use, just what terms people are searching for. Can be skewed by developers searching for more specific information (such as jQuery or Node.js instead of “JavaScript”).

Conclusions

Java is still top dog, and developers don’t seem to completely hate it, though it’s sure not their favorite. C and C++ remain popular, both with developers and employers. Python and C# also provide a good trade-off in terms of popularity with developers and employer demand.

Developers may love Lua and Lisp-y languages, but they don’t appear to have much mainstream use. Scala may be a better bet among functional/multiparadigm languages, at least in terms of employment opportunities.

Meanwhile, JavaScript remains wildly popular both in actual use and developer enthusiasm.