Parallelism
Bjarne Stroustrup, designer of C++:
All that said, I don’t know what the next major conceptual shift will be, but I bet that it will somehow be related to the management of concurrency. As programmers, we have been notoriously bad at thinking about lots of things happening simultaneously, and soon our everyday computers will have 32 cores.
From a recent interview in Technology Review, part 1 and part 2.
In contrast, Steve Yegge points to JavaScript 2 as the Next Big Language, and admits uncertainty on this ground: (JavaScript has traditionally been single-threaded…)
Not sure about threads. I tend to think you need them, although of course they can be simulated with call/cc. I’ve also noticed that languages with poor threading support tend to use multiprocessing, which makes them more scalable across machines, since by the time you’ve set up IPC, distributing across machines isn’t much of an architectural change. But I think threads (or equivalent) are still useful. Hopefully NBL has a story here.
And then Joel Spolsky explains Google’s MapReduce using the first-class functions of JavaScript for the examples:
Lemme repeat that. By abstracting away the very concept of looping, you can implement looping any way you want, including implementing it in a way that scales nicely with extra hardware.
Is it this flexibility and expressiveness of JavaScript that will make it the next C++? There are server-side implementations of JavaScript in existence, but what about one that ran parallel optimizations as a default? Any time a standard for in loop appeared, split it out across the keys existing in the object?
The coolest thing about this whole issue is the consumer doesn’t even know. Manufacturers will still push 8-core (and greater) machines on people, but the true market for these is in servers. And it’s in servers where innovative developers can push them to the extreme, running whatever operating systems and languages that they need. Will it end up being a highly optimized JavaScript that’s the next PHP, Java, Perl, and even C++?
Update: Shortly after I posted this, Pragmatic announced their new Erlang book, which I will almost certainly need to pick up. For those not in the know, Erlang is a language specifically designed for parallel applications. What it lacks in the comforting familiarity of JavaScript’s syntax, it surely makes up for in power and potential.

You can use Markdown for style. I love hearing from readers, but please don’t hijack the discussion, use offensive language, or try to sell anything.