The Next Mainstream Programming Language

Terra Nova is not the usual place I go to get news around programming language improvements. But they linked to a great presentation from POPL 2006 by Tim Sweeney of Epic Games. Tim’s talk is called The Next Mainstream Programming Language: A Game Developer’s Perspective and it talks at great length the major issues facing game developers today. As Nate Combs at Terra Nova remarked, most of these issues are not specific to the game industry, but will likely be seen there first.

Most interesting (to me) was the issue of concurrency. Tim uses Gears of War for all his examples. Of course, Gears of War is an Xbox 360 exclusive. Xbox 360, as many of you probably know, has three hyper-threaded CPUs for a total capactiy of six hardware threads. Herb Sutter talked about this in his DDJ article The Free Lunch Is Over. Tim points out – rightly so – that “C++ is ill-equipped for concurrency”. C#, Java and VB aren’t much better. Tim conculdes that we’ll need a combination of effects-free non-imperative code (which can safely be executed in parallel) and software transactional memory (to manage parallel modifications to system state).

Tim also touches on topics of performance, modularity and reliability. And he has an eye on the practical at all times. For example, he points out that even a four times performance overhead of software transactional memory is acceptable, if it allows the code to scale to many threads.

Anyway, it’s a great read so check it out. Also, MS Research has a software transactional memory project you can download if you’re so inclined.

Comments:

Interesting stuff. I wonder if it would catch on with the "write to the metal" approach of most game devs. I could see this sort of thing catching on much better with windows devs where abstraction is everywhere. I'd like to see this built into existing languages with language extensions to C# (or others) enabled by the phoenix compiler project? Even if the languages were better equipped to deal with concurrency, we are stuck with so many libraries that don't do concurrency well. How long will we be bound by windows' single UI thread concept, which is unfortunately not resolved with WPF? Finally, I'm excited to see a bunch of C++ people saying that the future is garbage collected!! It makes sense that once you get a bunch of hardware threads (they talked of 20+ hardware threads), giving up 5% processing power would mean the gc could run all of the time and not add any latency to the apps. With our single threaded apps now, the whole app has to freeze while GC takes place.