Software Engineering discussion

15 views

Comments Showing 1-5 of 5 (5 new)    post a comment »
dateDown arrow    newest »

message 1: by Brad (new)

Brad (bradrubin) | 264 comments Mod
Installation on my Mac:

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.


message 2: by Erik (new)

Erik | 165 comments I like the book's pop culture references (Mary Poppins and Ferris Beuler). I'm guessing that would be less enjoyable if those references held no meaning to me, which I can see being a draw back for many readers. Future chapters may contain references I don't get either.

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.


message 3: by John (new)

John Jones | 2 comments I tried to get Io working on Windows 7 64-bit and after a couple of hours of trying to trouble shoot compiler errors, I ran out of time. Maybe the installation instructions work better on Windows XP. In addition Io appears easier to install on the Mac. Ruby was much easier to install on Windows than Io.


message 4: by Aleksander (new)

Aleksander Shtuk | 84 comments For me learning IO started with installation of Oracle VM VirtualBox to run Linux as a guest OS on Windows 7. Then I just followed instructions in README file to install IO.

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.


message 5: by Brad (new)

Brad (bradrubin) | 264 comments Mod
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.


back to top