I hereby declare victory over the Io Programming Language. It’s really a elegant language and it did in fact get me interested in learning other programming paradigms, such as functional programming, as well. I’ve learned a lot from the design of Io. At the very least that implementing a programming language doesn’t have to be that hard, even though designing one is.
People doing this are also doing these things:
Entries
I’m quite comfortable with Io now. I’ve yet to learn some of the libraries like OpenGL and stuff, but I really don’t need them right now and I probably wouldn’t do graphics programming in Io anyway. I would probably use F3 for that.’
Even though I will vote this goal as “worth doing” I must say I’m a little bit disappointed by the development of and the direction Io has taken. The Io folks have put a lot of effort into implementing support for a whole bunch of platform libraries like OpenGL and stuff. I really don’t think that is Io’s place or at least not Io’s highest priority.
Io is such a nice and elegant langauge, it can easily be implemented on pretty much any platform. I have half an implementation in Java and any day now I will pick it up again. Instead of trying to make Io into a fully featured applications language, it should instead be strictly defined and specified so that we can use Io as the base prototyping language for any situation. Take the basic Io engine, tie in a good parser generator and we would have the ultimate meta language.
Io is so simple, yet so powerful. While technically I’m still learning, a mastery of the basic semantics is enough to consider it learned since there aren’t really any exceptions.
A couple of people interviewed the inventor:
http://www.pinupgeek.com/articles/2006/07/24/io-podcast-with-steve-de-korte
I also found a movie about Self (the prototypical prototype language) which is interesting: http://www.smalltalk.org.br/movies/
Let’s say olle is a Person object.
olle fullname := method(firstname .. " " .. lastname)I was taught this at the IRC channel #io at Freenode.
It could be added to the manual part on Strings
I added it to the wikibooks wiki page on Io
I’m becoming more and more comfortable with Io. Now, whenever I think of a hack, I naturally turn to Io first, and if I can’t think of a way to do it in Io, then I turn to my native language: Java.
My latest hack is a roman to arabic numerals conversion that adds roman constants as a “data type” to Io. I can now write constants in the form 0rXXIV. I did it by adding a forward method to the Number object which will convert the roman number to a number object, like this: (conversion omitted)
Number forward := method(
mname:= call message name
if( (mname beginsWithSeq( "r" )) and ( self == 0),
romanToArabic( 0, 0, mname slice( 1 ) asUppercase ),
resend
)
)if( 0rXVII + 0rII > 0rXVIII, "success" println )
This disables the repeat and repeatTimes methods of zero (0), so I will have to add some sort of roman numeral recognition to this, but other than that it works well.
What Io really would need is some sort of macro facility so that we could control the compilation of expressions.
The mailing list is very active these days, and a while ago it was this great: “Whither true” debate.
Tobias’ and mine idea of “Should it be in the language” is this: if it’s trivial to implement it in Io, and it’s used by many folks, then it should just be in the language already.
And Io’s been getting updated, and fixed on, a lot these days.
Steve says that the online reference docs should be fixed up enough so they could go in a book. Great.
Finally, some progress on the Io front: I wrote a simple webserver today. It can only do static files and directory listings and the error handling sucks, but it works. There’s still some peculiarities I quite don’t get with the language and the environment is horrendously documented. But since the language is not even released yet, I guess I have to take it.
Anyway, I’m starting to really like the thing.
I wrote my first real program in Io this week. Fun language! I really like the way I can do unit tests directly on the prototypes. Tomorrow I will try something that is non-trivial. A web server, or something.




