Archive for the ‘Ruby’ Category

Lars at OSCON 2005 - On Ruby

Sunday, August 7th, 2005

Ruby: the new black, the cream in the coffee, the acid in the Koolaid

If it’s true that the right mix of illicit pharmaceuticals can alter one’s perspectives leading to new insights and ways of thinking, one might suspect a lot of folks at OSCON 2005 were dosed with Ruby. That first understanding of Ruby’s functional programming aspect is just such a mind-opening experience, bringing to mind the now twenty years gone epiphany I had when I suddenly understood recursive pattern matching algorithms in Lisp. I hope folks who have been tripping on Lisp for decades nod and welcome this new generation of Ruby programmers into their expansive way of thinking.

Lisp suffers an unfortunate history. In spite of its considerable power, it never became a dominant programming language. Good technology at the wrong time, perhaps? I first encountered Lisp in graduate school in an artificial intelligence course. I recall the thrill of its power, and the frustration at its difficulty of code maintenance. It’s not a failure of the language, it’s a failure of the tools that enable expression of the language. It think that is a major reason why Lisp never became dominant.

Another progenitor of Ruby’s more advanced features is Smalltalk. It is another very powerful elegant language that failed to capture dominance. It differs from Lisp in that it had, when introduced, a revolutionary built in integrated development environment. There was nothing else out these like it, yet it failed to sweep the planet. Was it too far out of the main stream? I believe that Smalltalk’s tight binding to its operating environment contributed significantly to sabotaging its deserved success. This, again, exemplifies the failure of the tool rather than a failure of the language.

I heard several times during Ruby track sessions at OSCON, “Syntax is important.” In each case, the presenter was showing off some elegant, yet simple way of expressing a construct that would be awkwardly verbose at best in Java or C++. Lisp and Smalltalk both have elegant, yet simple constructs, too. The syntax alone was not enough to propel these languages into ubiquity.

It takes more than clever syntax to insure the success of a language. It takes dedicated enthusiasts, a demonstration of successful projects, as well as compelling tools to draw developers. Ruby has the first in spades. Perhaps Ruby on Rails will prove to be the second. The third, through my limited view from OSCON, is not evident.

I admit, I drank the Koolaid, too. I am excited about the possibilities of Ruby to succeed where its virtual ancestors Lisp and Smalltalk did not. I sincerely hope that the community surrounding this worthy project expands enough to negotiate the path to ubiquity. Meanwhile, I’m going to sit back and enjoy the trip. Yield to the block, man.