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 have 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?

Tags: best, language, learn how to program
Craig is a freelance UK web consultant who built his first page for IE2.0 in 1995. Since that time he's been advocating standards, accessibility, and best-practice HTML5 techniques. He's written more than 1,000 articles for SitePoint and you can find him @craigbuckler

  • Evert Albers

    It would be interesting to see not just the stats, but also the changes during the last 12 or 6 months.

  • 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



    • Steven Leggett

      Swift seems to be less in demand than Go. Any iOS jobs want Objective-C.

    • Gab

      Yep, Objective-C is way more used, especially because Swift is quite new and maybe lower in options… But it seems so weird, just as C is… I mean, C++ and C# are way more comprehensive!

  • Duh

    PHP is “web” because no one in their right mind would use it for anything else. Python on the other hand is used for a multitude of applications.

    • Jake Arkinstall

      Python is often jammed into an uncomfortable, back-breaking position for its use in many areas. The community, though, is strong enough to make some real progress in unexpected places.

      PHP is, and always will be, designed for management of web applications. I have seen many areas where it is used quite smoothly for non-web tasks – often for bulk processing and often as a spawner and manager of other, smaller processes – but at current the web is where it is strong and safe. The community is huge and historically weak when it comes to evolving the language and building extensions and packages. This is now changing very rapidly due to various community efforts (and strong ones, too. PHP developers can no longer really call themselves PHP devlopers without experience with Composer, for example). I dare say that, within 5 years, PHP will have some pretty strong branches in some surprising areas.

      So, in essence, I agree that PHP isn’t widely used for non-web applications. That isn’t a limitation of the language, though – it’s a limitation of the users.

  • 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. :)

          • Name

            I roll with your flow bro! You can never be more right! This might likely come up when we have standardization or a regulatory institute for programmers, software Engineers and developers. I’m sure Application Entrepreneurs and Venture Capitalists can’t wait for this to happen… Although, it’s going to be a very herculean task, because these individuals always prefer to be independent since most of us learn coding as a passion on a personal level. Methink it is necessary to have one universal formal programming language with the way technology is advancing so we can save time in focusing into the real world for applications and also learning other unknown new knowledges that comes with revolutionary technologies and innovative possibilities. Like you said, this is just the begin of planet earth’s technology revolution!. After all, English is almost becoming the natural universal language! So why can’t we have a formal programming language?!

            I might be wrong too! :)

      • http://blog.obelisk.ro oxygen

        I can prove you wrong: JavaScript for everything. node.js on server side, styles (without learning CSS, through JS DOM API), DOM creation and manipulation (without learning HTML, just JS DOM API), and finally JavaScript for additional logic right in the browser. How about that?

  • 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.

  • http://www.slim-hamdi.net/ Slim

    Java <3

  • 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.

  • Amine

    HTML is not a programmming langage

    • Coca Akat

      I agree that’s HTML is not a programming language. it’s used to represent the data structure.

  • http://about.me/sbinarao kamaelxiii

    HTML is not even a programming language. Coding only in HTML doesn’t make you a programmer.

  • 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!…

        • Tatsh

          I never said that none do. Some enterprises do not step outside of what has real vendor support behind things. Ruby (which vendor?) and PHP (Zend) are both not even close to as vetted as Oracle or Microsoft. As a result, it is very difficult to convince an enterprise (primarily financial and ‘old-school’ corporations) to consider using newer companies’ software.

          Speaking of finance, I would *never* trust PHP to handle money using its internal float type without a literally endless amount of testing. http://phpsadness.com/sad/47 And I would *never* trust MySQL (as part of the usual ‘LAMP’ stack) to handle money either with its float type https://www.youtube.com/watch?v=1PoFIohBSM4

        • http://blogs.microsoft.co.il/blogs/shimmy/ Shimmy

          Facebook and Yahoo are written in PHP.
          I’m a .NET fan, and I don’t like PHP, its syntax and it’s feature set. But it got into the market at the right time and got its reputation, which made it the top web language the facto. Now with ASP.NET becoming open-source, hopefully we’re soon gonna have ASP.NET hosts on Unix serers for cheap.

  • 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

        • Gudang


        • José Sousa

          JS is….those are not

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

            true… and false

          • José Sousa

            html5 is an umbrella term that includes JS. from that pov yes, html5 is turing complete, but html per se isn’t, it’s a markup

        • http://blogs.microsoft.co.il/blogs/shimmy/ Shimmy

          HTML5 & CSS3 is nice and has some very interesting features, but 1) it’s not enough 2) It’s not a ‘language’, it’s a markup.
          Would you call XML ‘a programming language’?

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

            “Would you call XML ‘a programming language’?”
            No, which is why I didn’t mention it.
            However CSS & HTML can be interpreted by a common runtime (browsers). So unless your definition of “programming languages” rules out anything interpreted (Java, all scripting languages, etc) my statement regarding CSS and HTML stands.

          • L.J.
    • 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?

      • AyexeM

        Because there are specific restrictive definitions for these terms, and these technologies do not fit the definition. HTML is not even close. You can prove me wrong by writing some HTML (without CSS and Javascript) that can respond to user input or perform animation. HTML only describes the structure of content much like a PDF or word document. Just because our browsers know how to display this content does not mean HTML represents instructions on how to display it.

        • Guilherme

          I disagree on many things you said but… whatever. It is pointless anyway, discuss how to label it. We all know which language does what so, that’s what matters. More than that is just personal opinion and ours differ. I’m ok with it.

          • AyexeM

            You can say the earth is flat too if you like. I’m Ok with that.

      • didibus

        I think there’s two ways to define programming languages. It’s either a
        language used to instruct computers fully or it’s a language used to
        instruct computers partially. But I think the “fully” is a more
        meaningful definition. By fully, I mean that the language can instruct
        the computer of absolutely everything it’s capable of doing.

        It’s more meaningful that way, because if we only take it as partial
        instruction, which mean it can only instruct the computer on a subset of
        it’s capacities, we’re basically making any input to a machine a
        potential programming language, since any input can be interpreted or
        translated into machine instructions.

        If the language you speak to the computer can only
        influence it’s behaviour within the realm of his current programming,
        your language is not powerful enough to be a programming language. In
        this case, you should say Markup Language, or Domain Specific Language
        or User Interface Language, etc.

        Here’s a comparison. If you speak a natural language to a
        human, you’re influencing his behaviour. You can say: “Hand me the milk”
        and there’s a good chance he will behave as you told him. But are you
        programming him? Is your language capable of programming and
        reprogramming him? Similarly, I’d say no, because your language can not
        be used to instruct him of doing anything you would want that he would
        be capable of executing.

        I think a good and easy basis for what should and shouldn’t
        be called a programming language is: “can I use this language to tell
        the computer how to understand this language?” If yes, it’s a programming
        language, if no, it’s not. You can write a python interpreter in
        python. You can not write an HTML renderer in HTML.

        That’s why I say you should not label HTML a programming language. Sure, you can decide that your definition of programming language means partial influence, but if you do, you’re making the term equal to the word “Language”. You’re basically making the “programming” noun useless to the meaning since it adds no precision.

    • didibus

      It doesn’t tell the computer how to do it, it only tells it what to do. That’s why it’s a markup language. The HTML renderer has the code to execute the instructions to tell the computer how to do things. Which of these instructions it will choose depends on the HTML markup. The renderer will decide what instructions to tell the computer to do based on his interpretation of the HTML markup.

  • 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?

  • http://www.aquariumvitals.com Jonathan Carpenter

    How is Scala doing? Are there any other big brands besides Twitter behind it?

  • 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.

  • Steven Leggett

    Go isn’t really mobile. You can manually deploy using ADB but I’m pretty sure that’s all you can do, for now.
    What’s really interesting is to see that it’s such a new, young, language that it still manages to command real demand (jobs)!

    From the web top 10 list, I’m surprised to see Python demand so high. My own research has seemed to suggest Ruby demand is higher than Python’s. If you search for jobs on Stackoverflow careers there are double the number of Rails jobs. Python is gaining traction in data science and utility area’s but I can’t say I feel demand for it in web has increased? Anyone with some feedback on this?

  • http://about.me/antonpeck Anton Peck

    Just to point out something regarding C#
    This is the primary language for programming in Unity3D, a cross-platform game development application that builds for Xcode, Windows, Android, and many other systems.
    Even on my Mac, I’m writing C# for an iOS project I’m doing. Anyone familiar Hearthstone? That was created in Unity3D. Remember the gorgeous game Monument? Also built in Unity3D. All with C#. Crazy, isn’t it?

    Check out the samples: http://unity3d.com/showcase

  • 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.

    • engTech

      Did you just ask that, sir? In what ‘great programming language’ would you rather write the code that run inside your washing machine, your microwave oven, your fancy refrigerator, your TV, sir? If you own an automobile, please let the manufacturer of your automobile to use that ‘great programming language’ of yours to write code that will run your automobile’s engine, cruise control, anti-lock breaks control systems, … Almost all ‘hard real-time applications’ are written in C, AFAIK. And there are plenty of those applications.

  • jagdish

    And I thought PHP will be on top.Well JavaScript can do better in near future.
    Happy programming !

  • 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?

  • Fernando Faria

    Great material! But you should update the JavaScript spectrum. JS already can be useful for desktop, using Node Webkit and for hardware and compilers, using noduino and asm.js.

  • 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.

  • Ray Fitzgerald

    I decided i was going to learn Ruby on Rails about 8 months or so ago. I started off learning the basics of Ruby using codecademy, which I found great and very educational. Then I set about diving into Ruby on Rails, that’s when the problems arose. I built some basic applications through the tutorials on guides.rubyonrails.org. Then I found myself lost, this was about 4 months ago and I have returned to try and learn ruby on rails but i am finding it extremely difficult because of lack of quality resources. I do not want to start a new language because I think that would be a waste of all the hard work I put in learning Ruby etc.
    I would be extremely grateful for any advice, tips or mentoring you could give me, thanks.

  • BuiltLikeABrickShithouse

    HTML is a programming language now, not just markup.

  • http://licenser.net/ Heinz N. Gies

    I suggest that the conclusion drawn here is entirely wrong. When I understand that right the ‘best language to learn’ is the one where you have most competition (people using it already), and is hardest to understand (most questions asked) and biggest in demand. How does that even make sense?

    It looks like you suggest people to go into the field where there is the most supply+demand, which could be that you’ve a supply of a million people and a demand of 10 – which is a horrible job market! And it would rank much higher then a place where you have a supply of 10.000 and a demand of 100000 – which would be a wonderful job market.

    The ‘questions asked on stack overflow’ is another odd statistic, it probably is a mix of ‘how many unexperienced people exist in the field’ and ‘how hard is the language’ – how is that a good thing? Yes there are probably less question asked about Assembly then about PHP because chances are those in that field know very well what they are doing and have a good documentation, so Assembly is worst then PHP?

    I think this is a wonderful example of how to interpret statistics towards what you want to say, I could probably pick the exact same data flit the rankings around and argue it at least as sensible with that.

    • Lee A Pseudogrammaton

      It’s great to be a big fish in a small pond … but the pond can dry up. On the other hand, being another fungible piece of fodder is not a career path.

      Looking at the bleeding-edge traffic on Github, the cool kids are flocking to Go, Scala, & Julia. Technical & Sci computing are also booming (data mining, machine learning… see also Julia (replacing Python), R) … and then there’s also geometric data & GIS (PostGIS, SpatiaLite).

      So the wise course is to develop a polyglot flexibility, & possibly a polymath’s (e.g. CNC/3D machinist).

  • Lee A Pseudogrammaton

    Yeh, other websites report these stats as facts, as if inertia & job postings represent a future career path. Were that the case we’d still be coding only in C. Or XHTML & XSLT (shudder). Or VB (acid reflux).

    Now for the future: An increasingly polyglot world.

    Look at Github: The cool kids are already flocking to Google’s Go ( golang ) with commits growing by leaps and bounds. Same goes for R, Postgres (very solid & established trends) & now Julia (dynamically typed, LLVM-based, but essentially as fast as &/or faster than C & Go (case depending)).

    The Julia language is the technical & scientific computing heir-apparent to Python’s current position in those fields. Technical & scientific computing include data mining & machine learning, a broadening field that’s sure to pay far better, and be far more rewarding, relative to the merits of any nominal language.

    So the deeper skillsets that these languages represent are going to prove to be far more important, with Machine Learning being the center of a new push in deep informatics (and this is where big data comes in).


    But here’s the real problem: Corporations HATE programmers (oh yes they do). For their salaries, care & maintenance, and liability as a cost center corporate programmers pose the greatest frustration to management, with all manner of overheads & risk (alpha-geek & infrastructure lock-ins). We saw how much this mattered to firms when they outsourced the IT Operations side in droves (& still the schools are cranking out fungible fodder for burnout & future layoffs). There’s NO job stability on the ops side except in federal gov’t.

    So the same goes for programmers: For a programmer to over commit to just one language in this environment is to risk becoming replaceable. Why? B/c single-language geeks are a dime a dozen, esp. as the major langs are all wasting cycles on single cores.

    Time & again I’ve seen the observation made that Java & C# are known lock-in paths by dint of their corporate patrons (Java for its Byzantine mess, C# for its Windows-centrism). Perhaps that’s fine for corporate IT Depts, excepting for the problem of IT being a cost center & vendor lock-in known as a hazard. C# isn’t freedom: Dot NET anywhere other than Windows is too slow (never mind trying to find interfaces out to non-Windows ecosystems). The JVM on Windows suffers likewise a bit less in terms of performance relative to Linux, but Java is a known API quagmire (never mind its relative verbosity, even C# is a better language).

    MS however has seen the multicore writing on the wall & is calculating a transition with F# (a hybrid akin to Ocaml). Oracle? Nothing new & breathtaking that I’ve heard of. Both firms’ track record with technologies is to keep milking a product despite the need to innovate elsewhere (nothing new in corporate computing, see also Computer Assoc, Sterling … ).

    So what are the standard IT programs doing about this? NOTHING. They’re just as bad, if not worse. The schools are still cranking out kids in C#, Java & C++ despite these techs hitting the multi-core wall. In any other major career track except Nursing this’d portend a pre-peak education bubble playing out (Law Degrees, MBA’s ).

    But functional / functional-hybrid programming is a very likely future: If a coder is experienced in Haskell, OCaml, Clojure, Erlang or even Scala, they’ll be more ready for Microsoft’s own F# track than other systems programmers. Likewise for Go or D, even though those are of a more imperative flavor (both sport lambdas as-needed when side-effects are to be avoided).

    Now apply this trend to another still small, but booming technical field: CNC & 3D Printing. The next wave of manufacturing in the West (and increasingly the Far East) is in those fields b/c of the demand for JIT manufacturing & bespoke / micromanufacturing. The demand in CNC is for machinists who are functional polymaths, including design/engineering, EEE, chemistry, mathematics, & programming. The cool kids are flocking to this track as well, you’ll find them at the local Makelabs (even in podunk Tallahassee we have one).

    Here’s my conclusion: If you want a more rewarding & satisfying career track, don’t follow the herd.

  • Luis

    Please say the meaning of each icon

  • Shaik Md Rafi

    Programming languages have functional purposes. HTML, as a markup
    language doesn’t really “do” anything in the sense that a programming
    language does. HTML contains no programming logic. It doesn’t have
    common conditional statements such as If/Else. It can’t evaluate
    expressions or do any math. It doesn’t handle events or carry out tasks.
    You can’t declare variables and you can’t write functions. It doesn’t
    modify or manipulate data in any way. HTML can’t take input and produce
    output. Think of it this way: you can’t compute the sum of 2 + 2 in
    HTML; that’s not what it’s for. This is because HTML is not a
    programming language.

  • Gab

    Yep, definitly, C# is really important for Unity and really nice to use, but it’s the only way I heard about it…. Else, is it really used?

  • Vitor Gonçalves

    You must be joking, right? Haven’t you heard of ASP.NET websites? You can code them in C#.
    Also, with a C# shared codebase, developers can use Xamarin to write native iOS, Android, and Windows apps with native user interfaces and share code across multiple platforms.

  • Vitor Gonçalves

    “Is C# mobile development really above JavaScript and Objective-C?”

    Maybe he doesn’t know Xamarin too. With a C# shared codebase, developers can use Xamarin to write native iOS, Android, and Windows apps with native user interfaces and share code across multiple platforms.

    • http://blogs.microsoft.co.il/blogs/shimmy/ Shimmy

      Xamarin is way too overpriced.
      But among all languages I use, I like C#’s syntax and toolset (async, EF etc.) most.
      Java is much more verbose than C#.
      The only lack of C# is its incompatibility with other systems. But this issue was eliminated lately with the releasement of .NET framework (including ASP.NET!) as an open source platform. Hopefully there is gonna be some open-source community-driven replacement for Xamarin soon.

  • Mohamed

    Thanks for sharing this informations

  • Mobius
  • Joe

    I agree about having a greatly superior language, but I doubt that’s all that would ever exist, I can imagine after we develop further in the backend with new languages popping up that we’ll start to see certain patterns and converge these systems into a more superior language, we can already see how languages have evolved from previous generations and it’s barely been long at all… the further the evolution the more things a language seems to be able to cover in it’s specific areas.

Special Offer
Free course!

Git into it! Bonus course Introduction to Git is yours when you take up a free 14 day SitePoint Premium trial.