The Next Big Language is….

27

Ok, I hooked ya there didn’t I?

Jeff Brown mentioned some surprise today at hearing that Scala had been anointed as Java’s “heir apparent”.

I say that there will be no “next Java”. Get over it people. There is no “next big language” coming that will capture 20-25% of the market like the Java’s or C’s of old.

The world of languages has changed. Information about new languages and techniques flows much faster than 10 years ago due to the net. VMs have drastically lowered the bar for implementing high quality languages. So many apps are accessed via the web or remote APIs that it makes no difference whatsoever what the app itself is written in.

Make no mistake – this is a glorious development in my book. We are emerging from a decade of language tunnel vision into an orgy of choice and variety. A year ago I kicked off the St. Louis Lambda Lounge user group, which looks primarily at functional and dynamic languages. In the last year, we’ve had talks about Erlang, Haskell, F#, Fan (now Fantom), Fortress, Python, Perl, Scala, Clojure, Squeak, Factor, Groovy, Ruby, Javascript, OCaml, Objective-C. I grant you there are a few languages in there that are not well known or used but MOST of those are actively used by real people in production.

At the inaugural meeting of the Lounge, there was a comment (by Kyle Cordes if I recall) that a decade ago the alpha geeks were running towards Java and now they’re running away from it. Some truth there. The key is they’re not running towards one NBL – they’re running towards what solves their problems.

If we just constrain our focus on JVM languages, Java will continue to dominate the market for years to come. But beyond that we have real choices in Groovy, JRuby, Jython, Clojure, and Scala. I can easily name real companies and production-level products built on all of those. Beyond that I can think of a few more in the next tier like Fantom. A year ago I would have had a hard time citing success stories for some of those, but not today. If you want to know what the next big language on the JVM is, I’d say ALL! Gimme the beauty of Ruby, the thoughtfulness and concurrency of Clojure, the static typing and OO/functional hybrid of Scala, the dynamic vibe of Groovy, the simplicity of Jython, and always my good old friend Java.

There will of course be bigger and smaller languages. Over time we’ll see some of these languages drift up and down in popularity and community but there might be 10 (15? 20?) languages out there with a robust job market. Even that’s not essential anymore. If I’m putting together a web site, the only important thing about the language I use is whether it is the most productive language for me.

I can’t wait to see how our languages evolve in the next few years with this bubbling idea pool.

Comments

