Is Ruby's Decline In Popularity Permanent? (computerworld.com.au)
An anonymous reader quotes Computerworld:
Ruby has had a reputation as a user-friendly language for building web applications. But its slippage in this month's RedMonk Programming Language Rankings has raised questions about where exactly the language stands among developers these days. The twice-yearly RedMonk index ranked Ruby at eighth, the lowest position ever for the language. "Swift and now Kotlin are the obvious choices for native mobile development. Go, Rust, and others are clearer modern choices for infrastructure," said RedMonk analyst Stephen O'Grady. "The web, meanwhile, where Ruby really made its mark with Rails, is now an aggressively competitive and crowded field." Although O'Grady noted that Ruby remains "tremendously popular," participants on sites such as Hacker News and Quora have increasingly questioned whether Ruby is dying. In the Redmonk rankings, Ruby peaked at fourth place in 2013, reinforcing the perception it is in decline, if a slow one.
No.
What is Ruby?
Meanwhile, we grown-ups use Perl and C and laugh at the demise of this week's hipster language.
Now get off my lawn.
The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
See subject.
Hey kids here is a tip: Swift, Rust, whatever you are using now: they are just a fad. They are controlled typically by a single corporation. They won't last.
confirms it.
Ruby on Rails doesn't fit in as well with the new Javascript ecosystem. Compared to Node, it seems difficult to use.
That doesn't mean it will go away: it will probably adapt to the new Javascript frontend styles, and it was always complex next to PHP. As a language, Ruby is sweet with its DSL and it's harder to make type errors like you can in Python. I'll be honest, I'm not sure why Python is more popular.
"First they came for the slanderers and i said nothing."
No, Ruby is not in decline, but, yes Ruby on Rails is in decline.
gonna be Capitalism's Butt Boy, huh?
Elixir. Forget the rest.
I've talked to several of their devs about this bug, and it hasn't been fixed yet. When Ruby can't run from Windows, it will die. Sorry to say that, but Windows has nearly a fourth of the server market. I posted this question:
https://www.reddit.com/r/Puppet/comments/6kktma/puppet_apply_hangs_when_run_from_powershell_but/
And, notice no solutions have been posted.
It's pretty clear that Python's going to come out on top of the GenY/Millenial coding club. Ruby got a quick lead making Web 2.0 development easy but Python hit critical mass just by the number of available packages. Numpy, Matplotlib, etc. "How to ___ with Python" nearly always turns up a result.
And peers: No, just like COBOL and FORTRAN, C and your current $favorite_language isn't ever going to go away. I still do a lot of C, Matlab and Simulink at work. But when I have the opportunity Python is just faster due to the shear number of packages that already exist.
Unless Ruby has something new to offer then it's popularity will continue to wane and other languages will continue to displace it.
Anons need not reply. Questions end with a question mark.
When they took '.' out of the default Load Path after 1.8.7, it went downhill. The maintainers became a crazed bunch of control freaks you banned you from irc if you complained. Ruby was a nice language that made regex matching native and didn't require parentheses around function arguments, but now they're trying to reverse all those conveniences. I blame the fucktards in charge of updating the language, they didn't keep backwards compatibility and thus deserve their fate.
Ruby's good but Rails is too convoluted. It's not flat out detrimental like some of the other fads. WordPress has too large a only-learned-wordpress base in the independent "developer" community and Zend is embedded in the php mindset. Both are destructively wrong but the front end js frameworks are probably the most damaging right now. Angular was a mistaken approach with business momentum driving the continuing stench. React solves the must-be-new issue for the herd-mind and little else. Javascript on its own is okay and not going anywhere given it's developing ecosystem and no-paperwork rapid development (as long as the cool kid frameworks don't turn a 5 day job into agile Vietnam), and JQuery is great for prototyping quickly and then refactoring away. Perl is underrated but probably condemned to legacy status.
Python is fantastic and will live. C is not going anywhere. The mere mention of Java is flamebait and deservedly so.
Full disclosure: I'm a big Python fan but have yet to write it for money so YMMV. Rails and Java I've only debugged extensively. Perl and C I miss but don't seem to bump into them. Recently released from the php cesspool I'm hanging with the cool kids and node and no/mysql in the [reverb] cloud [/reverb] these days. Friends rave about Go but can't comment.
...but all the kids have moved to Node so that people only need to be good at javascript. Node is also *much* more easily scalable than Ruby, so it's just a better idea that's quicker for people to get started on.
Ruby sucks and all Rails did was bring an overactive desire for convention, which you can do literally with any other language. So if you like the idea of rails, pick a better language and runtime that isn't shit and get on with life.
Also, too, and neither, by not so old white, pole smokers.
Happiness in intelligent people is the rarest thing I know.
Ernest Hemingway
Mostly because between the two you can make a single app that works on mobile, tablet & desktop.
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
Picking languages by popularity is for non-technical management and naive developers. If that's you, then go look at the top 5 Tiobe rankings and pray your competition is just as dumb, I guess.
I noticed years ago Ruby web devs moving to JS. They were using JS on the front end and now they use it on the server.
I was using Ruby and it's DSLs Rake and RSpec up until a few months ago. I'm a DevOp and now I'm using Ansible and Python. I love Ruby. I love Ruby's syntax. I think Ruby is more advanced than Python but the industry has moved on. It's not worth the fight.
It's the only reason I became a programmer.
What am I to do if nobody thinks my programming language of choice is not popular?
Once you acknowledge this fact, it pretty much explains everything.
I guess it is a culture thing again. ... I hate its syntax.
In Germany(Europe?) there is basically no demand for Ruby.
Luckily
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Techno Psychobitch bitch is utterly terrifying hipster superset of Erlang! The real Rockstar language.
Kids be cool use Erlang reborn as OTP
http://saveie6.com/
Another great solution looking for a problem to solve.
Harrison's Postulate - "For every action there is an equal and opposite criticism"
I prefer code that I can actually SEE.
The answer is yes
I wish Crystal would pick up steam. It's super fast and all (c/golang fast), but what i love most with ruby is the meta-programming and the ruby gem ecosystem. If you could use the existing ruby gem ecosystem with Crystal, I would be all over that. https://crystal-lang.org
As far as interpreted languages are concerned, Ruby is by far my favorite. I can code in that language far faster than any other, despite having decades more with the likes of C and C++. It’s nice for quick-and-dirty prototypes and things that don’t require a lot of processing power. But for serious tasks, it’s just too damn slow. I have tried, for instance, to write parsers in Ruby because its string and array manipulation are really convenient, but for most data sources, the Ruby programs just can’t keep up. And I’m no slouch at playing “golf” with intricate Ruby expressions. What’s worse is that with the global interpreter lock, I can’t get more throughput from threading.
I’m not a huge fan of Python in terms of syntax, but although general Python code is of comparable things, Python has some tools that make it invaluable. I’m thinking specifically of sympy and numpy. Simpy is an amazing symbolic algebra library. I can’t tell you how nice it is in machine learning to be able to have it automatically compute partial derivatives of arbitrarily complex expressions. And when you can organize your data into vectors and matrices, numpy can use GPUs to get incredible throughput. This is the only reason I bothered to learn Python, and it’s one reason Python is eating Ruby’s lunch.
This is the exception to Betteridge's law of headlines (https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headlines) that proves the rule.
Absolutely.
The SUPER-HIWAY is already long dead, with AOL. Yahoo, too./ So anything on rails, or associated with rails, is something-something.
I'd have included slashdot, but that would give away my rank and name, which I am wont to do.
Capt. Obvious
Erlangs little sister Elixir is making me cheat on Ruby behind her back and I think we are going to elope in the near future. Ruby is the sweetest thing and all, but Elixir? She just never stops.
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
Maybe so but we still have all the money and that compensates for therest.
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
Ruby is kind of back where it was before the Ruby On Rails hysteria from back around 2008-2009. It's a nice language, with some niceties that I sometimes wish other languages had. In many ways, Python3 is eating much of its lunch, but at 8 on the list it's hardly unpopular. Now Swift is benefiting from being hyped, for example.
Ruby is not a real gem as some people may think.
I have learned upon the situation and reached the following conclusions:
1. Ruby pollutes the program namespace because it introduced a program called "gem". Why couldn't they call it "ruby-gem"? I don't believe they deserve to take the names of two precious stones in the /usr/bin folder.
2. Ruby on rails always makes me think of a kidnapped girl called Ruby, which is strapped to the railroad, while shouting helplessly.
Because of these reasons, Ruby is on the decline. And nothing good will happen to Ruby until those problems are resolved.
Thanks.
hemi
Is there any way to add optimization qualifiers to Ruby? I'm given to understand that it's slow because all objects can be hot-patched at runtime. For example, I have a mail server object and I can inject a web server into it at *runtime*. I suppose that if you could add a "freeze" qualifier to your class definitions then the language could be "saved" for people that want to optimize without dropping down to C; but that's always been what I've heard--Ruby for high level, rapid development, then optimize later with libraries written in C if you need them. That can lead you to a path where there's just a thin "glue" layer at the top and the glue language doesn't matter that much. I've seen stuff like this where the "glue" was plain old Bash scripts or something. 1000 lines of glue at the most, setting up pipelines, managing processes, doing backups and nightly jobs. The "heavy lifting" was C or C++. The "glue" was easier for admins to work with, but with not that much glue required, the choice of glue language wasn't that important.
I love how the tech world has nearly non stop crapped on PHP but largely left Ruby alone. While I haven't used PHP in about 8 years, I do admire the fact that most websites that use it and then grow massively, then continue to use it. While most Ruby sites that I know of dump Ruby on Rails as they cross a certain size and just can't keep it working.
I can't comment on why this is, just that I have seen it at least a dozen times on sites where the company was crossing about the 5 million in value barrier. The three complaints of the people running the companies are: Can't get truly senior programmers who will touch Ruby. Progress pretty much stops as they fight more and more with their product as performance and new functionality dries up. And usually someone within the company starts using a whole other platform to start redoing chunks of their product with results that make them angry they are so much better.
On one note, the definition of "Senior Programmer" is not someone with many years of Ruby experience, but huge amounts of experience with massive projects. The key to the definition is not just time in the business but a proven track record of putting multi million dollar projects to bed over and over. If they mention Ruby they get no interest from these types, if they don't mention Ruby then these types bugger off when they hear Ruby. But when the prospect of hiring them to replace the Ruby with a whole new foundation, they are usually very interested.
A decade ago, Ruby was hip, It is not hip, it is often an indicator of a site built by people who have never managed a site much bigger than a sub 1 million dollar company's web site (a company where the website is the company that is).
But like any halfway workable language. It seems to work fine for basic, data in and out on a website type drudgery. Thus it won't just die as there are no doubt many 30 year olds with a decade of Ruby under their belts who will insist on using their singular hammer for the rest of their careers. VB is still a thing too.
With an industry perspective like that, I can see why Ruby is on the Ropes.
Only until you really do benchmark the thing and find that with trivial changes you can get tenfold speed-ups because your code is really that stupid. And with a little thought even bigger speed-ups because, say, linear search really isn't the best search to do over and over again. This can be as simple as looking at the output of a few SQL EXPLAIN statements and adding an index. Suddenly you can do with half the hardware and drop your burn rate accordingly, which could just turn an unprofitable business profitable. It has happened.
But that reasoning of paying for hardware to ignore the software problems really only flies when you have to pay for all the hardware on the entire chain.
As soon as someone else runs (part) of the software and you're not paying for it, like in a web scenario, or software sold to customers to run there, then you suddenly aren't free to decide for them it's a better idea to pay for more hardware than to fix your damn software to, say, use decent algorithms instead of the most bogotronic you could find because that was "fastest to implement". It just means that your shop is incapable of turning out decent software in this regard. That brings up the question: In what other regards is it sub-par?
Rails is the primetime tentpole project for Ruby and it's a hideous mess. And - unlike PHP - it's a mess that doesn't work. Yeah, Ruby itself is neat and well built and well designed and all that but the stack that includes Ruby barely works compared to other solutions.
LAMP (with P for PHP) OTOH just works. Install and fire up your LAMP stack, upload your PHP files via FTP, call the URL, works. End of story. Yes, PHP is a historically grown mess, but it get's the job done and it is a very well documented mess that offers solutions for any web problem you can think of. Contrary to such blowhard tools like Ruby/Rails that pisses it's pants when you've got some wrong minor version running and need an entire extra Node installation just to handle rollout and such.
If anything will replace PHP for serverside web, it will be JS/Node or something like that. And even that is still up for debate and will need a few years to show and tell. And will probably only be able to happen if microservices and vertical + horizontal scaling become a widespread need - which actually doesn't appear to be the case.
Ruby/Rails hippsters get lost in details while the PHP folks just roll out their Drupal and WordPress balls of hair within 5 minutes, slap on a few of the bazillion plugins available, do a little PHP-style sticky-tape and chickenwire coding and then go home with a happy customer and a web-project delivered on time.
Yeah, PHP/LAMP does quite a few things wrong, but until a new PL actually copies what it does right, it will remain king of the web hill. And for good reasons too.
My 2 cents.
We suffer more in our imagination than in reality. - Seneca
The comparison to COBOL is just plain vanilla ridiculous. COBOL conservation is not a property of language, it's a property of the domain that chose that language 50 years ago.
Nothing like this happened to any other languages.
I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
for god's sake, turn around
The only message you'll ever get across is "oh lookit, another loudmouth 'merkin". That is, until you get off that high horse and learn the local language.
Ruby is fantastic for writing a-lot of code quickly. But it has terrible performance, and is has terrible maintainability characteristics (I recall doing global file system searches to find the file that defines something that my code requires, which is brought in by another require, and then another).
Performance sometimes matters. If one's app requires 20 VMs in Ruby, but only 2 VMs in Go or C++, then the cost difference can be substantial.
Also, Ruby - while 20 years old - is surprisingly immature. E.g., a few years back, I wrote a multi-threaded program in Ruby. It didn't work. After days of scratching my head, I discovered that while Ruby used native threads, it had a global interpreter lock, forcing the native threads to take turns. Maybe they have fixed this by now. My program needed true concurrency, so I had to re-write it using processes. Gosh - Java got threads working after the first two years.
Firms that really know how to maintain large codebases have also discovered that type-safe languages are very effective for maintainability. Check out this post: https://medium.freecodecamp.or... . I myself have experienced this: I once translated a fairly good sized codebase from Ruby to Java, and in the process discovered a large number of potential bugs - thanks to Java's type safety. I have found that when I refactor Java code, I introduce zero new bugs, but when changing Ruby code, the only thing that prevents new bugs is a large suite of unit tests. Thus, writing in Ruby _requires_ that one write comprehensive unit tests. I personally don't use TDD - I use ATDD, so my focus is on acceptance tests, not unit tests. Ruby _forces_ me to write unit tests. I don't want to be forced to work a certain way.
I am not bashing Ruby - I think it is great for some things - but people (like those at Google) have come to understand its shortcomings.
What would be your go-to language+framework if you wanted to build a web application + restful API that needed an ORM layer to an RDBMS? This is an honest question; I don't ask rhetorically in order to imply that RoR is still the best option. Just curious what people think is the best option in 2017 for this type of project.
This has been my biggest problem with python: Each version is different, and each version breaks different packages.
The cvs/subversion to git converter for instance. It works with Python 2.7 (and only 2.7!) but for a serious repository will take upwards of 2 days to convert, with a number of possible issues along the way that will terminate the conversion process in a non-recoverable fashion. Most of that time is wasted on file accesses. PyPy is actually must faster for the file accesses... but doesn't properly close files, leading to a crash when file handles run out. If you work around that by configuring your system to allow infinite file handle you run into other problems with the code generation not being equivalent to python 2.7 (even using the pypy2 interpreter!) and it ends up corrupting the data it is supposed to be outputting and eventually crashing.
Given this: Why would you trust python for any level of non-trivial code, when regression testing every facet of it your code may run through is nearly impossible, and the interpreters can't be guaranteed to operate the same between versions or implementations?
Wait... so we're mixing client-side and server-side now?
If you Don't Repeat Yourself, you have to write your server-side application logic in JavaScript (or in a language that compiles to JavaScript) so that your app can use provably the same logic for prevalidation on the client that it uses for authoritative validation on the server.
I can't stand Ruby and gems because updates to things are so fragile. We're dependent on a lot of libraries (through dependencies of dependencies) and if any one of them is not THE version it is supposed to be, everything breaks. Fortunately this is just our build tools (the app is using an older version of SproutCore). If it was deployment on production, we'd be totally screwed because we'd never be able to upgrade anything and would be vulnerable to security issues constantly.
NPM/node runs that same risk (the second i saw there was an "nvm" available, I knew things were going downhill), but the idea of dockers is a better way to protect one application and its version dependencies from another.
"But remember, most lynch mobs aren't this nice." (H.Simpson)
-- Joe
Here's the complete Python 3.5+ example:
Each of these things that doesn't appear in your Ruby snippet has a reason to exist:
shell=True Defaulting to not using the shell means defaulting to immunity to shell injection vulnerabilities. Python has a bit more culture of being safe by default than, say, PHP. It also means defaulting to not being quite as dependent on which shell the user prefers for interactive work, particularly on operating systems from traditions other than POSIX. encoding="utf-8" Standard output from this pipeline is a stream of bytes. Not all characters in filenames fit in one byte, and not all pipelines even produce bytes that should be interpreted as characters. This tells Python that the standard output should be decoded as characters. stdout=PIPE).stdout Sometimes you want to capture standard output and standard error; sometimes you want to let one or both pass through.constructor: notice no stupid __double_underscores__
So how do you provide both and a method called initialize? If you actually want a method called initialize, such as if you are wrapping an underlying interface containing a method called initialize, do you have to spell it instead as something like initialize_?
lack of proper string interpolation makes this clunky and tedious
How else would you go about specifying a format string in a context that differs from the context that includes the local variables, such as reading the format string from a file that lists the translations of format strings into your user's native language?
Comment removed based on user account deletion
Yes, Ruby is a very slow language. Apparently Crystal hopes to fix that. However, if nothing else it has a very fluent syntax, and the comparison with VB is just spiteful. Rails may deserve more of that type of venom, but even it has its place. Ruby can be used pretty well for simple scripts and for prototyping, and for anything that receives a trivial amount of web traffic.
PHP has come a long way to achieve respectability, considering that it took some years before it acquired the concept of classes. It's a very fast scripting language with relatively familiar ALGOL-style syntax, if a bit verbose. It's not quite as boring as Java, but the real problem is that there are a zillion people in third world countries that churn out far too much PHP code.
I started in PHP and fell in love with Ruby. I'm not particularly concerned if it's going to be useful on the day-to-day. Crystal might be a thing, or Elixir, but probably I'll end up learning Haskell and Go and then hoping that their Ruby-influenced relatives are an option. Note that your definition of 'Senior Programmer' is one I'm not particularly interested in. I mean, it might even be a good one, I just have more interest in exploring languages and environments than building something that large. Hopefully there's money in that.
Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.
Your post is a long rant of unsubstatinated premises.