The Best Programming Language to Learn in 2014: Mid-Year Update

We last looked at the best languages to learn in February 2014. The results were ranked by data obtained from:

  • Jobs Tractor; a company which analyzes job adverts on Twitter
  • Lynda.com; an online video training course provider, and
  • the RedMonk survey which examined the frequency of projects on GitHub and questions on StackOverflow.

The IEEE Spectrum Survey

IEEE Spectrum recently completed a survey which uses no less than ten sources to rank the popularity of programming languages:

  • search results in Google
  • data from Google Trends
  • tweets sent on Twitter
  • GitHub repositories
  • StackOverflow questions
  • Reddit posts
  • Hacker News posts
  • demand for jobs on the Career Builder job site
  • demand for jobs on the Dice job site
  • IEEE Xplore journal articles

Languages were allocated to web, mobile, enterprise and embedded categories. The interactive tool allows you to make your own comparisons and apply custom weightings to the data sources if you don’t agree with IEEE Spectrum’s methodology. In summary:

IEEE Spectrum All Languages Top 20

  1. Java
  2. C
  3. C++
  4. Python
  5. C#
  6. PHP
  7. JavaScript
  8. Ruby
  9. R
  10. MATLAB
  11. Perl
  12. SQL
  13. Assembly
  14. HTML
  15. Visual Basic
  16. Objective-C
  17. Scala
  18. Shell
  19. Arduino
  20. Go
IEEE Spectrum’s 2014 Ranking Graph

Source: IEEE Spectrum’s 2014 Ranking

If you omit ‘Embedded’ languages, the positions stay the same but Assembly and Arduino disappear.

IEEE Spectrum Web Top 10

  1. Java
  2. Python
  3. C#
  4. PHP
  5. JavaScript
  6. Ruby
  7. Perl
  8. HTML
  9. Scala
  10. Go

IEEE Spectrum Mobile Top 10

  1. Java
  2. C
  3. C++
  4. C#
  5. JavaScript
  6. Objective-C
  7. Scala
  8. Delphi
  9. Scheme
  10. ActionScript

The Weird Stuff

There are a few classifications and results I would question…

  • Python is classified as both ‘web’ and ‘enterprise’ although PHP and Ruby are just ‘web’?
  • Yes, HTML isn’t a language but it’s classified as ‘web’ only and somehow comes below SQL, Perl and even Assembly?
  • Is C# mobile development really above JavaScript and Objective-C? And who’s creating phone apps in Scala, Delphi and Scheme?
  • The sources are a little IEEE Xplore and US-centric which could sway the chart.

Is it Wrong?

Overall, the data sources and survey methodologies seem reasonable. But it will be questioned by developers because it can never match our unique reality bubble which is focused on specific technologies.

Perhaps it’s not surprising to find Java topping most charts because it can be used in so many places; application development, server-side web development, Android development and — importantly — education. Many schools, colleges and universities teach Java so resources and questions are littered throughout the web. More recently, Python has gained traction as an introductory language so it will enjoy similar benefits.

Next, we have C and C++ which been around for 45 years in various incarnations. If all C-based projects ceased today, a rich history of the language would remain on the web for many years to come.

C# is slightly unusual given ASP.NET lingers at number 30 in the all-languages chart. That said, it has been in use for more than a decade and is almost as ubiquitous as Java. Many businesses sole output is Microsoft-based software.

As we reach the lower places it becomes more difficult to compare relative positions. Technologies such as HTML and SQL have a wide reach, but may only be mentioned in passing for PHP, JavaScript and Ruby job opportunities and articles.

Is it Useful?

These surveys are interesting but, again, I stress that you should NEVER use them the basis for changing or enforcing your career path. The survey shows a historical snapshot in time; it’s the technologies we have been using. It doesn’t follow they’re the ‘best’ options today or whether they’ll still be used tomorrow.

