Some months ago I found a book of the Pragmatic Bookshelf which seemed intriguing to me: Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages by Bruce A. Tate.
I say that it was intriguing, because I had read not long before a very interesting essay by Peter Norvig entitled Teach Yourself Programming in Ten Years were he is very critical of the current tendency to be in a rush for learning any new skill and mostly for computer programming languages.
Since I was very much persuaded by P. Norvig’s arguments, the 7li7w book upset me a little bit: I am a big fan of the Pragmatic Programmers and I couldn’t believe that they were going this road!
But I finally picked the book and went through quickly and found it very appealing. B. Tate, the author is very clear from the beginning: you can not pretend to learn all those languages in a week each. The goal of the book is to present the things that make each one of these languages interesting (the paradigms, the typing, etc.) and make the reader feel the strengths and weaknesses of each one of them.
Unfortunately, I didn’t go further on the exploration and I forgot about the book.
Several weeks ago, I found the book unexpectedly looking at me and I decided to give it a try.
The first chapter about Ruby went smoothly. I have been using Python since early 2000 and last year I played a little bit with Squeak, a version of Smalltalk. I find Ruby to be somewhere in the middle of these two languages.
When I started the chapter on Io, I realized that I had to stretch my neurons a little bit more. I started to fear that the motivation could disappear soon, so I asked for help. I e-mailed Emmanuel Christophe (a former work colleague with whom we have sometimes fun together programming and talking about crazy ideas) in order to ask him to monitor my work on the book.
As I should have expected, he proposed to join me since he also had started to read the book and never finished.
So we did Io, Prolog and we are now on Scala. The source code of our project is hosted on bitbucket and available for anyone who may be interested.