Neither JavaScript nor Ruby will the be the "next big lanuage".
Posted on Sunday, July 22, 2007 at 8:00 AM.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.








