Skip to content

Comment on Ruby 3x3: Matz, Koichi, and Tenderlove on the Future of Ruby Performance

Comments

Too little, too late.

Disclaimer: I'm a Ruby developer.

Making Ruby 3 times faster is not going to save it. It's just way, way behind the raw performance of other programming languages. Also, with the arrival of new, modern programming languages, there isn't that many productivity reasons anymore to justify the poor performance and lack of sane concurrency.

I love Ruby, the programming language, but I kind of start seeing that others haven't been idle and there are some growing ecosystems that can soon leave Ruby behind. It kind of feels like Perl back in the day: it was still a good programming language when it started losing ground.

We, Rubyists, have seen a lot of talented people leave both the Ruby and Rails core teams. You see them go to other, younger communities, making them bloom. In the meantime, the Ruby ecosystem seems stale and lacking fresh ideas.

The other problem is that there is not a single company that will throw as much money as it takes to improve the language, as happens with JavaScript, Python or PHP.

I am not trying to say that Ruby or Rails are a thing of the past and shouldn't be used. They are still great tools and put in the right hands can give your company / project huge productivity and more-than-acceptable performance. But there is a time for everything, and I think that the golden years of Ruby are gone.

Is your experience mostly web dev? Because not all areas of software are so mercurial.

Making Ruby 3 times faster is not going to save it. It's just way, way behind the raw performance of other programming languages.

Like Python? Ruby is comparable in performance.

Also, with the arrival of new, modern programming languages, there isn't that many productivity reasons anymore to justify the poor performance and lack of sane concurrency.

There is no other language that makes it as easy to write a DSL. And there are plenty of places to look for concurrency in Ruby, built right into the language. ruby-concurrency provides even more abstractions.

The other problem is that there is not a single company that will throw as much money as it takes to improve the language, as happens with JavaScript, Python or PHP.

Isn't that company Salesforce/Heroku?

I am not trying to say that Ruby or Rails are a thing of the past and shouldn't be used. They are still great tools and put in the right hands can give your company / project huge productivity and more-than-acceptable performance. But there is a time for everything, and I think that the golden years of Ruby are gone.

I disagree. There are plenty of projects written in Ruby that are still going strong. The language is just maturing and web dev is not the only thing people do with it anymore.

Like Python? Ruby is comparable in performance.

Only on a cursory glance... python has pypy, cython, greenlets, twisted, numpy/pandas/scipy, and dozens of game engines of varying quality. You can write high quality, high performance python code that fits right in with the rest of the community.

Ruby performance is a joke. It doesn't even ship with a useful memory or performance profiler, hence New Relic's existence. You're correct, it's a great DSL language, and performance shouldn't matter at that level.

The other problem is that there is not a single company that will throw as much money as it takes to improve the language, as happens with JavaScript, Python or PHP.

I don't know if this is really the reason I believe Ruby hasn't evolved as much as other languages. There are no big entities pushing big on Haskell, for example (Facebook uses it, but you don't see them driving development), but GHC evolves like crazy to support more language features, be better optimized, etc..

Isn't it fair to say that a community that loves to say "X isn't <good attribute> but it doesn't need to be!" is just showing disinterest in evolving? There will always be a point if you pat yourself on the back too much about your one big advantage, where you find yourself with increasingly less of an advantage. Your disinterest in improving caused you to stagnate and suddenly there is no advantage anymore.

At some point relative properties like "It has a very broad ecosystem" and "It's the most concise language" don't turn out to be very big advantages or no longer be true, in the case of the latter. There are other examples of this in the clique formerly known as "scripting languages". Most of them can be beaten by implementing new languages on platforms that started with less ideal languages.

Isn't it fair to say that a community that loves to say "X isn't <good attribute> but it doesn't need to be!" is just showing disinterest in evolving? There will always be a point if you pat yourself on the back too much about your one big advantage, where you find yourself with increasingly less of an advantage. Your disinterest in improving caused you to stagnate and suddenly there is no advantage anymore.

The same criticism could be leveled at Python with regard to the GIL and JIT (or lack-thereof). CPython lacks these mechanisms because Guido prefers to keep the official implementation simple. When it comes down to it, a language is based on what maintainers want to do.

The same criticism could be leveled at Python with regard to the GIL and JIT (or lack-thereof).

Absolutely. Python lacks many things and what I wrote previously is exactly what I think about Python. There are lots of flaws and the supposed advantages of Python are getting less meaningful by the month. It only gets worse when you consider the big part of the community that refuses to actually move forward. In that sense, they're worse than the Perl community, because at least the Perl programmers had to wait an eternity for their new and improved language.

Making Ruby 3 times faster is not going to save it

Adding something akin to Guilds it could give it a nice advantage if implemented nicely.

the Ruby ecosystem seems stale and lacking fresh ideas

I think that's mostly because it's not the new shiny toy what it's missing is some sort of cohesion to push it forward.

Maybe, I'm just biased but even with languages like Elixir - I keep coming back to Ruby.

I'm curious to hear your opinion on which ecosystems are likely to replace ruby. I think nodejs and some of the newer jvm langs are well positioned to do well in the web app market, but I can't see what's going to replace it for one off scripts. But then, perl is still being used by some folks for that, so maybe that's where ruby is going.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.