in which we watch while a veritable tower of babel is constructed

This week I was lucky enough to attend the Emerging Languages conference, a special event nestled snugly in a corner of O'Reilly's OSCON open source conference. Emerging Languages brought together language designers and implementors together to share the things that made their languages unique and to cross-pollinate ideas.

Rich Hickey on Pods

The presentations covered a wide variety of languages. The talk on Go was interesting in that it wasn't so much about Go as about the historical heritage of Go and the languages that led to it. A lot of the interesting ideas there came out of Tony Hoare's Communicating Sequential Processes paper, which looks fascinating. The talk on Frink was a delightful romp through the esoteric and very human world of unit calculation, though the licensing issues surrounding that language rule it out for most uses. It's been a while since I've done web work, but the talk on CoffeeScript made me hope that I never have to write another line of Javascript. I also got to see Charlie present on Mirah, formerly Duby, which I've posted about before: a language that gives you low-level bytecode-equivalent output to Java but reduces the pain/verbosity by offering a more reasonable syntax and type inference.

The second day started off strong with an engaging demo of the visual Kodu language. It's unique in that it's designed to run on XBox consoles and can be programmed entirely through the controller by manipulating icons. Once again there are licensing issues and it won't run on anything but Windows or an XBox, but in this case the developers are actively working towards remedying the problem. They have clearly put a lot of thought and research into keeping it engaging especially for kids.

After this Rich Hickey presented on a Clojure feature tentatively called Pods, which are the new name for an experiment he had discussed much earlier called cells. The gist is that while transients can be a boon to performance, they introduce mutability (albeit very constrained mutability) outside the reference model. Pods separate out a very clear reference policy where you're always dealing with persistent values coming in and out, and the change happens isolated inside the pod. (I posted a link to the above photo in the Clojure IRC channel, which caused it to erupt in cries of "what are pods?" and "where's the documentation for this?"—a reminder that there are many Clojurians who feel the need to constantly stay abreast of every latest change no matter how recent.)

Another highlight of the second day was the talk on Factor, a modern cousin to Forth with an excellent compiler and nice tooling. Factor's been on my radar for a while since stack-based languages really sound like an interesting twist to language design, and everything I read about their compiler seems to indicate it's very cutting-edge and well-designed. Factor was also the only language presented I want to learn that isn't hosted on an existing VM. The demo focused on showing some the ways that Factor retains an astonishing amount of flexibility and dynamicity even though it compiles to very fast machine code. The Emacs integration via FUEL also impressed me.

There were many, many more languages presented; they came at such a rate that if you blinked you'd look up to see the presentation half-through already. On the whole this was helpful since it forced presenters to focus on a "hook" or two to get you interested enough to dig deeper rather than give an overview of features which could easily be read from a web site, but such a wild ride left everyone with a minor case of mental whiplash.

It's been a while since I've attended an event that showcased this level of energy. I hope to look forward to attending Emerging Languages 2011.

« older | 2010-07-25T05:45:24Z | newer »