Evaluating Programming Languages

So, if you ever get into an argument about programming languages, what should you say?

Criteria for Evaluation

Reasonable people know that all languages have their pros and cons. But why are some things pros and other things cons?

Technical Criteria

Let’s see.... Is the language:

Also see Wikipedia’s Programming Language Comparison article.

Non-Technical Criteria

Good and successful are not the same! Success comes from:

Exercise: What else can you think of that makes people want to use a particular language?

Popularity

There are countless numbers of ways to measure popularity! You really can’t make popularity statements without stating your measure. Then people will argue whether your measure is even valid.... Nevertheless, it’s fun to look at this stuff from time to time.

RedMonk has a language ranking scheme that combines pull requests on GitHub and questions on StackOverflow. (One could argue that this measures how confusing a language is too...maybe all those StackOverflow questions are all about wtfs.) Here is the ranking from June 2017:

redmonk-2017-06.png

RedMonk gives these rankings:

   1 JavaScript
   2 Java
   3 Python
   4 PHP
   5 C#
   6 C++
   7 CSS
   8 Ruby
   9 C
  10 Objective-C
  11 Swift
  12 Shell
  12 Scala
  14 R
  15 Go
  15 Perl
  17 TypeScript
  18 PowerShell
  19 Haskell
  20 CoffeeScript
  20 Lua
  20 Matlab

Another ranking system, by Tiobe, ends up with a radically different top 20. They say: “The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings.”

Here is TIOBE’s top-20. Pretty different than RedMonk’s, right?

   1 Java
   2 C
   3 C++
   4 Python
   5 C#
   6 VB.NET
   7 JavaScript
   8 PHP
   9 Perl
  10 Assembly Language
  11 Ruby
  12 Swift
  13 Delphi/Object Pascal
  14 R
  15 Go
  16 Visual Basic
  17 MATLAB
  18 Objective C
  19 Scratch
  20 PL/SQL

But what makes a language popular? MPJ tells us:

Understanding Evaluation Tradeoffs

You can’t have everything, it seems:

Exercise: Think up some other tradeoffs.