Developers are in a fortunate position; the demand for skilled workers outstrips supply throughout most of the world. Few professionals went hungry in even the darkest days of the economic depression. You therefore have the luxury of choosing technologies which interest you, whether that’s websites, mobile gaming, statistical analysis or intelligent toaster development.

Concentrate on work you enjoy and it won’t seem difficult to become a great software engineer. Choosing a language for financial gain or because someone else suggested “it’s a good idea” is significantly harder. You’ll resent the effort; it’s soul-destroying and you may never become the well-paid superstar you wanted to be.

That said, never stop learning. There is one fundamental difference between good and mediocre developers: curiosity. A good developer will enthusiastically leap into their sectors of ignorance to learn and adopt new techniques. The IT world moves rapidly and even the highest-paid Java gurus should not expect to constrain their knowledge forever.

In summary, take a look at the chart, nod sagely, moan loudly then get back to the more interesting Fortran, Visual Basic or Cobol project you’re working on!

Have you recently chosen a new language? What influenced your choice? Have you regretted your decision?

Free book: Jump Start HTML5 Basics

Grab a free copy of one our latest ebooks! Packed with hints and tips on HTML5's most powerful new features.

  • http://www.isights.org/ Michael Long

    And then, of course, there’s Swift.

    • joolythomas

      I make $87h while I’m traveling the world. Last week I worked by my laptop in Rome, Monti Carlo and finally Paris…This week I’m back in the USA. All I do are easy tasks from this one cool site.

      Here ­­­­­­­­­is ­­­­­­­­­I ­­­­­started>>>>>>>>>➜➜➜➜➜➜➜

      ➜➜➜➜ W­W­W­.­P­A­Y­R­A­P­.ℭ­om

      —————————————————–

      GO TO THE SITE –>>>CLICK NEXT TAB FOR MORE INFO AND HELP

  • http://onsman.com/ ronsman

    Good article, Craig. What I don’t really get is why anyone would learn just one language. It’s like saying “I speak English only”. No, you don’t. You speak lots of languages with one main one. In fact, if you speak English, you already speak many languages. That’s how I approach programming languages, too. I probably know the C languages best, but i wouldn’t get by without a good working knowledge of PHP and JavaScript. I’m comfortable with Java (OK, SOME Java), Ruby, ASP.NET, and can make sense of Python and Perl. Yes, I swing from front end to back end. Because I can. If I didn’t embrace many languages, I couldn’t. These kinds of surveys do give some clues as to what’s big, what will stay big and what’s becoming bigger (yup, Java’s not going away). But whatever happens, I intend to stay multilingual.

    • Wolf_22

      In a majority of situations, you can’t.

      For example, to have a somewhat effective web presence, you have to know more than just HTML. For looks or accessibility, you basically rely on CSS. For UI, JavaScript. For applications, some programming language equivalent to, say, PHP or .NET or JAVA; whatever fits accommodates the skill sets of the developers.

      So even if someone wanted to use only 1 language, today’s online world forces you to use more than one, whether you want to or not. Personally, I see this as a flaw and believe that one day, all of these languages will eventually coalesce into one superior language, which we’re years away from seeing anytime soon.

      • Tatsh

        This is why it troubles me when people (students who are pretty much non-technical) say things like ‘I only need to learn HTML right?’

        • Wolf_22

          I don’t think there’s any reason to feel “troubled” from it… If anything, it only means more job security. But from a perspective of concern in terms of whether people have the skill sets required to get to the same resources and opportunities as those who know those kinds of things, it would be understandable why you might feel like that.

          Keep in mind that this whole industry is still very young. We’re only seeing the beginning of whatever it leads to… So if you’re going to feel “troubled” about anything, feel troubled about THAT! Ha.

          (Maybe all the changes, etc., will turn out to be a good thing…? I hope so. I’m a bit of a pessimist when it comes to this sort of stuff because I always see everything being used in malicious ways.)

      • http://www.trivial.ly/ Nic Johnson

        I can’t imagine one general purpose language replacing all the various optimised dsls we have available today. Such a language would be unwieldy.

        • Wolf_22

          The thing is that our technology (in general) is still very new and still very young compared to the potential it’s beginning to reveal. Through time, you’ll begin to see more and more standardization across systems far and wide until the most complex solutions we can imagine today become tomorrow’s trivial plug-and-play operations, not just with peripherals and components but also aspects of programming.

          We’re already seeing some of this, with the latest APIs, VMs, browsers that can now render pages (arguably) 90-95% consistently, applications from different OSs importing and exporting to other applications from other OSs… This concept of “universal evolution” is occurring in every domain imaginable today, which only continues to be facilitated by the multitude of resources that continue to bridge more and more gaps. I know it sounds melodramatic, but if you look at things closely and then step back to refactor your observations from a sense of “bigger picture” perspective, you’ll see it, too. With all this being said and the more this happens, the more easily-adaptable and “implementable” things will become. And the more this happens, the more advanced the systems overall will be.

          I might be wrong, though. :)

  • Bruno Ferreira

    SQL should have a phone icon and a globe icon too. Now you have WebSQL on HTML5 and Sqlite on android for example.

  • Wolf_22

    Agreed! By having a metric like that, one could deduce many supplemental aspects about where it’s going.

  • Wolf_22

    It’s just another tool and like the many tools before and after, it can be used for anything that fits the purpose of a given effort.

  • Craig Buckler

    So “Enterprises” don’t have web sites and applications written in PHP?

    • Tatsh

      Yes. In fact the popularity of Java shows it. Beyond that there are also enterprises hell-bent on .NET-only.

      • Craig Buckler

        So you’re saying absolutely no enterprise-level software uses PHP or Ruby? I better tell a few my clients that they’re no longer enterprises!…

  • Craig Buckler

    I’ll certainly do that for 2015 and the previous article provides a movements summary. No prizes for guessing what’s happened to ActionScript…

  • amit d

    Java Java everywhere… :p :)

  • Seven Design Studios

    Yes, technically it’s a markup language, however, what makes it fundamentally different from a programming language? In my mind, any language that tells the computer what to do, or how to do it, is a programming language.

    • http://www.sitepoint.com/ Dave Slutzkin

      HTML isn’t Turing complete, so I don’t think it’d fit most people’s implicit definition of a programming language.

      • https://market.android.com/search?q=puzzleduck&so=1&c=apps PuZZleDucK

        HTML5 & CSS3 are Turing complete :p

        • José Sousa

          JS is….those are not

    • http://ricardozea.me/ Ricardo Zea

      +1 to Amine’s comment. Thought the same exact thing.

      @sevendesignstudios:disqus, HTML… markup, doesn’t tell the computer what to do or how to do it. Scripting languages do.

      HTML simply tells the browser that a specific component of the content has been “marked” with a particular HTML element.

      • Guilherme

        Yes it does tell. If you write a DIV tag on your document, the computer/browser will create that element as you told it so. If you then declare the styles on CSS, the computer will read it and style the element as told.
        When you say it just marks an element, seems like the element was already there but it was not, so the html actually creates the element. It is a written code, afterall, read by computer to do something based on what is written, so… just a matter of how you want to see it.

        • José Sousa

          wrong….what creates the element is the browser engine (definitely not written in HTML)…HTML is just data…just like a csv/txt/json/xml file is…but in a more “readable” way for the intended purpose….

    • Guilherme

      Agree. It is a technical and pointless detail to not call it programming language. There is a sintax, you write it on a document, the computer reads it and do everything that is told just as you wrote it so… why not call it programming language too?

  • Seven Design Studios

    In my mind, any language that tells the computer what to do, or how to do it, is a programming language.

    • Tatsh

      I agree. I started with just HTML when I was around 10 years old messing around on GeoCities and what not (yes you can find some of those sites still on Reocities). I was definitely controlling what was displayed and how it was being displayed. The only difference was that I was doing the heavy-lifting manually (of course I had no idea at that time).

    • Tiago Souza Cândido

      If I am writing a text on MS Word and I am formatting the text, am I programming?

  • Vinícius Tomaz Ferreira

    I started to learn Ruby with Rails framework. Its being another world to me, C/C++ developer.

  • Tatsh

    Actually it is a limitation of the language as of right now. It can barely fit any other use case besides ‘run and quit ASAP’. It is good for short-lived ‘apps’ as in a script that ends up rendering a response (typical index.php) or command line tool that performs a task and just quits. This can also include job processors that spawn and then quit when done (like a processor for Beanstalk via Pheanstalk).

    Try creating a complex daemon or long-running process (batch processor for gigabytes of data) in PHP that does not end up dead because the machine killed it due to memory because PHP’s GC did a terrible a job even though you did virtually everything you could besides continuous calls to gc_collect_cycles() (which is not even guaranteed to do anything). IMO the best way to write such a thing in ‘pure PHP’ would be to write a base process, and within it use pcntl_fork() or exec()/passthru() to start more PHP processes (that are not daemons). With 5.5 and coroutines this can work out a little better compared to past versions. But it really feels like this kind of thing should not be necessary for a ‘general-purpose language’.

    Python on the other hand can be reliably used for daemons and has been for a very long time. Supervisor, Twistd, Django’s built-in web server (for development only of course), just to name a few.

  • Craig Buckler

    There’s no way SQL is deprecated – structured data will always be important and nothing has come close to challenging SQL in 20 years. NoSQL is a viable alternative for unstructured data but I’m willing to bet SQL will still be around in another 20 years.

    • Tatsh

      I did not say that. I pointed to an article that states WebSQL is deprecated.

      Also, I bet you are incorrect. SQL and the problems it solves are only necessary for computing that went on in the past and goes on specifically today. The reason is only because of computing limitations that exist today but definitely will not exist in the future. The job of ‘SQL optimising’ will be a part of the ‘code janitor’ job in less than 20 years. And it is already a lot of the way there when you consider how many things have tried to replace SQL either going NoSQL (document-based, to be exact) or making SQL invisible to the programmer (ActiveRecord/ORM). I do not consider these things to be a failure for the most part because *most* queries can be replaced with ORM and do not need further optimisations. It is almost always a waste of time today to optimise SQL queries for the most part if you are just serving the same or a similar set of data to everyone. You can cache. And cache is just another form of a database (especially when you use a NoSQL solution there). I do not see nor foresee SQL being used for ‘big data’ *at all*. NoSQL solutions as well as even bigger solutions like Hadoop are quickly replacing what would have been an RDBMS cluster. These are working technologies, and they will only improve with time.

      The reason Mozilla/others deprecated WebSQL is not for a dislike of SQL, except that it is difficult for W3C to standardise. There is a true SQL standard but no vendor implements it fully, and that standard changes not under the control of W3C. There may be a general sentiment that SQL is not a good idea for the web inside of JavaScript (usually for some bad in-favour-of security by obscurity reasons) but that is not the specific reason why WebSQL was deprecated.

      • Craig Buckler

        Apologies – I thought you were referring to SQL being deprecated which is what the original comment mentioned. As you say, WebSQL is dead and there are good reasons for that (although it’s still available in webkit).

        However, I disagree that SQL is dead. Even if everyone switched to ORM, someone still needs to create your ORM framework and complex queries will always require SQL expertise. Just because you can cache bad queries, it doesn’t follow you shouldn’t invest time improving them.

        ‘Big data’ tends to be unstructured so NoSQL, Hadoop etc. are viable options. But, for structured data, SQL is a great solution. It’ll still be there no matter how many software abstractions you build on top.

      • http://www.trivial.ly/ Nic Johnson

        Optimising queries is a waste of time, and then you scale.

        • Tatsh

          Don’t just optimise queries. Profile. Learn where the slow-downs actually are. There’s not always one source of slow-downs.

          Beyond that, there is a cost (labour and time) to optimising code vs working around until the ‘money is there’ to get to the root of the problem fully. I am never happy to go with the workaround route, but sometimes it is absolutely a requirement (site up vs down; making money vs not).

          • http://www.trivial.ly/ Nic Johnson

            There are 2 ways to scale, concurrency and efficiency. Up to a certain point, concurrency is cheaper because programmer time is the limiting factor. Once you breach that level, you need to start doing more with the server resources you have. This means among other things, optimising your SQL.

  • Decebal Dobrica

    I really don’t know one being that will agree with those options !

  • Decebal Dobrica

    haskell absence provides this data with arguments of being faulty

  • http://jiffdesign.de/ sascha fuchs

    Whats than? Moving Pixels like Photoshop Geeks? Drilling the whole day in the Nose?

    Is no difference between Coding and Programming, is the Same. A Human use a “Interface” to say the machine what the machine have to do, the Interpreter between will do the rest (The most Languages have an Interpreter in die Middle, because the most Humans are unable to speak the specific machinecode from the Processor)

    Coding sounds like “You and your small shit – i am the God off Code, i can write C## and i love Java ….” On the Other side the “ProGrammer” are completely unable to write the “supersimple” Language like HTML valid.

  • antquinonez

    I agree with Ruby as a web only language. Mindshare (where devs put their energy) is overwhelmingly Ruby on Rails.

  • Craig Buckler

    It’s early days still. I think I’d choose Swift if I wanted to develop iOS applications but, personally, I’d rather stick with web technologies which work anywhere.

  • Craig Buckler

    My point was: if Python’s considered an “enterprise” language in the context of this survey, why isn’t PHP, Ruby etc?

    PHP has it’s problems. But so does every technology. Nothing is ever perfect, nothing remains static. Fortunately, many of these languages are open and you have the ability to correct issues.

    • http://www.trivial.ly/ Nic Johnson

      Ruby is clearly enterprise.

  • Craig Buckler

    No, HTML isn’t a computer language. It’s considerably tougher than that!

    • Fezot

      Yes HTML is NOT a programing language because, for example, you can’t use control structures (if, else, while), do maths, and so on with it.

  • Amit Kolambikar

    What is so Great about C ? other than linux are there any applications completely built in C ?

    • http://www.trivial.ly/ Nic Johnson

      C is the progenitor of Java, C#, Ruby, Python, etc. A little C will always stand you in good stead.

  • Ademolu Oluwafẹmi Adeleke

    And who’s creating phone apps in Scala, Delphi and Scheme?
    I wonder….

  • http://www.trivial.ly/ Nic Johnson

    Add Angular and it becomes a programming language. Angular compiles HTML as code.

  • http://www.trivial.ly/ Nic Johnson

    And again it takes no account of salary or culture. Do you want to work in a startup or a bank? Do you want to charge 200 for a mom and pop WordPress build or 800 for high stress enterprise architecture. What suits you?

    • Tatsh

      That is true. IEEE is a bit of an old school kind of suit and tie ‘professional association’ (oh how I hate that terminology) who really only see engineers who leave academia going to work for big corporations like IBM. So, the answer to your question is high salary, corporate culture, and never a start-up. If they do not take that route, it is like they are expected to become professors or just work for IEEE directly.

      No one (as in start-up and self-taught-type-contractors) outside of this scope listens to what the IEEE has to say. If you look at start-up jobs available, you see little Java and more PHP, Python and Ruby. And yet this survey on the Jobs tab shows exactly the opposite.

  • Abhishek

    What about groovy? Is it early stages for it or its just another language which will grow with time?

  • http://www.dikaio.com/ Don Dikaio

    No Haskell?

  • Diego Martins

    About Delphi, they have a good interface for IOs and now Android, and using them with DataSnap Mult-Tier can give you a lot of tools to make good apps.