As might be guessed from my rambling on some of UnrealScript’s domain-specific features, I’m a huge fan of Tim Sweeney. His thoughts on practical language design speak to me more directly than any other thinker in that arena, and he is far better known as a 3D game designer than as a Lambda-academic.
His insights stem from real-world issues faced by developers who have licensed his Unreal Engine, and a large percentage of those problems involve developer productivity. His solutions often take the form of specialized languages designed to provide first-class support for concepts necessary but difficult for game programmers to get right, but which most main-stream languages lack. Things like state modelling and transition, concurrency, networking, and timing are given representations in the language and support in the runtime, allowing for developers to work at a higher level and with fewer defects.
Lambda the Ultimate, a language-geek blog, linked to a presentation given by Tim entitled The Next Mainstream Programming Languages: A Game Developer’s Perspective. (A commentor also found a link to a PDF version of his slides, for those of us averse to downloading random PPTs.)
I am very enamoured with his idea of framework extension (slide 26). I think this is the next major route towards true software framework re-use. Instead of being limited to the arbitrary points of extension and aggregation pre-defined by a particular library’s designer, so-called horizontal inheritence would allow us to re-define how the basic framework functions without needing to mess with the source code.
My favorite quote, from slide 38:
Factoid: C# exposes more than 10 integer-like data types, none of which are those defined by (Pythagoras, 500BC). In the future, can we get integers right?
I’ve written a bit of UnrealScript for the Unreal Tournament 2004 Explosive Ammo Mutator, and it’s a very cool experience; I think it indicates what is to come for the rest of us. Near the end of Part 4 of What Does “Web Paradigm” Mean, Anyway?, I state that true web integration requires new platforms:
We need a platform, independent of any particular application, that makes obtaining, parsing, transforming, aggregating, and forwarding XML as natural as displaying a window. Web integration needs to be a first-class citizen.
It is web-specific languages on web-specific platforms that will make this possible. While they will be tailored and tuned for web-enabled tasks instead of video games, we can still catch a glimpse of their form if we look at UnrealScript and Unreal.