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?

Craig Buckler
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

  • 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



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

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

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

        • 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

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

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

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

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

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

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

Related books & courses
Available now on SitePoint Premium

Preview for $1