I’m notoriously incorrect when I make projections, but I think I may add another category named after a programming language. For a few months now I have been reading about and playing with some Ruby programs.
Ruby is an object oriented scripting language, created in 1995 by Yukihiro Matsumoto. There are a quite a few technical reasons a programmer might want to use Ruby; one of which is the Rails web application framework. Ruby on Rails is what first brought Ruby to my attention. This week my attention has been pretty squarely focused on reading an on-line programming manual. Don’t get me wrong, I generally don’t like programming manuals and technical reading in general. And I usually don’t read the manuals unless all else fails.
When I first learned Perl, I was taken by the use of the word “doohickey” in the footnote on the first page of the first chapter of the Camel Book. Clearly this was something different than the programming I had learned before this. And something about this quote from the overview just made sense to me:
Languages were first invented by humans, for the benefit of humans. In the annals of computer science, this fact has occasionally been forgotten. Since Perl was designed (loosely speaking) by an occasional linguist, it was designed to work smoothly in the same ways that natural language works smoothly. Naturally, there are many aspects to this, since natural language works well at many levels simultaneously. We could enumerate many of these linguistic principles here, but the most important principle of language design is that easy things should be easy, and hard things should be possible. (Actually, that’s two principles.) They may seem obvious to you, but many computer languages fail at one or the other.
I have written a lot of little Perl scripts since then, and even a couple of web applications. Perl got OO along the way. Perl was “different” in a lot of ways then, in the same way that Ruby is different now. What has held my attention on Ruby this week is Why.
Why is different and he may be a genius.
I don’t know, because I am pretty sure didn’t get all the subtleties of the comic panels. But they are strangely compelling. I sensed that I was going to like this guy’s work a lot, when I read this in Chapter 2:
How Books Start
Now, if you ever have read a book, you know that no book can properly start without an exorbitant amount of synergy. Yes, synergy. Maybe you didn’t know this. Synergy means that you and I are supposed to cooperate to make this a great reading experience.
We start off the book by getting along well in the Introduction. This togetherness, this synergy, propels us through the book, with me guiding you on your way. You give me a reassuring nod or snicker to indicate your progress.
I’m Peter Pan holding your hand. Come on, Wendy! Second star to the right and on till morning.
One problem here. I don’t get along well with people. I don’t hold hands very well.
So you’ve got to know that synergy doesn’t actually mean synergy in this book. I can’t do normal synergy. No, in this book, synergy means cartoon foxes. What I’m saying is: this book will be starting off with an exorbitant amount of cartoon foxes.
And so I was hooked on why’s (poignant) guide to ruby. I’ve read Chapter 3, and will begin Chapter 4 once I post this. If you are not a programmer you may want to stop at Chapter 2. If you like cartoon foxes, you may learn to be a programmer just to follow their adventures.
And be sure to read the side bars. Its not often that I find myself laughing with the author of a programming manual, but Why had me chuckling with this:
Anyone who’s written a book can tell you how easily an author is distracted by visions of grandeur. In my experience, I stop twice for each paragraph, and four times for each panel of a comic, just to envision the wealth and prosperity that this book will procure for my lifestyle.