For about the first five years of its life, it was eclipsed by Perl. That's about it. I don't think anything will ever unseat Python as too many people's first and last language.
Nah, Python 2.7 got way more support than it ever deserved because people just refused to switch to 3. Hell, people were starting new python projects on 2 after 3 came out.
Yesterday I would have argued that with the rails framework Ruby is a great way to rapidly develop a scalable application. Today I started having an intermittent failure in one of my API instances and when searching about it the only thing I could find was one obscure blogpost that boiled down to “yeah sometimes Ruby Ave active record just screws up the character set off a string” exact same string, different results. Excuse me Ruby? How the fuck can you sometimes screw up a character set? There should be no sometimes to any thing here.
I like Ruby most of the time, but honestly, I'm not surprised at "sometimes" behavior from the language created by someone who, when asked for the formal definition of something in the language, said he's "not really a formal kind of guy."
I mean I've been using ActiveRecord for the last 20 ish years and I've never encountered or even heard of this bug. Sounds like you came across an especially obscure one.
I spent a few years with Ruby, and my experience is that Ruby and Rails couldn't be more different in terms of programming approach, philosophy, and nature. I don't trust Rails fully, but I do trust Ruby.
It probably wasn't a big deal when it was a niche project until Twitter imploded. Then all the public instances got overloaded with new users and the limits became obvious.
A better design is Lemmy which is written in Rust so it has far more scalability. It's compiled and because it's tokio / actix based, it can also do a lot more stuff asynchronously so it's not spawning thousands of threads to cope with concurrent requests.
As a Rails engineer with 14 years experience, I can say the place that should be in the 3rd panel is Shopify. They employ so many ruby and rails core committers and directly fund a good many rails gems, and ruby community infrastructure it's insane. They're also directly funding the development of things like the YJIT and speed enhancements to MRI itself.
Then there's all the other places I know or worked at built on Ruby where my other long tenured ruby friends work.
Ruby was recommended to me by my comparative programming languages professor. I haven't picked it up, but there were memes that this professor was so good at programming he was secretly built by the university in C++ to teach students how to write better code.
@SpaceNoodle I’ll always be sad how GitHub helped popularise centralised workflows. Such an amazing opportunity for a big cultural shift, but it didn’t go anyway as far as it could have.
@nifty I have nothing against Ruby and think it’s a nice flexible language. At the peak of RoR though, all the asshats were all over Ruby.
My problem with Ruby wasn’t even RoR, it was with the way the asshats valued creativity “cleverness” which seemed to mean writing code in the most cryptic ways possible. These folks took what should be an expressive language and wrote scripts that rivaled Perl’s worst “read once and never again” scripts.
This wasn't "creativity over code" so much as it was the tail end of y2k and all the greybeards were canned so none could teach the shiny whiz kid how to code like an adult.
Without the linus-like code review sessions, they never learned why and how to improve.
Now their kludge-bro mentality has raised a whole new generation.
And that's why people don't know not to flatpak or npm themselves into a solarwinds sploit.
How long ago? ROOT (and other frameworks like GEANT) using C++ has been the standard for over 15 years, but probably longer. I think my advisor was of the last generation that had to write in Fortran.
RoR is too much magic for me. Getting started with any new code base is such a pain that I never want to do again. As a manager, I'll avoid any job post that mentions Ruby. I have maintained projects written in Delphi, Centura, Java, C#, PHP and none of them even come close to the pain of RoR. Java and C# are notorious for ceremonial interfaces but that's nothing compared to trying to figure out RoR automagics.
Maybe in enterprises settings what you say makes sense, but for the small to medium startups I usually work for, RoR is great. It's super easy to prototype and switch lanes. If I had to do what I do in Java I'd go insane. As for Delphi....
The RoR "magic" being obtuse is extremely exaggerated most of the time and more meme than reality. If you think PHP is better, by which I guess you mean Laravel, how on earth is that less "magical"? React? Next? I'll take Ruby any day.
React can go fuck itself with a pineapple, fuck that piece of shit. Every project I've had to deal with that used React was an absurdly bloated mess because it imported fuckloads of React plugins and addons.
There is a lot of magic in Java. Try Spring Boot for example, and things magically connect together with annotations, or somehow methods get injected onto interface on the fly, or an http interface maps onto a function with parameters because the runtime is doing it. This is most evident when you set a break point in some class and there might be 4 or 5 mystery functions it passed through between it and where you thought it was calling from. Sl4j, Lombok, Hibernate are doing the same kind of thing.
I've written a non-trivial amount of Elixir. It's nice, but I wouldn't say it's like Ruby. It's more heavily functional, and it wants you to work with data in an immutable way. If you're coming from a language that doesn't force immutability, then you'll be miserable until you get your head around how to work that way.
I really like it, though. Especially now that it's getting optional typing.
Elixir is an awesome language. It takes some getting used to as it's meant to be more functional like Haskell, but it plays really nicely with big parallel workloads and is super clean to write
Don’t learn Elixir to replace Ruby. Learn it to enjoy OTP and BEAM.
I would love to join a cool company that’s willing to accept a dev that can transition fast. However, most of Elixir job listings I find are gambling or crypto. And I ain’t gonna touch those.
Facebook hasn't used PHP for a long time. They use Hack which started as a language similar to PHP, but it's very different now - it's strongly-typed and has a bunch of advanced features, like the ability to annotate functions as pure (no side effects), which gets enforced by the type checker.
Even in 2024, I say that Ruby is one of the best common languages available. While there are some weird syntax choices, and a lot of rope to hang yourself with when it comes to subjects like metaprogramming, it is a better Python than Python, in that it has a clean way to approach problems, and a simple structure to make coding clean and easy. The best part of Ruby is that its tooling is great at pushing best practices, like concise methods, good naming conventions, tests with single/aligned assertions, etc. I've taken many lessons from Ruby into other languages I use.
Rails, on the other hand, is totally different. Today, Zed Shaw's essay on Rails is as accurate as ever, in that many Rails shops have just ignored years of best practices on the web, and opt to do things their way because it's "better".
Is PHP becoming irrelevant? It still comprises the vast majority of web pages out there. Maybe that has been going down but with he amount of competing languages and systems out there, that is to be expected.
Either way, it's an awesome language, happily been using it for decades now
I'm not the one you asked, but what I like isn't really about PHP itself, but the fact that I can get dirt cheap hosting with PHP and MySQL. Every time I want to create a small "app" that makes some manual task easier it's very useful to create something I can access from the internet.
Python is really useful for stuff like that too, but (in my experience) not as easy and cheap to use as an web app.
For example I go to dinner with some friends every month and we always forget who's turn it is to choose and book a restaurant. So I just made this PHP page that shows the current and next 2 months with a name. So we always use that to see who's turn it is.
Quite early on the eyes, powerful, fast to build and rolk out projects, about. A billion libraries with all the functions you'll ever need. People both about it because it has some language quirks from way back in the beginning, I see it as stability. I don't know how node is now but I remember a few years back where every bug fix came accompanied not only by 10 new bugs but also a bunch of interface changes that immediately broke everything. Every. Single. Damn. Time.
Having said that, it under very active development and has been majorly improved over the years. Dumb design choices are no long available and right now it's quite easy to work securely with it.
Beyond the "but these two functions should have similar naming but they don't!" argument, that with a good editor doesn't matter anyway, there isn't really a good argument out there not to use it.
I worked at Shopify up until a year ago. github.com/shopify/shopify repo powers almost every inch of Shopify's infrastructure and is entirely a rails monolith. It is not the same as saying Twitter is still rails.
I wrote extensively in Ruby but for Rake - using Ruby as a build system. Can't say I liked the language although it was okay for how we used it. We have 20 sub projects with some very complex build targets and dependency scanning going on and the Rake syntax was okay. Personally I think its biggest shortcoming was the documentation was very poor and stuff like gems felt primitive compared to other package management systems. One thing I liked from the language was blocks could evaluate to a value which I really use a lot in Rust too.
I think if I were doing an acyclic dependency build system these days I'd use Gradle probably.
As for Rails I expect failed to catch on because even compared to Python, Ruby is a slow language. And Python isn't fast by any stretch. Projects that started with Rails hit the performance brick wall and moved to something else.
We had tens of thousands of lines in our rake files to build a bunch of targets, none of which were even Ruby. I think if I needed to build another complex build system that was a directed acyclic graph I think I'd use Gradle, for a several reasons - we had some Java targets so we save on an additional developer runtime, it would run faster & Gradle is more mainstream and easy to get various plugins & documentation for.
The only place I've seen ruby used extensively is in environments with a lot of regular expressions and string manipulation. Still not entirely sure why I've only seen it used there. The regex tools in ruby are nice but they aren't nice enough to justify a language switch in my opinion...
It's the part of ruby that replaced perl. For whatever eldritch horror perl was it was very, very good at doing text manipulation, and IME the only language to really match that experience was ruby.
But Cinc and its sell-out dad Chef are really great uses of ruby, keeping us from YAML hell and the kludgey socket-machine-gun that is Ansible. That piece of shit has more lithium-lick than I've ever seen.
If we can't have mgmtConfig (ohai go), at least let us keep Cinc, but it needs ruby.