Visiting the Future in Io

So seven weeks might be a bit optimistic.  I spent the greater part of a week trying (unsuccessfully) to get Io to compile on my Ubuntu box.  The intricacies of compiling C code from source have been one of many obstacles that have kept me away from contributing from open source.  I haven't had any luck before and Io was no exception.

Eventually however I stumbled across the windows binaries and gratefully dual booted into my Windows 7 partition.  The binaries gleefully worked on the first try.  Io was a very nifty language once I finally got to use it.  Slots, terminology I had actually heard first from a Java library, make up an object.  Objects are just collections of slots.  Slots contain objects.  Confused yet?

It isn't confusing if you know Io's cousin, Javascript, already.  Both languages are prototype languages, they don't use classes but merely clone existing objects for inheritance.  Objects are basically hashes (i.e. dictionary).  In Io everything is an object including methods.

Io has some interesting behavior, particularly in relation to concurrency.  Instead of the pre-emptive multitasking I'm used to in Java, Io goes for coroutines instead that politely pass execution from one to another.  Two currency constructs, one I'd heard of and another foreign, are also extremely easy to implement in Io.  Actors, the known, are simply instated by send an asynchronous message to an object (messages are basically method calls).  The unknown was a construct known as Futures.  These are simple objects from most perspectives, the difference being that a Futures value is filled by an asynchronous call.  If you try to access the object before the call finishes, you automatically block execution while you wait.  All of this behavior is baked into the object, no extra code required to access the value.

I've already started digging into Prolog and I hope to give you some idea of what I find soon.  Hopefully my seven weeks in theory won't double in practice.