4 ms·
The Io language is elegant both to program in and in the way the design is built up from simple parts. In fact it was my first introduction to dynamic typing a
by phaedrus 5y ago
The Io language is elegant both to program in and in the way the design is built up from simple parts. In fact it was my first introduction to dynamic typing after many years programming in C++, C#, and (various) BASIC(s).
Io allows you to write only and exactly what you meant with the least amount of non-essential complexity of any dynamically typed language I know. The lazy evaluation also allows you to take full advantage of code is data / data is code. That sounds like LISP, but whereas there the primitive is the list, in Io the primitive is the message.
My experience trying to write a larger project (a game, never finished) in Io was that it allowed me to make enormous progress initially, but suddenly reached a point in size of the project where the lack of static checking was (IMO) impeding my progress more than the elegance of the language was helping it.
(I also realized at that point I needed to re-implement some things in C++ for performance reasons, not because of Io per se but just because some things needed to be on the "native" side of the fence because things they touched also were.)
When I reached this point in the project, I found there was no clear path to translating what I'd developed into a static language (C++) because many of the ideas and systems I'd created in Io simply couldn't be expressed in C++ - or they made no sense there.
For example I'd created an embedded DSL (something Io excels at) for a data definition of the game objects. When I tried mindlessly converting these Io prototypes into C++ classes, they not only became too verbose they also lost all of the semantics of prototypical inheritance where "take a copy of another thing and tweak it" was my means of building up game objects by incremental refinement.
- dognotdog 5y agoIo was fantastic as a personal learning vehicle, over ten years ago. I did have a game project that used it, right in the lull where Lua’s FFI was still a little rough and JS did not quite break out of the browser. Its simplicity also made it great to write an interpreter for, including GC. However, nowadays the focus shifted to JIT, mostly via LLVM, which leaves such free-form languages unable to compete on performance, without significant effort. I do fondly remember the endless explorative chats with Steve Dekorte and the other language geeks on IRC!
- quag 5y agoI also fondly remember those times.
- stevedekorte 5y agoMe too.
- IridiumFX 5y ago
- ir193 5y agocould you explain what does "free-form languages" mean? wiki tells me C/C++ is "free form"
- dognotdog 5y agoI think "dynamic and introspective" would have been more precise, as opposed to "free form" grammars.
- r-w 5y ago> When I reached this point in the project, I found there was no clear path to translating what I'd developed into a static language (C++) because many of the ideas and systems I'd created in Io simply couldn't be expressed in C++ - or they made no sense there. I’ve had a very similar experience with Haskell.