James Gosling in Java Is Under No Serious Threat From PHP, Ruby or C#:
“PHP and Ruby are perfectly fine systems,” he [Gosling] continued, “but they are scripting languages and get their power through specialization: they just generate web pages. But none of them attempt any serious breadth in the application domain and they both have really serious scaling and performance problems.”
As far as I have understood PHP’s “share nothing” scalability strategy, it basically tries to “do nothing” and heavily relies on database. It works for many web based applications but not all. Well, Ruby does a bit more than web page generation, but I understand he probably meant Ruby on Rails, David Heinemeier Hansson’s baby. David responded in Pay no attention to the heathens:
Heh. I love quotes like that. You don’t even have to add commentary. Just imagine a puzzled face with raised eyebrows.
DHH — there are more software in the world than web applications, and even for web applications there is more than executing CRUD operations over relational database.
It’s a valid critique of PHP which really is just a mishmash of easy-to-use functions with very little in the way of language features. C# is just a rehash of Java. But now Ruby (or Python) offer some truly compelling ideas in language design. Not new ideas, but ideas that don’t exist in Java.
The “scripting language” epithet is a red herring. The real issue is syntax and semantical power of a language. Sure Ruby performance isn’t up to Java, but then, people used to say C++ had nothing to worry about from Java because of performance. Now consider the amount of hours that have gone into core Java development vs core Ruby development. Isn’t Ruby 2.0 supposed to have a bytecode compiler? Let’s see what the community can do before declaring that Ruby just doesn’t scale.
I don’t really buy the argument for strong-typing the Java way, and that Ruby’s dynamism makes it unsuitable for large-scale projects. At best, Java is protecting projects from bad coders. But if you have good coders why does everything need to be so damn verbose, and the object interfaces so clunky and stiff? Java is mature and enterprise-ready and has all the bells and whistles.
But there’s nothing stopping Ruby or Python from doing that… just millions of developer hours between here and there. The thing is though, if Ruby turns out to be more efficient for the 99% of projects that don’t need all the enterprise-level functionality, then the pieces will be developed here and there, and at some point it will suddenly surpass Java. Java has nowhere to go as a language.
It’s obvious here that DHH has been poking Java in the eye one two many times and Gosling is pissed off about it. Unfortunately his ire is turned towards RoR which is really nothing more than a much-needed catalyst for the Ruby language.