TITLE: Ruby Friday AUTHOR: Eugene Wallingford DATE: September 23, 2005 7:26 PM DESC: After writing about Scheme, I will now give you some Ruby pointers, two of which are fun and two of which are educational. ----- BODY: I have written about Scheme my last two times out, so I figured I should give some love to another of my favorite languages. Like many folks these days, I am a big fan of Ruby. I took a Ruby tutorial at OOPSLA several years ago from Dave Thomas and Andy Hunt, author of the already-classic Programming Ruby. At the time, the only Ruby interpreter I could find for Mac OS 9 was a port written by a Japanese programmer, almost of whose documentation was written in, you guessed, Japanese. But I made it run and learned how to be functional in Ruby within a few hours. That told me something about the language. (Recalling these tutorial reminds me of two things. One, Dave and Andy give a great tutorial. If you get the chance, learn from them in person. The same can be sai for many OOPSLA tutorials. Two, thank you, Apple, for OS X as a Unix -- and for shipping it with such a nice collction of programming tools.)
  • If you want to augment the Pragmatic Programmers' guide to Ruby, check out Why's (Poignant) Guide to Ruby. You can learn Ruby there, plus quite a bit on programming more generally. You could have some fun, too.
  • Unlike many dynamic language fans, I like Java just fine. I can enjoy programming in Java, but there is no question that it gets in my way more than a language like Scheme or Ruby. Still, I feel compelled to share this opportunity to improve your geekware collection:
    Java Rehabilitation Clinic
    Thanks to the magic of CafePress.com, you can buy a variety of merchandise in the Java Rehab line. But why?
    Java coding need not be a life-long debilitation. With the proper treatment, and a copy of Programming Ruby, you can return to a life of happy, productive software development.

    So, give yourself over to a higher power! Learn Ruby...

    Just imagine how much more fun Java would be if it gave itself over to the higher power of higher-order procedures...
  • Finally, a little Ruby on Ruby. Check out Sam Ruby's talk, The Case for Dynamic Languages. Sam uses Ruby to illustrate his argument that the distinction between system languages and scripting languages is slowly shrinking, as the languages we use everyday become more dynamic. Along the way, he shows the power of several ideas that have entered mainstream programming parlance only in the last decade, among them closures and higher-order procedures in the form of blocks. But my favorite part of Sam's talk is his sub-title:
    Reinventing Smalltalk, one decade at a time
    Paul Graham says that we are reinventing Lisp, and he has a strong case. With either language as a target, the lives of programmers can only get better. The real question is whether objects as abstractions ultimately displace functions as the starting level of abstraction for the program. Another question, perhaps more important, is whether the language-as-environment can ever displace the minimalism of the scripting language as the programmer's preferred habitat. I have a hunch that the answer to both questions will be the same. -----