Row of medals

Programming language rankings: Which ones matter?

It seems that everybody wants to know what the most popular programming languages are. This is almost an obsession in the developer community. It's also a source of constant debate because there are so many conflicting indices that rank them, each based on its own, debatable methodology.

The problem is that some people in the community are looking at this question the wrong way. The issue is not which ranking is the best but, rather, which ranking is the best for your particular question or situation.

Here's my review of several common language ranking methods and where I think each one is most applicable.

TIOBE

Frequency: Monthly.

Methodology: Based on the number of queries in popular search engines such as Google, Bing, Yahoo, Wikipedia, Amazon, YouTube, and Baidu using the +“<language> programming” search term. 

Rankings:

  1. Java
  2. C
  3. C++
  4. C#
  5. Python
  6. JavaScript
  7. PHP
  8. Visual Basic .NET
  9. Perl
  10. Delphi
  11. Ruby
  12. Swift
  13. Objective-C
  14. Matlab
  15. Groovy
  16. Visual Basic
  17. R
  18. Go

September 2016

Special note: For years now, the Go language has been wrongly indexed because TIOBE restricted their search term with the prefix “Google,” i.e., they used the search term “Google Go programming.” Supposedly, TIOBE wanted to avoid false positives with the unrestricted search term. I complained about this in my article, “The Little Language That Could.”

In August of 2016, TIOBE corrected the situation, according to this footnote:

The restriction "Google" has been removed from the search queries for the programming language Go. Ilja Heilager sorted out that without the search term "Google" the resulting Go hits are still referring to the Go language. After having removed this restriction Go jumped from position #55 to #20. Thanks Ilja!

Why look at TIOBE? Presumably, measuring the number of searches for each language correlates with the level of interest. Many people, however, believe that TIOBE under-ranks less popular languages.

Redmonk

Frequency: Semi-annually.

Methodology: Based on raw lines of code in GitHub repositories and StackOverflow language tags.

Rankings:

  1. JavaScript
  2. Java
  3. PHP
  4. Python
  5. C#
  6. C++
  7. Ruby
  8. C
  9. Objective-C
  10. R
  11. Perl
  12. Scala
  13. Go
  14. Haskell
  15. Swift
  16. Matlab
  17. Visual Basic
  18. Clojure
  19. Groovy

June 2016

Why look at Redmonk? It's drawing together GitHub volume information with the level of interest on StackOverflow for each language to create a reliable ranking based on interest in the open source community and the number of developers solving problems while working in the language. It should be noted, however, that since GitHub only represents open source projects, proprietary projects are overlooked in their dimension of this index.

Octoverse.GitHub

Frequency: Annually.

Methodology: Based on the number of opened GitHub pull requests in the past 12 months. 

Rankings (incl. percentage change from previous period):

  1. JavaScript (+97%)
  2. Java (+63%)
  3. Python (+54%)
  4. Ruby (+66%)
  5. PHP (+43%)
  6. C++ (+43%)
  7. C# (+88%)
  8. C (+47%)
  9. Go (+93%)
  10. Objective-C (+37%)
  11. Scala (+54%)
  12. Swift (+262%)
  13. TypeScript (+250%)

2016

Why look at Octoverse? It's a way to gauge the activity level on GitHub, which should reflect the level of open source usage in each language. It ignores commercial and proprietary usage, however.

IEEE Spectrum

Frequency: Annually.

Methodology: The rankings are synthesized from 10 sources (Google search of “X programming”; Google Trends; Twitter; GitHub; StackOverflow; Reddit; Hacker News; CareerBuilder; Dice; IEEE Xplore Digital Library).  

Rankings:

  1. C
  2. Java
  3. Python
  4. C++
  5. R
  6. C#
  7. PHP
  8. JavaScript
  9. Ruby
  10. Go
  11. Swift
  12. Matlab
  13. Scala
  14. Perl
  15. Visual Basic
  16. Objective-C
  17. Lua
  18. Haskell
  19. Rust
  20. Fortran
  21. Delphi
  22. D
  23. Lisp
  24. Julia
  25. Erlang
  26. Prolog
  27. Clojure

