Monday, July 25, 2011

Regarding Lana

I know Jim from working at Broadsword, and yes, he does like to invent languages and this one seems to be quite good so far. Just like me, he seems to have started out on a project and headed off in whatever direction his requirements drag him (at least that's why I suspect he added GC) and he's generating a language that looks up to scratch for general scripting work. But my mind keeps wandering off into what else is possible, especially in light of the last couple of years of experience I've had within my profession.

A language that provides virtually the same benefits as python or ruby, but small enough to run on a games machine (which is what Lana looks like to me) is very welcome, but my brain has been mulling over the possibility of a new language. I've been thinking about a low level language, one deeply entrenched in promoting the right way to develop software given the features of modern hardware. One driven by the fact of a future with thousands of cores at our disposal, driven by the need for cache coherency, driven by the possibility of reconfigurable computing on a high bandwidth vector machine architectures.

The basics for me seem to be, data descriptions, data stores, streams, and functions on streams. Obviously I've not fleshed this out in any detail yet, but from my experience of tearing down and refactoring code into a data oriented approach: there is little else to programming than having data and transforming it into other data. To this end, the shader architecture seems perfect for building upon to start this new language. The only shortfall I can see immediately is support for branchy data such as XML files or other hierarchical data formats. If you were only allowed to use shaders from now on, how would you parse an XML file?

1 comment:

Funcan said...

Given that SMP systems are slowly starting ot look more and more like clusters, I'd say design a language that doesn't require cache consistency (also means you can use it transparently across the PCIe bus, e.g. GP-GPU physics etc)?