Programming as an Experience: The Inspiration for Self

(this paper by way of lispmeister)

    Abstract: 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 objects 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.

Featured in Sun Labs: The First Ten Years (1991-2001).

Unfortunately their website appears as a black hole if you have TCP Explicit Congestion Notification enabled. This is the default with Linux 2.6, but you can disable it with:

echo 0 > /proc/sys/net/ipv4/tcp_ecn

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Self 4.2

...runs on Mac OS X quite nicely.

One thing that Smalltalk and Self are big on that I think is missing from most object-oriented development environments is direct manipulation: you really do poke around at visual representations of objects; you really do refactor by copying/moving slots/methods around and drawing lines attaching one thing to another. Interface Builder for Mac OS X is clearly inspired by this approach, but it only goes so far. Self is the real deal.