2016

Why look at IEEE Spectrum? It's a valiant effort to aggregate many different kinds of statistical data with the hope of generating the most reliable ranking. It also gives you the most personalized ranking. The interactive interface allows readers to filter by search trends, job trends, or open source community trends. You can even modify the weighting of each dimension, enabling an extremely personalized ranking.

PYPL

Frequency: Monthly.

Methodology: Based on Google Trends for the “<language> tutorial” search term. 

Rankings:

  1. Java
  2. Python
  3. PHP
  4. C#
  5. JavaScript
  6. C++
  7. C
  8. Objective-C
  9. R
  10. Swift
  11. Matlab
  12. Ruby
  13. VBA
  14. Visual Basic
  15. Scala
  16. Perl
  17. Lua
  18. Delphi
  19. Go
  20. Haskell
  21. Rust

September 2016

Special note: For Objective-C, PYPL used the search term “iOS tutorial” instead of “Objective-C tutorial.” This is why Objective-C's index is anomalous and incorrect. How can we be sure that people searching for “iOS tutorial” are not actually interested in iOS or Swift instead of Objective-C?

Why look at PYPL? it's measuring the level of interest from people wanting to learn these languages. This could suggest growth trends. PYPL also allows you to filter the data according to different countries (US, India, Germany, UK, France).

Eng Language Index

Methodology: An extension of PYPL to include missing languages and correct for Objective-C. Found on my Medium blog. (Note: PYPL have since corrected their list for some missing languages, but their data point for Go language appears to be anomalous and Objective-C is still incorrect. I believe PYPL are using the search term “golang tutorial” for Go. This is why its ranking is anomalous. Golang is not the proper name for the Go language.)

Rankings:

  1. Java
  2. Python
  3. PHP
  4. C#
  5. C++
  6. C
  7. JavaScript
  8. Go
  9. Matlab
  10. R
  11. Swift
  12. Ruby
  13. Visual Basic
  14. D
  15. Perl
  16. Objective-C
  17. Scala
  18. Lua
  19. Delphi
  20. Groovy
  21. Haskell
  22. Rust
  23. Clojure
  24. Julia
  25. TypeScript
  26. Erlang

January 2016

Why look at Eng Language Index? To correct some deficiencies in PYPL and allow previously overlooked languages to enter the index.

CodeEval

Frequency: Annually.

Methodology: Based on 1,200,000+ CodeEval challenge submissions for the year.

Rankings:

  1. Python
  2. Java
  3. C++
  4. C#
  5. C
  6. JavaScript
  7. Ruby
  8. PHP
  9. Haskell
  10. Go
  11. Scala
  12. Perl
  13. Objective-C
  14. R
  15. Visual Basic .NET
  16. Lua
  17. Clojure
  18. Tcl

2015

Why look at CodeEval: It reflects language preferences among solution submitters, so it's another popularity indicator, but for a very niche group.

HackerRank

Methodology: Languages employers are proactively seeking based on a study of over 3,000 coding interview challenges.

Rankings:

  1. Java
  2. Python
  3. C
  4. C++
  5. Ruby
  6. C#
  7. JavaScript
  8. PHP
  9. Perl
  10. Swift
  11. Go
  12. Scala
  13. Objective-C

2016

Why look at HackerRank? it's an indicator of what language skills employers are seeking. However, it seems to be an indirect way of answering the question that Indeed.com statistics already answer.

StackOverflow Developer Survey

Frequency: Annually.

Methodology: 56,033 coders in 173 countries surveyed for 2016.

