Neither JavaScript nor Ruby will the be the “next big lanuage”.

We’re beginning to enter a new era in computing. We’re rapidly leaving the days of uniprocessor systems. This has been the trend in the enterprise world for some time now. But with Intel and AMD releasing dual- and quad-core CPUs, and these CPUs being used even in low-end systems, they will soon become near-ubiquitous. Unfortunately, few of our programming languages and development platforms are truly equipped to handle the parallelism that we will be seeing on the typical desktop system in the near future.

It has been suggested that there won’t be a “next big language”. This may be the case. However, I suspect that there may be a “next big language”, and I would not be surprised if it were Erlang, or a language very similar to Erlang.

Soon enough people will come to realize that languages like Ruby and JavaScript just can’t scale on the massively-multicore systems we will likely find in nearly everyone’s desktop or laptop system. Yes, multithreaded programming with Ruby is possible, just as it is with C, C++, Java, and many other languages. But in such cases, it was tacked on as an afterthought, without any real integration with the core of the language. Erlang was designed from the ground-up to take into account concurrency and distributed systems. Thus it is very natural and easy to write highly-scalable software systems using Erlang, whereas it becomes much more of a challenge in existing languages.

I don’t believe that Ruby nor JavaScript can be retrofitted to adequately support parallelism needed to effectively use the multicore systems of the near future. Aside from the reasons above, we also can’t forget that they’re straight from the world of imperative programming. Maintaining and manipulating state is paramount. And that just doesn’t fly in the world of highly-threaded programs. So if Erlang (or a language similar in nature to it) isn’t the main language of the future, perhaps it will be a purely functional language like Haskell. With improved compiler support for automatic parallelization, it could very well allow typical programmers to write programs that essentially scale without much effort.

Maybe Ruby or JavaScript will be the languages of choice for the next couple of years. But beyond that, I don’t think either will be able to keep up. As stated earlier, we’re leaving the world that they’re suited for, and moving to a very different landscape. It’s doubtful they’ll be able to catch up.

5 Responses to “Neither JavaScript nor Ruby will the be the “next big lanuage”.”

  1. MemoryWhore Says:

    Here’s an entry I actually agree with. I think that it’s quite likely that over the next 10 years Java’s and probably eve C++’s market share will be fragmented into many competing and superior languages.

    I propose that Steve Yegges is either full of shit, or was being somewhat tongue-in-cheek.

  2. teki321 Says:

    If “big” means widely used: language doesn’t matter. Productivity is the main driving force behind the changes now. (Ruby is a cool language, but it needed Rails to get into the spotlight)

    If big means used by the big companies: Haskell is just not cost effective. “Good” languages (like Java and C#) are easy to understand by average programmers. Big companies prefer cheap programmers. They are easier to replace and they tend to be more loyal.

    We need effective multicore machines first, then it will be a problem to utilize them.

  3. albert bulawa Says:

    There may be some features of Erlang in the NBL, like the message passing concurrency model, but generally it’s going to be mostly a Java descendant.

    Mostly, but it will learn from Java’s mistakes and:
    - disallow any form of code inheritance;
    - have reified generics;
    - not have nestable exceptions;
    - not have non-static nested or anonymous classes.

    and many more improvements.

  4. Bryant Cutler Says:

    I agree with the idea that the NBL should include support for massively parallel processing, I think that for the next several years at least use of such features will be restricted to a very small niche - most applications will work fine using a single core, or two, with the OS using all the cores on the cpu to provide multitasking.

    Also, while Erlang has some cool features, it has possibly the worst syntax of any programming language, ever. It’s nearly impossible to create code that someone else can read. Python and Ruby (and even Haskell!) are way ahead in this area; I think it’ll be easier to port Erlang’s ideas to a Ruby library than Ruby’s syntax to Erlang.

  5. Arun N Kumar Says:

    I dont agree with the statement or its justifications at large. A language doesnt weigh [IMO] based on certain specific aspects like Scalability, Parallelism etc. But on a whole bunch of aspects. People do trade-off these in some cases or address it with different architectural strategies[which really helps overcome these]. It just becomes that much more easier once part of a language, but not limiting.

    It is indeed true, there wont be any big language, why? Growth. People are already talking about Java being bloated to death :). Every language evolves and gets complicated and during the process leaves behind quite a few benefits it had when we first chose it. Its a catch-22, if it doesnt evolve, it will die or restrain to certain domains due to its stunted growth [Scheme, CommonLisp, Prolog hmm…], but if it does evolve, it could die of obesity [take C++ for example]. Death in terms of popularity or being a first choice to many [there are nerdos programming in every possible thinkable language, yes even today].

    Javascript was a disaster on the server side [SSJS], but still the best bet on a browser even today. Ruby is by far the most simple dynamic language and its growing :).

    Its true, Functional Programming is the next big thing and Erlang and Haskell are promising, but they are just like their old functional cousins, limited to their intellect and tooling.

    The way I see it, what really will stay is a Platform and we will have multiple languages co-existing and collaborating. On the paradigm as well we wont have a clear winner in Functional programming, OO and Imperative Programming will still rule good.

    Platforms like .NET have been implicitly polyglot in nature from day one. Java is strong and mature platform and is now being very friendly to other languages and paradigms.

    For instance, JRuby provides both the cool dynamic language support to the Java platform but benefits the robustness, scalability and huge bunch of features that lack in Ruby’s own platform which is C based. Scala is the new FP kid out on the block by Martin Odersky, and is on top of the Java Platform. It has a good mix of FP and OO programming.

    Instead of having 10 Haskell or 10 Erlang, or even 10 Java developers trying to use their language hammer to build all kinds of apps, the world will have multiple tools JS (yes even JS), Ruby, Java, Haskell etc collaborating on a platform to build apps that are specialized by those languages. Like a JS toolkit for client apps, ruby based integration, haskell based perf oriented modules on say a java platform.

    Comments and debate welcome.

Leave a Reply

*
To protect against spam, please type the word in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word