Can Ruby Survive Another 25 Years? (techradar.com)
TechRadar marked the 25th anniversary of the Ruby programming language by writing "there are still questions over whether it can survive another 25 years."
The popularity of the Ruby language has been bolstered for many years by the success of the Ruby on Rails (RoR) web application framework which dominated the web scene, particularly among startups who wanted something that deal with much of the heavy lifting... But RoR, although popular, isn't the superstar that it was and It has faced fierce competition as issues such as scaling have become a greater concern for web companies. The JavaScript framework Node.js, for instance, has become popular as it requires less memory to deal with numerous connections because of its callback functions...
To improve performance further Ruby is introducing JIT (Just-In-Time) technology, which is already used by JVM and other languages. "We've created a prototype of this JIT compiler so that this year, probably on Christmas Day, Ruby 2.6 will be released," Matz confirmed. You can try the initial implementation of the MJIT compiler in the 2.6 preview1... Probably the clearest overview explanation of how MJIT works is supplied by Shannon Skipper: "With MJIT, certain Ruby YARV instructions are converted to C code and put into a .c file, which is compiled by GCC or Clang into a .so dynamic library file. The RubyVM can then use that cached, precompiled native code from the dynamic library the next time the RubyVM sees that same YARV instruction.
Ruby creator Yukihiro Matsumoto says Ruby 3.0 "has a goal of being three times faster than Ruby 2.0," and TechRadar reports that it's obvious that Matsumoto "will do anything he can to enable Ruby to survive and thrive..."
And in addition, "he's thoroughly enjoying himself doing what he does... and his outlook is quite simple: Programming is fun, he's had fun for the last 25 years making Ruby, and at the age of 52 now, he hopes that he'll get to spend the next 25 years having as much fun working on the language he dreamt up and wrote down in -- a now lost -- notebook, at the age of 17."
"We want Ruby to be the language that is around for a long time and people still use," Matsumoto tells another interviewer, "not the one people used to use."
To improve performance further Ruby is introducing JIT (Just-In-Time) technology, which is already used by JVM and other languages. "We've created a prototype of this JIT compiler so that this year, probably on Christmas Day, Ruby 2.6 will be released," Matz confirmed. You can try the initial implementation of the MJIT compiler in the 2.6 preview1... Probably the clearest overview explanation of how MJIT works is supplied by Shannon Skipper: "With MJIT, certain Ruby YARV instructions are converted to C code and put into a .c file, which is compiled by GCC or Clang into a .so dynamic library file. The RubyVM can then use that cached, precompiled native code from the dynamic library the next time the RubyVM sees that same YARV instruction.
Ruby creator Yukihiro Matsumoto says Ruby 3.0 "has a goal of being three times faster than Ruby 2.0," and TechRadar reports that it's obvious that Matsumoto "will do anything he can to enable Ruby to survive and thrive..."
And in addition, "he's thoroughly enjoying himself doing what he does... and his outlook is quite simple: Programming is fun, he's had fun for the last 25 years making Ruby, and at the age of 52 now, he hopes that he'll get to spend the next 25 years having as much fun working on the language he dreamt up and wrote down in -- a now lost -- notebook, at the age of 17."
"We want Ruby to be the language that is around for a long time and people still use," Matsumoto tells another interviewer, "not the one people used to use."
But fads go in and out. Meanwhile COBOL I heard is still popular in older enterprises. Will node.js and Rust have the same fate 10 years from now? Java seems to be declining but still is active on older software projects.
http://saveie6.com/
Event-driven I/O is a good idea. It happens that Node already has a good one because it's a web standard, and it inherits it from Chrome along with the rest of Javascript. However, event-driven I/O is easily done in C, Ruby, Python, Java, anything that supports coroutines. Many of these languages also support lambdas, anonymous blocks, and closures. Yes, even C++ has lambdas and will have futures (like closures) in the next standard. The syntax for them is sort of clunky next to Ruby.
C programmers haven't just learned about select() and poll(), they've had them for a long time. These allow them event semantics on the existing Unix I/O primitives and you can build an event I/O library on top of them.
Javascript doesn't really offer all of the desirable features of modern programming languages. After all, the goal was for it to look like C. We'll end up with a nicer language with a first-class event-driven I/O library and no native I/O.
Bruce Perens.
There is even an object-oriented version these days.
https://supportline.microfocus...
Ruby is fossilized dinosaur shit, all the olds who knew Ruby have been purged from the tech industry for being old, and none of the young techbros who get paid shittons of money for coding know anything about Ruby.
Ruby is fucking dead.
Code lasts a log time, so there will be users here and there. But, I highly doubt it will thrive. Python is gaining and has an advantage of very good interoperability with C libraries and improving overall performance thanks to projects like NumPy and the like. It's use in data science and other projects as well as in CS education will continue to help the overall implementations, Python competes in the language space that Ruby is in, and I think it does it very well, even with the issues around the 2/3 versioning. Honestly, Ruby is behind Python, and that gap is increasing.
The original advantages of Rails are disappearing. More and more of the MVC work is moving to the client side, and the server side is increasingly oriented towards just providing REST services. The amount of server generated HTML, a big part of Rails initially, is very rapidly decreasing. And while Rails is evolving, that legacy still exists. And other stacks have caught up. NoSQL make the ActiveRecord pattern much less needed for example. So, if you want raw speed in terms of time to implement, Node and the MEAN stack are really more competitive. Of course, that speed comes at a real cost and NodeJS has it own problems.
All in all, Buby faces enough challenges that will take too long to fix via language and runtime changes for its future to be vibrant. I expect it will fade in the face of Node, Python and even the resurgence of strongly typed frameworks (Java, C#, Scala) alongside newly revived languages like Erlang (and it's modern cousin Elixir) that embrace patterns for scaling that serve the whole modern web well.
There was another Slashdot story a few months ago that C was making a comeback. Now Slashdot ponders if Ruby, one of the languages that contributed to the "death" of C can make it another 25 years.
The answer is no. At least, not in the way it is now. I suspect that, like Perl and Python and other interpreted languages, Ruby will always have a little niche of users. There will always be projects that are well suited to the ease of letting your programming language do all the thinking for you, and which don't care about the performance hit. JIT, if it makes it into Ruby, will further extend this, especially for the (often rather vocal) crowd that thinks JIT is magick that makes an interpreted language just as performant as compiled. Unfortunately, there is no fairy here, and Ruby (like the ones before it) will never be a real boy.
A comment made by one of the developers of PiTiVi (an open source video editor done in Python) on the how-to-contribute page for that project actually sums up Python in general, and also extends quite well to my thoughs on Ruby and most others in the same vein:
Which is a great summation for Python, and is so applicable to Ruby as well it could have been written about it. Great for quick and dirty little tools, good for a project framework perhaps, but if you want to do serious work, go to a C library. This will always be the case. Ruby and Python and Perl and even mighty Java, they will have their niches supported by adherents who expound some aspect of their garbage collection, or ease of use, or type safety, but for the real work, people will always turn to native code. In a few years there will be some new debutant... there will always be some new debutant, bright and beautiful in that sparkling ball gown, that will draw all the ooohs and aahhhs of the boys in the crowd and which will rally the people to cry "this... THIS is the one that will kill native code dead once and for all", and yet it will never happen.
Money it it now /= money later.
In a world of the blind, the one-eyed man is king--and the two-eyed man is a heretic.
I work with Ruby (RoR) on one of my projects, and it's such a weird language. Even after almost 2 years with it, the syntax is still so quirky to me. It also has a strange mix of OO and procedural features, and the variable naming conventions are odd as well. One thing I really dislike, and maybe this is more of a Rails thing, is the minimalist culture behind it. Why are comments and documentation so discouraged? Anyway this has nothing to do with how old it is, as many languages are far older and still have tons of support. JIT compilation won't save it though because Node has already gained so much popularity and devs can now stick with a single language for the full stack (yay MEAN) or at least with the front- and back-end. Of course just like with any legacy product, Ruby will still be around in 25 years, but I don't think it will be relevant.
Ruby on Rails can survive, yes, as it is robust enough to weather the various changes that have been taking place on the system architecture
Until the gerbil chews through your bowels and drowns in your blood.
I've seen stupid fads screw up our stacks and practices also. I don't have the office politics power to stop the idiocy. I'll just enjoy the Titanic's violin music while it's above water. I bet when it sinks, the fadboys will call it a "submarine".
Table-ized A.I.
"With MJIT, certain Ruby YARV instructions are converted to C code and put into a .c file, which is compiled by GCC or Clang into a .so dynamic library file. The RubyVM can then use that cached, precompiled native code from the dynamic library the next time the RubyVM sees that same YARV instruction."
That sounds very much like Smalltalk/X to me. Will be interesting to see how well this works for Ruby. In Smalltalk/X, however, larger pieces of code were compiled ahead of time this way; the JIT compiler in Smalltalk/X to my understanding doesn't use the intermediate C route or generate .so files.
Ezekiel 23:20
Every once in a while Ruby crashes and burns when installing gems...on a system seemingly identical to another one that works fine.
Once the Ruby guys can fix that I'm sure Ruby will do fine.
Ctrl-f "RPG"
It's still doing a lot of commerce, so why shouldn't any other useful language?
They sentenced me to twenty years of boredom
https://youtu.be/2ChZ_KFY9PM?t=2m7s
I think Ruby has been overshadowed by the huge success of Python. Recently I set out to learn a new high-level interpreted language, something for easy scripting and prototyping, somewhat like the role BASIC (at least in its more advanced variants) used to fill. I was drawn to Python and Ruby. They both made a similar sales pitch, they sounded good. But which would it be?
Well, I have a friend who is already a Pythonista, and it appears to have more mindshare all around.
In all my web searches about Ruby, I kept coming up with Rails, Rails, Rails. Ruby on Rails is great for web development! Ruby is a great language for web development! (In case you all haven't guessed, web development is something I have no interest in.) And, oh yeah, Ruby can supposedly, theoretically, be used to create stand-alone applications, though we don't really talk much about that.
The other thing that irked me was Ruby pushing OOP in my face, hard. In Ruby everything is an object! EVERYTHING!! (This seems to be true in Python as well, but they don't harp on it like this.) Then I look at the Ruby tutorials, and they immediately launch into discussion of classes and objects, before even basic stuff like flow control. Well, I'm one of those crazy geezers who thinks that OOP is oversold. Sometimes useful, yes, nice to have built into a language, sure, but there's no point in messing with it just to dash off a quick script or simple little application. If I just want to say Hello World, I shouldn't have to begin by defining classes. Didn't we go through that madness already with Java? Was no lesson learned? So, I got a tutorial book on Python. Classes are covered in chapter 22, not in chapter 1. To me, that's a lot more sensible. And if I merely want to use my classes as a slightly fancier counterpart of C structs, Python doesn't judge me.
By comparison, the only really dumb thing I've encountered with Python is its ridiculous use of white space. I guess I can learn to live with that.
I'm curious, never used the Ruby ecosystem, what does it offer that others don't? If nothing, isn't it normal to go the way of the Dodo?
Tired of my customary (Score:1)
Another 25 years? Is it still alive today?
*Pokes with stick* ... ...
*quiver and groan*
Oh, alright then. Carry on.
... or about Ruby?
I didn't notice. My bad.
We also have the crystal programming language, which is pretty mature at this point (albeit still in alpha) and aims to be "slick as ruby, fast as C". My company uses it for all of our infrastructure in production.
What is the translator you used to write your comment? And what is the origina language
C has many weaknesses.
I think that i will build a new language to substitute C and it will be very nice.
Once created this new language, the migration to it from C big projects will be expensive.
On Friday a fellow engineer asked me what I thought about Crystal lang. Crystal lang is a Ruby like language that compiles down to machine code. Intrigued I took a look. That language is similar to Ruby but it has static typing which has a performance advantage. I wrote some test code. It was fast. The language itself is a little different from Ruby. What makes Ruby, in addition to syntactic sugar, are gems. Crystal's analogue are Shards. I noticed that the style of Shards is more procedural and less object oriented. This is my first impression of the language. It left me wondering what I would lose if I migrated from Ruby to Crystal lang.
I love Ruby. I love the syntax. The performance can be an issue sometimes but there are workarounds. Let's be honest, Python won the war. Python solved many problems with it's built-in types, language simplicity, and good performance. For all Ruby's syntactic sugar Python grew and dominated. There are extremely helpful Python modules that have made entire industries. Performance matters.
When I tested Crystal lang I asked myself if there was an analogue in Python. Quickly I thought of Cython. I never had a reason to use it but I was looking for compiled self contained binaries that I could use on some of my weirder systems where installing dependences is difficult. I work in the docker space so Go seemed like a good choice. With in less that an hour I was producing statically linked binaries. My code was simple so I did not have to tackled the more complicated bits but it was a good first go.
Python in Cython is still Python. Crystal lang is like Ruby with completely different modules. What Cython is doing is different from what Crystal is doing. Cython is taking Python code converting it to C which and running it in an embedded Python interpreter. Crystal is producing machine code without an interpreter which theoretically has performance advantage. The advantages of Crystal may not out weigh the advantages of Python and Cython.
I applaud what the folks at Crystal lang are doing. I may not use Crystal because it doesn't fit what I'm doing but I would love to see them grow and develop. If I need something compiled from a scripting language I would use Cython over Crystal. Win 1 for Python.
I'm given to understand that Ruby is slow in part because all objects can be "monkey patched" at run time. I've always taken it as the language where you can serve web pages from an integer if you like. 3X faster than old Ruby is still not fast, right? All the JIT in the world can't help you if there's no clean mapping from the language's objects to the machine's objects. You'd need some kind of "lock" optimization keyword in the language, and perhaps other fundamental changes.
Other posters have mentioned Python + ScyPy having a hold on the research community, with ScyPy being in Fortran not C. C got the *restrict* keyword relatively recently so it could optimize aliasing. Fortran has been restrict by default all along, so I suspect ScyPy is built in Fortran in part because people who work with it are used to faster aliasing assumptions.
I'm willing to wager that Ruby is still pretty far behind in all of that. It had a "just throw more hardware at it" mentality from the very beginning, and is only going to survive in areas where people can be convinced that it's easier and cheaper to do that.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Ruby creator Yukihiro Matsumoto says Ruby 3.0 "has a goal of being three times faster than Ruby 2.0,"
Yukihiro. You know that's not really how version number work - riight?
It must have been something you assimilated. . . .
I use Ruby every day to run my blog and business. It looks like The fastest way to do things. I don't see why it will fall
There's no definitive mechanism, or even definition for language extinction. They simply become unpopular.
What really happens is that the evolution of the language slows down until it stops completely. The language stops being taught in schools. The practitioners thin down until they occupy offbeat pockets that can sustain them.
I mean, name one single computing language, that is completely extinct. 100% for certain. There are no developers, no code being written (don't forget hobbyists), no legacy applications. Not even in the various computer museums.
About a year ago I watched a series of videos. They concerned bringing an ancient Xerox Alto system back online. Someone always has an interest, even if it is mainly historical and to understand how our current tech platforms came to be.
JQP? I think it is safe to say that -- with all due respect -- you were a ripe bastard back a few years ago. But I just read a solid handful of your most recent posts, and they are considered, intelligent, articulate... really, really good stuff. Thank you!
And, BTW, Ruby totally rocks. Best, most expressive, most intelligently done language currently out there. (Though in a late-night fit of stupidity, I admit I had cause to mourn the decision to use '=' for both assignment and object instantiation.)
-K