3 ms·
I first encountered this language while looking at the ToC of "Seven Languages in Seven Weeks": http://pragprog.com/titles/btlang/seven-languages-in-seven-week
by limist 16y ago
I first encountered this language while looking at the ToC of "Seven Languages in Seven Weeks":
http://pragprog.com/titles/btlang/seven-languages-in-seven-weeks http://pragprog.com/titles/btlang/seven-languages-in-seven-w...
...and it was the only language I hadn't seen anything of before. Interesting mix of paradigms, and very clean syntax, at least from the little I've seen of it. If any HNers have used it for a non-trivial project, would love to hear of your experiences please.
- dasboot 16y agoI only played around with it a long time ago. Very interesting language indeed. You may also like Ioke (http://ioke.org/ http://ioke.org/) - a jvm based language that is directly inspired by Io.
- alnayyir 16y agoDoes it have all the same capabilities? Is it able to introspect into it's own code and monkey-patch like regular Io?
- bguthrie 16y agoYes. Prototype-based, and code is traversable as a data structure. Macro and monkey-patch to your heart's content. Java interop is solid.
- apgwoz 16y agoI've heard various complaints that the language is extremely slow. have you found this to be a valid concern?
- draegtun 16y agoIoke is slower than Io. Both languages probably by design will never be trail blazers I think. Here is Ioke's author view on its speed: http://olabini.com/blog/2009/01/iokes-need-for-speed/ http://olabini.com/blog/2009/01/iokes-need-for-speed/
- alnayyir 16y agoThis sounds really intriguing, thank you! I've been looking for a post-lisp for some time now, and while I find Clojure very entertaining, RH took making it a Lisp seriously. This constrains it from the complete and utter evil I can accomplish with Io.
- bguthrie 16y agoIoke is lovely. Not particularly practical, but I had a ton of fun learning and contributing to it. More friendly and approachable and (if I understand Ola correctly) explicitly macro-friendly than Io. I think of it as the ultimate DSL language. Also, fully translatable. Check out Hindi: http://github.com/olabini/ioke/blob/master/examples/multilang/hindi/account.ik http://github.com/olabini/ioke/blob/master/examples/multilan...
- richcollins 16y agoIn what ways is it more macro-friendly?
- gecko 16y agoI absolutely love it, but it at least used to be very slow, even compared to other scripting languages, and didn't offer anything really compelling that I wasn't getting out of Smalltalk.
- phaedrus 16y agoIt has gotten faster. The way I deal with the speed for games is I use it for object creation and hooking things up, and then I let C++ code in the libraries I use take care of the low level. For instance when I create a game object I use Io to create a Bullet physics object and an Irrlicht graphics object, and then I instantiate a motion state (a C++ object) that connects the two instances together. After that, when the physics object updates its position, the update feeds through to updating the graphics object without needing to touch script as a "middleman".
- draegtun 16y agoLove the language and found it quite a joy to learn and use. Written a few little scripts with it and as a learning exercise I took defunkt's ike (http://github.com/defunkt/ike http://github.com/defunkt/ike) and refactored and added features to it. However the implementation has caused me some headaches. For eg. some of the Addons have dependency issues and I could never get the VM to compile at all on my Apple Powerbook (PowerPC). Also be the VM is very slow (for an example it is slower than Ruby 1.8). But overall I came away with positive feelings about Io and I am definitely keeping my eye on it. Here is a fun FizzBuzz I wrote: for (n, 1, 100, fb := list ( if (n % 3 == 0, "Fizz"), if (n % 5 == 0, "Buzz")) select (isTrue) if (fb isEmpty, n, fb join) println )
- silentbicycle 16y agoI've found Io very interesting as well, but have never gotten it to build successfully on OpenBSD. It seems like the Io community is fairly Mac-centric, so it's probably easiest to bootstrap on OS X. Lua also does prototype-based OO* , and is quite a bit more mature (and performs better, etc.). I've been using that instead, and I'm quite happy with it. (It also plays verrrry nicely with C.) * Actually, it's more general than that - Lua has extensible semantics (via metatables). Setting up a prototype-based OO system is dead easy, and is a bit of a cliche example for how metatables can be used.
- richcollins 16y agoWe use it for Stylous: http://stylous.com/ http://stylous.com/ Io is by far my favorite language. Steve did a fantastic job of removing everything that isn't necessary from OO, leaving a simple and powerful language. The downside of using Io is that you'll end up writing a lot of libraries yourself, since there isn't a large community yet.
- phaedrus 16y agoI'm using it for scripting for a game engine. Its lazy evaluation feature allows me to define domain specific languages right inside the Io language, so for instance I've used it to implement a syntax for declaring the properties of 3d objects (shape, color, position, type, etc.) that is inspired by cascading style sheets. It performs better than I expected - when I profile the code, Io is never the main consumer of the CPU; it is always the graphics first and secondarily the physics. Occaisionally I make a mistake in my binding library that makes the binding library itself consume too much CPU, but when I fix those bugs it goes back to profiling as the script using only about 4% - 5% of my CPU budget.