Software Engineering discussion
date
newest »


I liked how this chapter made me think about language issues (such as concurrency), but I wasn't that interested in the IO scripts for real world use.
Yes, asking Google for IO topics is challenging. I thought I remembered some intelli-sense in an IDE showing IO as an option, so I tried searching for that to job my memory. I didn't find what I was trying to remember.


I’ve tried all Self-Study assignments, but feel like couple of them require a little more work to be considered completed.
For people like me, who don’t have much experience learning different programming languages, I’d suggest reading Guide and following examples in Tutorial that can be found on IO language web-site before reading this chapter. Then everything just comes together. Before reading a guide I, probably, felt same frustration, trying to do assignments for Day 2, that author felt when he started to learn IO. Guide and Tutorial both took only an hour or two of my time but helped a lot understanding IO and material in chapter.
To me IO seemed like a very cool language. Language grammar fits one page. It has features that I haven’t seen in other languages I know. I wish it had a little more optional syntax sugar. I don’t really know how programming languages get funding and become huge, but I wish this “underground” language (like it sounds) to find its way to the top.
These days, it takes an incredible amount of energy for a new language to get big. It needs: tangible benefit over the current leaders, broad class libraries, GUI frameworks, server-side environments, books, test environments, IDE support, build support, a debugger, performance tools, training, user communities, high-profile success cases, a pool of consultants and new programming hires, and probably about a decade of early adopter activity and probably backing by a major corporation with a huge marketing budget.
There are exceptions. Python and Ruby come to mind. It would be interesting to understand how they made it out of the herd.
There are exceptions. Python and Ruby come to mind. It would be interesting to understand how they made it out of the herd.
Install Xcode
Install Homebrew: ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
Install Io: brew install io
This was my first experience with a prototype-oriented language, which combines the notion of class and object and relies on cloning a base object to form another one, potentially for extension. It is also a minimal language, which I prefer for small tasks. I really enjoyed programming in it, and was amazed at how quickly I was able to be productive. The programming tasks went fairly well, except for the last one on Day 3. I finally managed to hack out an inelegant solution, but it only supports one key/value pair.
The problem with minimal languages is that for larger projects, they force a Domain Specific Language/Metaprogramming style, which means a large burden for the code reader. From both the Ruby chapter and this one, I think the author is overweighting the metaprogramming feature discussion.
The concurrency constructs are interesting, but the Coroutine model is one of the oldest and clumsiest forms of concurrency, not a new, innovative feature. I am not sure I totally understand Futures, but they look like a form of lazy asynchronous evaluation.
The micro-sized user base, and the trouble with googling using the term "Io" and getting the programming language for documentation and examples, are big drawbacks, but I really enjoyed playing with this language and it gave me pause to think about the pros/cons of the traditional class/object approach in object-orientation.