Rankings:

  1. JavaScript
  2. SQL (eliminated because it's not a conventional PL)
  3. Java
  4. C#
  5. PHP
  6. Python
  7. C++
  8. C
  9. Ruby
  10. Objective-C

2016

Why look at the Stack Overflow survey? get the language preferences globally right from the horses' mouths! But be wary of selection bias in the survey.

Trendy Skills

Frequency: Irregular.

Methodology: Languages in demand from “major job advertisement websites (e.g., Monster.com and similar)” including countries such as the USA, UK, Germany, Sweden, Spain, Ireland, Netherlands, Austria, Czech Republic, Belgium, Finland, India, and Greece. 

Rankings:

  1. Java
  2. JavaScript
  3. C#
  4. PHP
  5. C++
  6. Python
  7. C

August 2016

Why look at Trendy Skills? Job openings may indicate what languages are most in demand. It covers several countries (particularly in Europe), which may give a more realistic, worldwide outlook.

Coding Dojo

Methodology: Languages ranked by the number of programming jobs at Indeed.com (The largest job posting aggregator in the US).

Rankings:

  1. SQL (not a conventional programming language)
  2. Java
  3. JavaScript
  4. C#
  5. Python
  6. C++
  7. PHP
  8. iOS (Swift + Objective-C)
  9. Ruby on Rails

2016

Why look at Coding Dojo? This is perhaps the most important language ranking for job seekers.  You should be adept with at least one of the languages on this list if you want to find a software engineering position with relative ease. The rankings are fairly similar to Trendy Skills, with the exception of C, which should also be a perfectly fine foundation for job searching.

New Relic

Methodology: Languages mentioned in the job listings at Indeed.com.

Rankings:

  1. Java
  2. C#
  3. C++
  4. JavaScript
  5. PHP
  6. Python
  7. Ruby
  8. C
  9. Objective-C

January-May 2016

Why look at New Relic? Similar to Coding Dojo's ranking, though it's limited to a shorter time period.

My custom Indeed.com language trends search for major US tech cities

For what it's worth, I conducted my own job search at Indeed.com for key languages in the following cities: Austin, TX; Atlanta, GA; Boston, MA; Chicago, Il; Los Angeles, CA; New York, NY; San Diego, CA; San Francisco Bay Area, CA; Seattle, WA. Here is the list:

  1. Java
  2. Python
  3. JavaScript
  4. C++
  5. C#
  6. Ruby
  7. PHP
  8. Perl
  9. Objective-C
  10. C

September 2016

Why look at my job stats? I collected the number of job postings for key languages from all the major technological hubs across the United States. This should give a very good idea of what languages are in strong demand among employers right now.

Final review of language rankings

Each of these language ranking methods has its pros and cons. TIOBE often misrepresents languages that figure prominently in other indices. For example, Scala, Haskell, Clojure, and Erlang. Until very recently, Go was very poorly represented. 

Job sites misrepresent languages because developers often are not the ones posting the job, so inaccuracies can make their way into job posts. While it's hard to argue that Java and JavaScript aren't in great demand, employment isn't the only, determinant of what is “popular.”

Most developers do not hold a mercantilist attitude when it comes to writing software. They're interested in languages that help make their jobs easier, that can deliver results faster, that make software safer and more reliable for the world of users.

Employers, on the other hand, are more focused on how hirable staff is, cost to change development infrastructure, preserving investments, etc. Whenever possible, they will stick to what works and what is widely used, rather than switching to new technology that promises sunshine and rainbows. They are inherently risk-averse.

However, employers are also subject to fad and fashion. The current JavaScript/Node trend is a perfect example. Developer opinions and feelings do influence employers and provide a better indicator of what languages may rise to prominence in the coming years. This is also reflected in open source projects where developers usually work on their own time. Thus, GitHub is an important metric.

Moreover, job stats for lesser languages are so low that they are essentially statistical noise. They provide no insight into language trends.

A general aggregation of the rankings may offer a more reliable list of popular languages. I weighted the top 9 languages according to their relative positions using every available ranking. All rankings are placed on an equal footing. Here are the results:

  1. Java
  2. Python
  3. JavaScript
  4. C#
  5. C++
  6. PHP
  7. C
  8. Ruby
  9. Objective-C
  10. R
  11. Perl
  12. Go

Ultimately, language popularity rankings are useless unless they use a measurement that is relevant to your needs. Give me your thoughts on the rankings in the comments below.

Note: I subjectively culled this lists of languages, removing things like assembly language, PL/SQL, CSS, Shell, Arduino, Cuda, Processing, VBA, Bash, Node.js, and AngularJS.

Topics: App Dev