Includes talk about concurrency and performance topics:
Corresponding tweet for this thread:
Share link for this tweet.
Argh, I’m so behind on all the conference videos! I still have 14 tabs open from RailsConf.
I’m the same… but for books
Surely you mean 1400 and not 14, right? RIGHT?!
A bit of a hater comment incoming:
On a more general note, I never did have anything against Ruby in general, let’s make that clear from the start. I liked working with it for quick scripting, actually a lot. I can see why Mac’s Homebrew is written in Ruby.
That being said, Matsumoto in general has been very disconnected with the real world programming. I watched many interviews and he always struck me as a shy guy writing manga slash-fiction for middle-schoolers. Kill me if you must but I trust in my experience with people. He’s one of these people that “plays with technology” and then people get crazy about what he invented. One of the people who’ll naively tell you “just follow your dreams, it’s that simple!” (while likely not having to think about bills and college funds ).
It took him like 10 years to admit that having first-class baked-in parallelism and concurrency that are painless and less likely for the devs to shoot themselves in the foot with, is a good thing to have. WTF? How is this guy’s opinion on technology relevant at all? Why should he be listened to? He’s not living here on Earth where we must work for money and maintain projects for years, that’s for damn sure. He’s likely handed money because of his reputation. In the evolutionary sense, his thinking likely stagnated in his privileged positive bubble.
I moved on from Ruby (mostly from Rails though) for good 5 years now and my opinion on the topic is likely worth nothing but then again, time and distance give you perspective which IMO shouldn’t be ignored either.
So here it comes:
Ruby is worthless apart from being a very nice scripting language. It’s NOT suited for web apps (yes, even with Rails in the picture) and it’s NOT suited for any data science or algorithm coding as well.
I’d only use Ruby just as far as not having to use bash/zsh for scripting.
Sorry if this is too negative but I had to get it off my chest. Strong personal opinion that need not be respected: Ruby should just be forgotten. They can try hard emulating actors and JIT but it’s a waste of energy and a fanboyism taken to the extreme where people just forget that other technologies exist.
I agree with some of your points. But,
Ruby should just be forgotten is just not possible at all.
There is so much stuff built with ruby, you could as well be saying
Sure the language is not perfect (by a loooong shot), but since we are talking Real World/Planet Earth we both know the only way on the near future for languages like ruby is to move forward and accept it wont be perfect but can always be improved.
Yep, that’s true. We can’t eliminate it or anything, it’s just my opinion that continuing to work on Ruby is a meaningless waste of energy driven only by sentiment.
Rewriting the MRI’s core in Rust or Zig would be a more valiant effort, for example. But even that won’t help because the way Rails works just makes Ruby crawl to almost a halt so. Making a sub-set of Ruby that does away with mutability would probably have the maximum impact however.
But hey, I am getting a bit more realistic and somewhat jaded with the tribal nature of the programmers at large and I seriously am not impressed by most work these days. Especially with everyone and their dog inventing new languages left and right.
There’s creative chaos that helps us find good ideas… and then there’s this age where individualism trumps all other concerns because yeah, I am absolutely sure that person X is exactly the one who is going to figure out the perfect language exactly today. Sigh.
But yep, back on topic, I agree with your take. It’s just that what I said was partially influenced by emotion (but still stand behind what I said) – I am aware that Ruby won’t cease to be used just like that. There’s too much money and legacy involved for that to ever happen. My thesis is: Ruby is a lost cause at this point.
It’s your opinion and you are entitled to it however I think a lot of people might disagree with you… me included
I love Ruby despite its faults, it is still one of the nicest languages around. I really can’t overstate the importance of how intuitive and natural feeling a language is for users like myself.
Again I wouldn’t agree with that, and if that was the case then nobody would be using it in a ‘real world/professional’ setting, yet, time and time again we see it being used on projects like Github, Shopify, etc
Some might argue that it’s actually very connected with ‘real world’ programmers - it has always intended to be a programmers best friend after all
I don’t think following your dreams is a bad thing Dimi
Ruby has helped inspired some awesome languages - just look at Elixir, and others like Crystal and Coffeescript. If there was no Ruby, it’s possible we would never have seen Elixir…
He’s not alone there, few languages can match Erlang on that front and Erlang is so ahead of the pack because they needed those features a lot more desperately in those sectors many decades ago.
A lot of people make a good living out of programming Ruby, and for the most part they enjoy it (I would say a lot more than a lot of other languages).
It’s good to know that you have some uses for it
And I think that’s the beauty of having a number of viable languages - you can almost always find one for the task you have in mind. For you and Ruby that is scripting, for others it is web dev, for others it might be hybrid apps with RubyMotion, or frontend ones with Opal.
Ultimately everyone has different tastes and those tastes are not static - they change as we get to experience new things. I for one am very grateful to Matz and everyone involved in Ruby for making it possible for me to experience it
And I can’t overstate how little that matters when you have a job to do.
Although I can’t deny, Elixir is a bit of both and that’s why it’s a very loved language.
No correlation between both. Matz just did a few things, other people liked it and picked Ruby up to where it’s at today. Matz himself has very little to do with Ruby’s success, he’s the “visionary” who started the whole thing. That is what I’ll give to him. A lot of much more serious and professionally oriented people made Ruby succeed – not him.
Fully agreed on that and IMO it should stay that way. “Hey, look at the language that could have been so much more but at least it inspired Elixir and a few others”. That’s its role.
Yep, I concede this, although Rust is fairly close lately, and OCaml are poised to do the same after their 5.0 release in eight or so months.
Which in our real world has zero correlation with actual merit. I know at least 10 programmers who curse their lives for having to write Python but (a) they don’t have the political clout in their company to change this technical decision and (b) don’t have passion for the profession, they are just regular folks who are attracted to a lucrative profession.
Let’s not forget the adoption phases of stuff, Aston. Most people simply hop on a bandwagon. Merits were a criteria only at the start.
As a slight tangent, Rails was undeniably much better than the state of the art at the time. The world has moved on though (and I don’t only mean Phoenix; modern PHP Laravel is also quite good even if PHP itself is total meh).
Sure, I agree. But IMO (a) there’s now too many of them and (b) people hold on to nostalgia and/or the “but I don’t want to learn new language!” sentiment for far too long.
Nothing I can do about that of course, I can only point it out.
I guess we will just have to agree to disagree
But, back on topic. I’m really excited to see the core team focus on tooling.
Language server integration with RBS is a must. All tooling arround RBS in general needs a lot of love.
The “packaging” problem he mentioned is something that always bothered me too, sure global
require is convinient but I think we could have
import/export semantics like ES6.
Where I agree with @dimitarvp is that I dont have high hopes on huge performance improvements, unless async stuff like GitHub - socketry/db-postgres (https://www.youtube.com/watch?v=Y29SSOS4UOc) becomes mainstream.
Never say never Cassio - remb Java used to be a hog and look at it now
But it does matter to a lot of people, particularly evident when choice is involved - such as when a project decides to use Ruby over another language. Maybe it matters little to you, but from conversations I’ve had and witnessed, I know it matters to a lot of people
In languages, one person alone can’t do it all themselves - this is true for pretty much every language out there
When I think about what helped get Ruby off the ground and what might have helped make it popular/successful, a few key things come to mind:
- Ruby and its creators choices/design itself
- Dave Thomas writing the pickaxe book (thus making Ruby accessible to more English speakers)
- DHH creating Rails (thus proving a ‘killer app’ that allowed people to use Ruby in a substantial way in projects)
- Key players spear-heading a friendly community - eg MINSWAN (and on community platforms like the Ruby Forum - which was around long before Stack Overflow, and through conferences like Ruby Conf, which people felt part of even when not present)
- Ryan Bates and Railscasts (which made Rails very accessible)
- All the other authors, content creators, bloggers, gem-makers, newsletter-creators, etc
That’s an oversimplification, but the story is probably not too different for numerous other similar languages. I don’t think it’s fair to say Matz had little to do with Ruby’s success tho, he created it after all, and was the person that inspired most of the people that went on to do the other important key points above
That’s cool… and, Erlang (and Elixir) will keep moving forward too - perhaps the Erlang team are already working on something that we’ll need more and more a couple of decades from now
Standing still in tech is very dangerous - as our understanding and experience increases, newer/better ways of doing things are always emerging and in this space I think you really do have to keep evolving and progressing otherwise you might find you get left behind…
I was like that at one stage - and I think part of it was because I still had loads to learn and being able to do it all (web/mobile/desktop) via one language would just have made things easier. I still like the idea, but am more open and inclined to try and reach for the best tool for the job (depending on the job - some projects allow more of a compromise in some areas than others).
Wanted to end on this quote because I just wanted to highlight that what you think has merit may not be the same as what others might think, and for me at least, I think the important thing is that if something or some tool can enable people to make cool things, or better still, make the world a better place, then that’s gotta be a great thing
Hopefully we can agree on that
I’m not going to try and shift the meaning of “merit”, that’s not what I was saying.
I was saying only that actual merit, no matter what it is, plays a role only in the first phases of an innovative technology. After that, hype sets in and most people adopt the said technology due to network effects.
That was my point. Do you disagree with it?
We agree on 99% of all of this anyway, Aston. We’re only discussing opinions as far as I’m concerned and there’s no ill will.
If we say merit equals perceived ‘plus points’ or benefits, then yes but it’s important to note that these ‘merits’ are the driving force or ammunition that those ‘network effects’ rely on - so usually, in this space at least, the hype has to be grounded in some sort of reality or in some way that is meaningful to the prospective adoptee.
For tech like Erlang that could be very much about the technical aspects, for other tech, say something like React, Go, or Swift, things like who made it could compensate or mitigate them maybe being not so technically good. There are of course other reasons too, such as language design, type of tooling available, etc, but whatever it is it’s usually something that can be capitalised on to drive adoption.
For some people a language backed by a tech giant may be enough. For others it could be one that has technical prowess and powers huge systems like Whatsapp and for others it could just be that the language is ‘fun’ or nice to use - whatever it is, it’s usually something that draws that person to it or could draw that person to it.
I think groundless hype can only get you so far in the dev space because most people are at least somewhat technically minded - probably why we see so many ‘next big things’ in JS… they seem like a good idea at the time but on closer inspection or after some experience it transpires that they weren’t all that after all
We agree on this. Where I think we kind of are passing each other along the way is this: when is merit important. I am saying that it’s only important during the initial adoption phase, you are saying that it matters all the time. It’s OK to disagree on that.
But I’ll allow myself the liberty to point out that you are very positively biased. By your sound, you never “worked” in your life and always picked jobs that you liked/loved and which piqued your interest. I would also like to point out that most programmers are NOT in this group of yours.
I am mentioning this simply to draw attention to the myriad of miserable teams I knew who were struggling with legacy Rails mastodons. They didn’t seem to think Ruby or Rails have any magic in them.
So you know, we can concede that we’re both right… in our own bubbles. More often than not, I’ve seen the very ugly side of commercial programming where people started out wide-eyed optimistic and ended up jaded cynics who hate every minute of their work at no older than 25-26.
That’s correct but where we seem to have a differing assessments here is how long it takes. People eventually got sick of C++ and made Rust but it tooks DECADES. People got sick of Angular.JS and made React, but it took no less than 5-6 years.
So even though you are right – devs get tired of inefficiency and iterate further – it sadly is a very slow process.
I completely understand where you’re coming from, and it sounds like the distinction you are making is between developers who are ‘told’ what to do/work on (most hired developers) as opposed to developers who choose what to work on (most business owners/startup CTOs etc).
The second group includes people like DHH (Basecamp) and other startup entrepreneurs (like the team who created GitHub) all the way to independents who work on projects ranging from small to large (resulting in varying revenue that can, and often is, in 6 digits or more). I certainly wouldn’t say these people have ‘never worked’, hence me coming to the conclusion in the paragraph above.
I think if you fall in the first group (hired devs) you are unfortunately almost always not going to be entirely happy - because you’re not getting to decide what tech to use, how/what methodologies to use or how to architect the system, what exactly to work on etc, and you’re probably also going to be maintaining or working on stuff that someone else has made - and while it may have been put together to their exacting tastes or preferred workflow, it may not (probably will not) be to yours.
So the problem isn’t whether you are a working dev or not, it’s what type of dev you are - one that is hired to work on something (which they prob won’t completely like) to one that can choose exactly what they work on and how they work on it. There’s no surprise the latter are going to be happier and I think my best advice to anyone who falls in the initial group is to either keep looking for a job that better suits your style/tastes, or, try to move into the second group - i.e. work for yourself or try to find a position or company which better reflects your own practices or where you can work on what you want.
I really do sympathise with anyone who anyone who falls in the initial group and who is deeply unhappy with their situation, I sincerely hope things get better for you whoever you are, HUG. Life’s too short to spend on things that make you unhappy, and so I would strongly encourage you to find something that makes you happy and helps you live a more fulfilling and content life.
I think it’s inevitable that as we become more knowledgeable about stuff, people will spot problems earlier - so hopefully we won’t be stuck with bad tech for as long. Here’s hoping anyway!
I happen to agree with almost everything @dimitarvp has stated about ruby, and I’d also apply it to Python. There are older languages that did what both of those did, but significantly better, and fits in the same type of work as both of those as well, for example OCaml is a HUGE one. OCaml easily should have been what python and ruby became as it is succinct, it ‘can be’ just as magical (though thankfully the ecosystem tries to not do that stuff), it’s strongly typed so you get errors at compile-time instead of run-time, it compiles even faster than python and ruby (which yes they do compile before executing) and it can be used as a scripting language, and at worst running in its interpreter it’s still faster than python and ruby and when fully optimized compiled makes fully standalone self-running binaries of native code that is about C speed.
I don’t like python and ruby, they are both very very poorly designed, and I don’t know how they got popular when every single positive thing I’ve heard said about them also applies to OCaml and a great deal more, and yes I say this knowing python (though not ruby) very very well.
There are just so so very many design and productivity issues in python and ruby, and their users don’t see it, mainly just because they don’t seem to know any better languages in that same field. Whenever the only tool you have is a Hammer, then everything starts to look like a nail…
The amount of times I’ve experienced exceptions of code that just shouldn’t exception except purely by language faults that shouldn’t exist in python still bugs me to this day, and yes this is so fresh because I just hit another python one in a root system package on debian that bugged the tar out of me this morning… >.<
Well, after 10 years working with ruby I can assure you that I am very painfuly aware of almost everything that can go wrong on a ruby project (and, for all the good its done in the past, Rails is the number one cause of bad things happening in a project in my opinion)
But… my friends, I totally understand the dislike for ruby, or python, or js, or rust. Everyone knows the tecnical shortcommings dynamic scripting languages have, I cant simply choose to not use ruby anymore and dont care for the language future.
Given the oportunity would I rewrite everything in Elixir or F#? Absolutely!
Can I realistically expect to do so? Absolutely not !
Why not though? I’ve changed main language focus in my career like 5 times at least.
It’s tough of course, but very doable still.
Well, now I’m not sure I follow you dimi
You just pointed out that most programmers are NOT in the position to pick what they work with, and you are absolutely right.
I’m not saying that I choose ruby and wont switch because its hard for me.
Its hard for the company, we are a very small startup and have a ton of “legacy” code.