Day 2 - Io
Join the DZone community and get the full member experience.
Join For FreeIo is the 2nd language in Bruce Tate's Seven Languages in Seven Weeks.
Io is a prototyping language, where most of the mass exists in the
libraries. The syntax itself is refreshingly simple, and he is not
exaggerating to say you can grasp it in about 15 minutes.
As with
the other languages he discusses, there's no download/install
information save for the Io site URL. I did need a little help getting
past this stage; if you click the only "download" link at http://iolanguage.com,
you'll get a zipped distribution of the Io source. If you're smart
enough to append "/downloads" to the URL (there's no link to this from
the home page!), you'll find (in my case, Windows) binaries to spare you
the build process (I wasn't smart enough to figure this out; I found
another website which pointed me to http://iolanguage.com/downloads.)
Day
1 of Bruce's discussion of Io gets you familiar with the Io interpreter
and the process of cloning. You learn about the "slots" of an object,
which are basically the attributes and behavior. He then covers Io's
lists and collections (specifically, List and Map). I was a little surprised to get different results than Bruce did (e.g. sending the asObject message to a Map clone returns Exception: Map does not respond to 'asObject', whereas in Bruce's output it returns an Object
, though the version of Io I'm using appears to be old enough that it
certainly should be the same as Bruce's). He then discusses true, false, nil and singletons, the last of which you create by overriding an Object's clone method. The ability to override even core methods is a key to Io's potential for creating domain-specific languages.
He
finishes the "day" with an interview with Steve Dekorte, the inventor
of Io, asking him about his motivations to create the language. I
really like these interviews, as they give a (usually unavailable) view
into the mind behind and motivations for the existence of a language.
Language developers tend to be quite articulate when describing their
motivations for creating a language; how often does anyone ask them?
Day
2 covers conditionals and loops, operators and messages, as well as
message reflection and object reflection. Day 3 starts with a discussion
of a non-trivial example of a domain-specific language, then discusses
changing the language's behavior, by modifying Io's forward method (analogous to the discuss of Ruby's method_missing yesterday).
Bruce
spends the rest of the day discussing Io's support for concurrency (as a
longtime Java developer, alternative-language concurrency support is
the number-one reason I am reading this book). He describes coroutines
and contrasts them with pre-emptive multi-tasking in Java and C, then
describes Io actors and contrasts them with threads, and shows
how easy it is to make an object an actor. Concluding the concurrency
segment is a discussion of Io futures.
As with Ruby on Day 1,
Bruce ends the discussion of Io with a list of strengths and weaknesses,
and as with Ruby, he puts a lot of thought into this discussion. I'll
repeat that I am only scratching the surface by covering this "week" in
one day (while recognizing that even one week would be scratching the
surface), but I really appreciate the compactness of these segments and
the density of information contained in them.
Opinions expressed by DZone contributors are their own.
Comments