Yakov Fain, a Java & Flash/Flex guru, notes that Ruby is climbing up the Tiobe Index and spends some time looking into why this this is the case.
I like Ruby but I don’t see it becoming a mainstream language soon. The biggest strength of Ruby–the OO nature of the language and some of its cooler constructs–are its greatest weakness. Consider continuations, for example. How many people in the world would know how to implement something with continuations without screwing up?
By definition, the vast majority of developers out there have average skills. They need tools and programming models that are safe more than they are powerful. We learned this in spades at Allaire. ColdFusion became one of the most widely used Web development platforms because it created a rubber room where hackers, non-professional programmers and many others could build apps without the thinking too hard. Were they the best architected, most scalable apps? Absolutely not. But they came out quickly and they worked. (Hey, MySpace was built on ColdFusion initially and it served them well.)
If Ruby becomes more popular, it’ll be in the way C++ came to power. Lots of C developers started playing with C++. Initially, they wrote bad code and made all the mistakes of beginning OO programmers. Expect to see lots of people say they are Ruby programmers w/o actually taking advantage of what makes Ruby a great programming language.
Pingback: Flying Upside Down » The trouble with Ruby
Pingback: whateverblog. » Blog Archive » Re: The Trouble with Ruby
I replied with a long post in my blog, but here’s one more thought. The single language feature that most distinguishes Ruby from other mainstream general purpose programming languages is closures. It’s the source of much of Ruby’s expressiveness and power, but also the biggest source of initial confusion among newbies.
C# 2.0 introduced closures, although you could still pretty much ignore them if you wanted to. With C# 3.0, you won’t be able to turn around without bumping into closures, as lambda expressions are the linchpin of LINQ. Once people get used to lambda expressions, Java will be in trouble–it’ll feel like going back to training wheels to go from C# 3.0 to Java 1.6 (or whatever is next for Java).
It’s also worth noting that C# 2.0 added iterators, which are a limited form of continuations/coroutines. Sure, they were confusing for the average programmer, but for library designers who are writing e.g. parsers, they are a godsend.
http://pluralsight.com/blogs/dbox/archive/2005/04/17/7467.aspx