October 11, 2006 — jao

I’ve mentioned Self, the flagship of prototype based programming, a couple of times before. Not that i have, right now, much more to say about this very interesting paradigm and this particular implementation, which its creators describe (better than i could) in the following terms:

The Self system attempts to integrate intellectual and non-intellectual aspects of programming to create an overall experience. The language semantics, user interface, and implementation each help create this integrated experience. The language semantics embed the programmer in a uniform world of simple ob jects that can be modified without appealing to definitions of abstractions. In a similar way, the graphical interface puts the user into a uniform world of tangible objects that can be directly manipulated and changed without switching modes. The implementation strives to support the world-of-objects illusion by minimizing perceptible pauses and by providing true source-level semantics without sac rificing performance. As a side benefit, it encourages factoring. Although we see areas that fall short of the vision, on the whole, the language, interface, and im plementation conspire so that the Self programmer lives and acts in a consistent and malleable world of objects. (From Programming as an Experience: The Inspiration for Self)

(If you prefer a less heady introduction, this video is a delightful alternative, and there’s also the Self tutorial.)

Chances are, however, that i will have more to say about Self in the near future, for i’ve just made a pleasant discovery. Self was developed at Sun during the late eighties and nineties, and last time i looked there was a 2004 version available for PowerPC. But the Self group seemed dissolved, and i got the impression that the coming of Intel Macs would see the end of its development. Well, as is often the case, i was wrong! As recently as June this same year, a new Self 4.3 was available for download, for both PowerPC and Intel Mac. Admittedly, it looks a bit outdated and changes in this version are less than earth-shakening, but it’s still great to experiment and healthily bend your mind for a while.

The ideas behind Self are worth investigating too. For instance, you’ll find in the demo image a Smalltalk interpreter, and there’s much to be learned about the compiler’s implementation or the still on-going (latest release was this august) project of writing a metacircular virtual machine, aptly christened The Klein Metacircular VM. Finally, those of you on Linux or Windows can give a try to Self/x86, although i’m afraid this one looks might be abandoned by now. On the other hand, it’s Free Software, so any sufficiently motivated gal or guy can jump into the wagon! I’m sure it would make for an awesome learning experience.