Of all of the questions we receive at RedMonk, one of the most common concerns programming languages. Specifically, what is a given language’s trajectory? Is it going up or down? The answer to which is met, typically, by two follow up questions: first, what are the reasons for that direction, and second, can it be meaningfully changed?
Recently, we’ve received several such inquiries around Ruby. For those with an interest in the language, then, the following is a quick public summary of the answers we’ve been providing privately.
The backstory of Ruby is generally well known at this point. Created by “Matz” Matsumoto and first released publicly in 1995, it was a distinct language because of its emphasis on the developer. It was syntactically clean, so well designed in fact that you could guess the structure and be right the majority of the time. Speed was not a strength, but Moore’s law was making that less of a concern every day.
Ten years after the release of Ruby came the first drop of Ruby on Rails, an MVC web framework extracted from the product Basecamp. Rails revolutionized web development by making the generation of aesthetically attractive website scaffolds essentially a push button activity requiring minimal effort.
If we compare Python and Ruby, for example, the relative differences in performance are startling.
Here’s Ruby vs Python in the percentage of Stack Overflow questions per month.
And here’s Ruby vs Python over the last two years in Wikipedia traffic.
The good news for Ruby is that the rate of decline is slow; assuming no acceleration to its current trajectory, the language will sustain mainstream relevance for years to come. But the fact that the language is in decline is difficult to argue with. The question is why?
Taken in the aggregate, however, the picture painted is one of a popular, well designed language that lacks clear engines and avenues for new growth. What Ruby needs, therefore, if the goal is to reverse its current trajectory, is projects that inspire new adoption. Focus on performance and scale are important, of course, but altering a reputation is difficult and time consuming. The more likely short term impact would come from a Ruby project or projects experiencing explosive growth. Programming language adoption is rarely a function of the language itself, remember: it’s more typically led by frameworks or other similar projects. Finding the next Rails or Node.js is easier said than done, of course, but it’s the clearest pathway Ruby has towards becoming a contender for the top spots on our rankings again.
If that doesn’t happen, however, Ruby fans can take comfort in the fact that they’ve already achieved levels of popularity that very few languages have or ever will.
Disclosure: Engine Yard and Heroku are RedMonk customers.
Redmonk：Ruby 在缓慢衰落，缺少爆发点是关键 | News Pod says:
December 18, 2017 at 10:48 am
December 20, 2017 at 12:38 am
I’ve found Crystal has done a good job of creating something similar to ruby but filling in missing pieces where ruby falls short (concurrency, compile to single binary, inferred typing, speed) – https://crystal-lang.org/
December 20, 2017 at 7:43 am
But Crystal is not where near ready yet, from compiler, tools, documentation, its whole ecosystem, frameworks, etc. It has the potential, I guess at the moment it is limited by resources.
I really wish Crystal take off.
Michael Groß says:
March 16, 2018 at 3:46 am
After programming in Ruby in 2011 and programming in Java since then the language caught my interest again. Main reason is that I need a script language in addition to Java and to replace shell scripts (bash).
I found that Ruby has two interesting features:
A. It looks like a best of shell script and Java. While working with strings and complex logic is easier in Ruby than with the bash (for me) the concepts of object orientation (e.g. how to define a class) are very similar to Java. This makes it easy for me to switch from bash or Java to Ruby and back.
B. Ruby has a almost up-to-date Java runtime AND a command-line interpreter. Grovvy has a Java runtime but no command-line interpreter. Python has a command-line interpreter but no Java runtime for Python 3.
Python seems to have the advantage of a bigger community over ruby. But Ruby seems to be nicer as language over Python TO ME. (Both languages are great.)
From that point I I don’t understand – but am willing to learn – why Ruby is not so popular. Does someone know why?