Log in

No account? Create an account
Io - Luke's Weblog [entries|archive|friends|userinfo]
Luke Gorrie

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Io [Oct. 24th, 2008|07:48 am]
Luke Gorrie
[Tags|, ]

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:

  • 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 if, 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.
Perhaps knowledgeable readers could point out other features of interest?

[User Picture]From: graydon
2008-10-24 06:28 pm (UTC)
I'd highlight its tasty little coroutine system. Also I bet you'll enjoy iol4.
(Reply) (Thread)
[User Picture]From: lukego
2008-10-24 08:44 pm (UTC)
I'm in a very privileged position at the moment: I just asked Alan Kay what he thinks of letting the receiver of a message choose how/when/if the message's arguments are evaluated. He's strongly in favour and said that some Lisps had FEXPR variants that worked the same way (controlling evaluation with sane scoping) and it's a shame that macros as we know them won out in Common Lisp. He suggesting rereading what The Early History of Smalltalk has to say about Smalltalk-72, his personal favourite of the Smalltalk family.

Takashi Yamamiya dug up a copy of a Smalltalk-72 implementation on top of Squeak for me too.

Great working environment hereabouts :-)
(Reply) (Thread)