27 Responses to “The Next Big Language is….”
  1. b0c1 says:

    Ruby/JRuby the best :)

  2. Bubak says:

    Scala, but is not for everyone.

  3. As a consultant I believe this would be great! Ten years from now a desperate customer would call me and ask me to maintain on an old Scala application. By then the language market would have fragmented to oblivion, so I’d the only one they can find with the skills. So I can charge ridiculous rates for my skills.

    But that will not happen, I think, because a fragmented language market will make managers conservative. Only a few will dare to let their language gurus pick a new language for a new project, since they do worry about finding maintainers to their existing code base when those language gurus have quit, in quest for a new shiny language.

    So, in time, wide spread adoption of a new language might happen, when there is some kind of consensus of which one it is. My bet is on Scala, because it brings something new to the table (functional programming), it is fast, and it lets you ease into it, just like we could ease into C++ from C, reusing our existing code base.

  4. sirmak says:

    - scala is static typed, performance is similar to java
    – all java libraries are scala libraries without any change
    – scala has a better concurrency support
    – scala combines OO with functional programming
    – scala has most modern features. java cannot compete with c# 4.0 anymore, scala can.
    – has IDE support
    – a mature product, twitter is switching to scala.

  5. Nico Mommaerts says:

    “I can easily name real companies and production-level products built on all of those.”

    Yeah? I can’t… I would love to though, but I have never encountered a company working with something else as .NET or Java.

  6. Chris Arthur says:

    I tend to agree with you about how there is no successor to Java, but instead there are a plethora of options coming to maturity. I, for one and apparently in good company, like Scala quite a bit. I like its concise class structure and the fact that XML is a first class participant, but I also love the builders in Groovy. So I honestly think that using interoperable languages is the future of the future. Languages that excel in a couple of areas but compile to the same VM whether it be the JVM or MSIL, or , gasp, both! I am really looking forward to the current things happening in the programming language world. I haven’t been this excited since college!

  7. Michael says:

    Excellent points Alex, but I’m not convinced. I think there will be a NBL. I think languages are like everything else: books, movies, music, restaurants, clothes, etc. There are always “blockbusters”, i.e. a small subset of available options that account for a majority of the usage followed by a classic long tail. Hence the top 10 languages accounting for greater than 75% of usage. There has also always been a long tail for programming languages, and I don’t see this changing. Sure it’s easier to get a language going, but similarly the bar has been placed higher, which somewhat negates the lower barrier to entry.

    The blockbuster models works well for so many things. For programmers it works because you inevitably have large organizations for whom standardization brings huge benefits. It makes it easier for IT to support the org. It makes it easier to add new developers to the org. It allows for heavily customized tooling. It allows for org level training. However, if that org standardizes on a long tail language, they will suffer. It will be harder to leverage open source or 3rd party software. It will also make that org less attractive to outside developers considering employment. Why? Because you will be asking new hires to learn skills that will have little value outside of the org. Similarly, if you use a long tail language you will either have a hard time finding experienced developers or you will have to invest a lot upfront for training.

    So it makes sense for large orgs to standardize on a language, and it only makes sense for that to be a language widely used by large orgs. In other words, it only makes sense for large orgs to go for blockbuster languages.

    So maybe there will be no NBL, and all large orgs will stick with Java/C++/C#/PHP/Python ad infinitum. I find that grim personally, and the changing landscape of computer hardware leads me to think this less likely. Or alternatively, there will be a more modern language that will break through and become the NBL.

  8. Rogério Liesenfeld says:

    I agree that the Java language is going to remain the dominant JVM language for many years.

    But I don’t believe that either one of Groovy, JRuby, Jython, Clojure, Fan, or Scala has any real chance of capturing significant market share. JRuby, Jython, Clojure and Fan are too “alien” for Java developers. Neither of them has true support from any big software company.

    There is one hope, though: JavaFX Script. It’s easy for Java developers to understand, comes with a whole new SDK (JavaFX, including a new GUI library), and IMO is more well thought out than the others (think of binding, for example). If Sun/Oracle continues to strongly develop it, it inevitably will take away some of Java’s market share.

  9. Ed Yavno says:

    There’s a great deal of experimentation with different languages going on right now because of the reasons Alex mentioned here, hence so many options available.

    I agree that there won’t be a single “next Java”, but I think after this experimentation period is over, the selection will boil down to a few sensible options – not 10 (or 15 or 20) of them – more like <5.
    The most popular language features will find their way into those several preferred languages (we already see it in Scala).

    There will always be a number of "marginal" languages, and people will even build some production systems with them, but it will come down to maintainability. Having big enough talent pool with a skill set in a particular language/tech is always be a consideration for a long term production system.

    This is perhaps an argument for "polyglot programming", but I don't think there will be many developers with expert level knowledge in 5-10 languages, so it won't realistic to have big enough talent pool for a high number of languages.

    My 2 cents.

  10. Alex says:

    @Mats: I think the smart managers will let smart developers make wise choices about how to pick a language that best matches the needs to the application and the skillset of the developers.

    @Nico:
    – Groovy – many production Grails apps out there and lots of big companies trying this out and coming away impressed
    – JRuby – see EngineYard hiring the JRuby dev team due to their demand for JRuby deployments
    – Clojure – see Flightcaster, Runa, Sonian
    – Scala – see Twitter, http://www.scala-lang.org/node/1658, etc

    @Chris – I didn’t talk about this in the post but I tend to agree with you that due to the explosion of languages, that efforts at language interop, metaobject protocol, etc on various VMs are going to be hot in the next 5 years. That includes the JVM, CLR, Parrot, and all the other VMs.

    @Michael – I hear ya, but I disagree. But maybe we’re just talking about different points on the same continuum. I certainly think some langs will be bigger and more accepted than others. To be more concrete, I don’t believe any one language will achieve a greater penetration than Java has right now in the next 5 years. And I think Java’s usage will go down.

    @Rogério – Well, I think you’re wrong regarding market share. I think 2 years from now we’ll see more Groovy, more Scala, more Clojure, more JRuby. Not sure about Jython or Fantom. I am much chagrined that it did not occur to me to even mention JavaFX in my post. Jury’s still out on that one. :)

  11. Tim Dalton says:

    I agree that no one language will dominate the landscape like Java did in the past. Scala and Groovy are poised to take larger portions of the fragmented market on the JVM.
    Scala’s anointment will likely take a big hit from inclusion of closures/lambdas in Java 7, since that is the feature most missed in Java. Scala may also prove to be too “wonky” for some who really need “Scala–” and Java 7 may come close enough to that for them.
    Definitely Scala is an influencer in the inclusion of closures in Java 7 and features in future languages. I noticed a lot of “kind of like Scala” statements during your Fortress presentation.

  12. The list of contenders should include JavaFX as far as potential Java replacements. I can see a category of Java use switching to JavaFX as it matures. Scala isn’t that different from JavaFX, so why can’t there be a convergence of those two? But, Java will now support closures in Java 7 so the flight away from Java to a new land that supports such isn’t necessary.
    I have to agree, Java and JDK are still inevitable.

  13. Rick says:

    JavaFX is pretty much DOA, so I’m not sure why anybody brings that up. All the rest of the JVM languages have their own warts that preclude them ever gaining significant traction….except maybe static Groovy which just entered alpha status.

  14. anony mouse says:

    Scala is far too complex as a language and doesn’t bring anything really new to the game. Want to write code that someone else won’t be able to easily grok? Write some Scala. Want to write code where “_” means different things in different contexts? Write some Scala. Want to write code which has the same meaning in Java but for some reason a new way was invented (see Unit vs void). Write some Scala.
    I could go on, but I’ve got some reading to do on Fan (now call Fantom). It’s more compelling as the “next Java”.

  15. Dimitris Menounos says:

    The NBL won’t be running on the JVM (sorry). C/C++ ain’t going anywhere; they will continue to dominate the desktop. On the web client the NBL was always Javascript. I can see Java there too as a player, replacing itself (!) but running out of the VM on top of Javascript via GWT.

  16. Alex says:

    @Tim – given that no one will be using Java 7 for at least a year and that Scala can interoperate with closure-aware code, I think you’re wrong that it will have any effect. I don’t think the limited closures being added are enough to keep the person that really wants features like FP, pattern matching, etc.

    @Michael – Given that I don’t do web programming (safer for all of us), I can’t imagine why I’d use JavaFX. Maybe I’m missing something but it seems fairly focused on that domain and not a general purpose language like Java. Plus who knows where it will go post-Oracle? Too soon to tell I say.

    @Rick – I don’t think “warts” are a big deal. When I started using Java it had plenty of warts. I think you are pretty cavalier in dismissing a whole group of languages that people are finding useful now. I’m not saying they’re perfect, just that they are as imperfect as every other language in common use today.

    @anony mouse – You can of course find bad Scala, just like you can find bad examples of any language out there. I have written a bunch of Scala and I can’t say any of those things annoys me (but I’ve got my own list).

  17. Alex Miller says:

    @Dimitris: Clearly you missed the point that there will be no NBL, so obviously it won’t be running on the JVM. :) I think in coming years the notion of “desktop” will continue to blur towards the web making it less important (whether you like it or not). If you assume GWT is viable, how much harder would it be to write a GWT that started from Scala or Groovy or any other language? And in that case, you can again use all those languages. If you’ve got a JVM in your browser, then you can also run all those JVM langs.

  18. Nick says:

    This discussion seems a tad theoretical without historic examples. Nothing new under the sun, probably even taking into account OSS/Internet . Any chance somebody remembers how it felt the last time there was such a Cambrian period or what we could learn from how things ended up?

  19. Prab says:

    Java won’t definitely be the next big language. It will be languages that evolve in JVM. .NET will not be the next big language because it’s only for windows (Mono isn’t production ready yet).
    I use Java. But it’s sad that Java is lagging behind. Even Java 7 is/will be missing many features that .Net provides.
    I am making this comparison based on my assumption that Java and .NET are the two most widely used languages.
    Competitors are evolving and Java is still too slow.
    I am not a Microsoft fanboy and I love Java, but after I tried both Silverlight and JavaFX, I would say Silverlight is much much better than JavaFX. Just my opinion though.

  20. Prab says:

    F# might get some attention. Has all features of FP and power of .NET.

    Any thoughts on this guys?

  21. steve says:

    My guess is, that Scala will be the next big thing.

    I guess no new language will get any marketshare comparable to C/C++, C# or Java, because of the large amount of legacy applications.

    But if I had to predict in which language new applications will be written in 5 years, my guess is Scala.

    Not because of all the fancy features (although the pattern matching is great!), but because from the POV of a Java developer, Scala is basically a superset of Java, which fixes almost all of the abhorrent design failures in Java.

    Even type erasure, which won’t be fixed because of politics, has been made a bit more bearable, because the compiler is much more intelligent.

    I even convert some of my personal projects from Java to Scala just to use the Scala compiler.

  22. Alex says:

    @Prab: I think F# is a really interesting language. The FP and concurrency aspects work together to make a really nice match for certain kinds of problems. I’m interested to see whether it gets more traction and whether people start to use it in hybrid .net apps where parts are in F# and parts in other .net-hosted languages. Microsoft is doing interesting stuff on language interop.

  23. Oldes says:

    I like REBOL. I use REBOL. I don’t care if it should be NBL or not, but I like to mention this language here as I don’t see it in your article.

  24. +1 for REBOL. I’ve never found anything else as productive – nothing close.

  25. Stan says:

    For fly-by development, this “plethora” of language choices is great. But for those that build something that is expected to last, and be maintainable, I have to agree with Mats.

    Businesses aren’t run by developer needs, they’re run by business needs. Look at how many COBOL developers there once were. Now look at the still massive amount of COBOL still in use. Finally, look at how hard it is to find people to maintain it.

    Write Scala or Groovy now, and see if it ever gets as popular as COBOL was. Now picture yourself in the future as a development manager, desperately trying to find some geek that worked with either of them for more than a year before some other bright shiny object, um, I mean new great language took their attention.

    I’ve used many languages over several decades, and one or two were in the “wow that’s neat” category, but they didn’t pan out for production work that expected longevity. We all fall into the trap, but then we grow up.

  26. Alex says:

    @Stan: Last time I checked, time-to-market and agility in a changing environment are also important business drivers and that’s what I would hope to see as the positive benefit of other languages. For that matter, I think maintainability is significantly impacted by code size and fit from language to problem and those are both significant advantages FOR maintainability with non-Java languages.

    I don’t disagree with your points. I just think it’s only part of the story and in some companies, the ability to write more code, faster, with less people (who may be harder to find admittedly) and have less code to maintain is an equation that works out for them.

    I’m betting that that equation will improve for non-Java languages in the next 5 years. And be either stagnant or not as good for Java.

  27. nicolas says:

    Those new .Net and Java langages will never fly.
    It’s for kids only, I’ve never seen a company using something else than C/C++

    ;)