Ruby is not Rails
September 18th, 2006Or, why James Gosling defines the problem
This article is actually what is prompting the creation of this blog. Every once in a while something clicks in my head: that lisp really isn’t that great (I dig ML’s static typing), that politics doesn’t make good dinner conversation, and that language popularity is defined not by how great the language is, but rather who farts loudest.
When James Gosling, the original designer of the Java language is asked if he’s actually ever tried Ruby, he responds as follows (emphasis mine):
“I guess I’d call myself moderately familiar [with Ruby]. I haven’t used it a lot. I have somewhat. As a language it’s fine. The interesting bit is the Rails framework. The Rails framework, if what you want to do fits with what the Rails framework wants to do, it’s actually pretty slick. But people use all the methodology of the Rails framework in Java all the time.”
Now, I understand that a lot of what Sun is doing with Java revolves around them being the top dog in the web/enterprise language space. In some fashion, it makes sense that other languages with up-and-coming web application frameworks and methodologies (ruby with rails, smalltalk with seaside) are sort of making folks up here sort of nervous. But, coming from a language designer, I would have expected more discussion of what he doesn’t like about Ruby and not that Rails is possible in Java. He completely disregarded the language and locked onto the framework, defending his language by arguing that a library could easily be implemented in it. Well, no offense intended sir, and I understand that you are much smarter than I am, but, well, Duh. The differences between Rails and Java don’t exist, because Rails is a a library and a philosophy, and Java is a language. Yes, there are some cool features of Ruby utilized by the Rails framework, but there are cool features in Java too, and a different set of cool features doesn’t rule out the existance or possibility of a philosophy in a library for a language. There are plenty of legitimate topics for discussion in the Java/Ruby (or Python, or Smalltalk, or Haskell, or Erlang, or, or, or) debate: static/dynamic typing and all the cruft that brings along, open classes, script vs. compiled bytecode.
What this all means is that what Mr. Gosling (and I think this is indicative of a lot of people in the big language camps) saw when he looked at Ruby wasn’t a new way to think about programming; what he saw was hype around a framework. He saw a framework that works really well and the utilizes features of a language and decided (like a lot of folks) that Rails == Ruby, and that since Rails is possible in Java, Java > Ruby.
I don’t really know where this is going, except that it sort of clicked in my head today that the popularity of a language has a lot more to do with perceived value than better design or implementation. The perceived value of big languages like Java or C# is that a) those languages are massively supported, and b) there is a lot of software being developed in them, so they must be capable. The point beinging defended here is (b). Since the philosophy that makes Rails unique is possible in Java, there must be capable of everything Ruby is.
Alright - my rant is over for now. I may have more to say on this subject later. Night everyone.