||[Oct. 24th, 2008|07:48 am]
The Io programming language looks extremely interesting.
It's an ultra-minimal ultra-late-bound prototype-based object-oriented language. The minimalisim seems to scale: the example code written using the comically minimal core looks much the same as the real code found inside the tarball (e.g. OpenGL bindings). Io looks like an interesting candidate for hosting on the Cola system.
Here're a few things I find interesting about Io based on a very quick glance:
Perhaps knowledgeable readers could point out other features of interest?
- Objects are just collections of named slots and everything else is a message. To execute a method a
call object (activation record) is created that can produce the argument values on-demand, so the method can choose its own evaluation strategy. That means
if can evaluate its arguments specially whereas most code can simply evaluate left-to-right and store the values in named slots of the
call object for use during execution.
- Names are unified. Every name is resolved to a slot by depth-first search up the object-tree (parent pointers). The top-level object
Lobby includes slots with names like
Object, etc so the name search will always find these. So you don't need to distinguish the names of local variables, slots, classes, keywords, etc - these are all the same.