Beyond Ruby

I've been seeing a lot of reaction to Bruce Tate's Beyond Java; James Robertson and Sam Ruby being the latest. I haven't read the book, but I get the gist and This issue is pretty much entirely moot for me. I was at the No Fluff, Just Stuff symposium in Denver about 2 1/2 years ago, when Bruce was talking up EJB anti-patterns, Stu Halloway's session on the ins and outs of classloaders (essential knowlege given some unfortunate design decisions an Sun), and Dave Thomas' intro to Ruby for Java programmers was the most compelling session in the conference. I was talking to Alex Repenning at a DALUG meeting a few weeks later and Alex summed up what I hadn't been able to verbalize yet: "Sounds like a community in search of an alternative". The thing is that I see the same thing happening in the .NET community - lots of people that I have a lot of respect for are doing .NET to pay the bills and jumping into the Ruby world for intellectual stimulation.

Looking Sam Ruby's breakdown of Bruce's analysis of languages, I don't have much argument, though I don't understand what Bruce says about Python's lack of a killer app. When I started using Java in earnest in 1999, the main motivation was that most of the interesting work was being done in Java; if you wanted to do something, chances are, there was a library for it. Python and Perl are definitely the leaders in this area now, though Ruby is catching up quickly. Maybe the hindrance is lack of a application framework; Rails is easy in a way that Twisted and Zope aren't. Bruce's complaint about lack of uniform syntax in PHP resonates with me, but only as a novice. I've been able to adapt to the non-uniformities in C, C++, VB, Java, Perl, Python, and C# over time. I've written before that the problem for "old" languages is in assumptions about things like the size of a char or in support for XML, TCP/IP or databases (interestingly, Peter Siebel points out in Practical Common Lisp that Java made a similar assumption about character size by using 16 bit chars). Whether that's perception or reality, it is a hindrance. Sam is spot on in his statement that "byte code is probably the least of your worries...issue is likely to be the sharing of things like sessions". Similarly, garbage collection is a given in a modern language. But there are huge problems out there that popular languages don't solve well, or as well as they could; metaprogramming is one, concurrency and asynchrony are others - I use web applications like Amazon as the existence proof that session management is not enough. The Smalltalk, Erlang and Lisp/Scheme communities have done considerable work in supporting these concepts, in addition to things like session management. If a language designer is seeking to emulate Ruby, or Python, they're setting the bar too low. I'll hold up Peter Siebel as another Java luminary who's moved beyond Java... way beyond.

— Gordon Weakliem at permanent link