The Ioke programming language

Ola Bini just released the latest version of his Ioke programming language, Ioke S, and I’m having a blast using it. Late last year I started playing around with Clojure, which is a ridiculously promising language with a compelling feature set that you should absolutely check out if you’re interested in the future of Lisps either on the JVM or off it. (I should mention that Stuart Halloway’s Programming Clojure has been my trusty and helpful guide in this endeavor; recommended.)

But as for me, Ioke has stolen my heart: it possesses the syntactic simplicity characteristic of homoiconic languages (and hence the power of macros) paired with the developer-friendly attitude you’d expect from someone who’s spent a lot of time with Ruby.

(I should note at this point that, although Ioke is deeply inspired by Io and Smalltalk, my experience with those languages is limited strictly to reading their code samples. Render unto them all due credit and so forth. I’ve spent much more time with Ruby and to a lesser extent Lisp derivatives.)

It isn’t the fastest JVM-hosted language by any stretch of the imagination, and it doesn’t (yet) have the most compelling feature set. But it’s a lot of what I love about Ruby without any of the syntactic drama, which, with a few wrinkles, is more or less a good thing. And in true open-source style, it’s evolving live, in front of the world, and it’s got a great dev community hacking away on it if you’re looking for something to contribute to.

If I had to point to just one thing that I love about it, ISpec is Ola’s RSpec -inspired BDD testing framework included with the Ioke distribution as one of the first core libraries written entirely in Ioke. Three great things:

  • Message-style chained calls mean that it’s absolutely gorgeous to read.
  • That same philosophy means that its internal semantics are much, much simpler than RSpec’s, which means that it’s easier to extend. I’m working on adding a mocking framework to it, and tacking “should receive” onto the existing infrastructure was close to trivial.
  • ISpec’s code documentation library, Dokgen, integrates seamlessly with the code and ISpec to produce API docs that tie directly into the specs. Go browse Ioke’s API and you’ll see the tests that map to a particular method tied directly into its documentation. I believe strongly in testing the dickens out of your code, and to see the live specified behavior tied directly to method documentation is just awesome.

Stop by the website or the mailing list and let Ola know what you think.

Refactoring A Strange Codebase

The Way I Pair