Become a fan of Slashdot on Facebook


Forgot your password?
Ruby Programming Stats

Is Ruby's Decline In Popularity Permanent? ( 253

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.
This discussion has been archived. No new comments can be posted.

Is Ruby's Decline In Popularity Permanent?

Comments Filter:
  • by Anonymous Coward on Saturday July 01, 2017 @09:16PM (#54727367)

    What is Ruby?

  • by KiloByte ( 825081 ) on Saturday July 01, 2017 @09:18PM (#54727373)

    Meanwhile, we grown-ups use Perl and C and laugh at the demise of this week's hipster language.

    Now get off my lawn.

    • Re: (Score:2, Informative)

      by Anonymous Coward

      Perl and Ruby are dead. C, Java, C#, Python, and Javascript are humming along nicely. Not sure what your point was supposed to be.

      • by LostMyBeaver ( 1226054 ) on Sunday July 02, 2017 @02:43AM (#54728215)
        Library clutter and corporate dependence generally decides the fate of a programming language.

        C exists for the "I'll write everything myself crowd" and after nearly 50 years, C is still very popular because it's a very primitive language that allows programmers to be primatives. Consider the Linux kernel and Gnome which are probably the two biggest C projects ever. They don't have common collection types and while glib implements some mediocre standards collection types, very often in C, you spend 3/4 of your time just writing endless code to add items to lists or not. In the Linux kernel, the collection types are truly terrible... but really fast. C is a purest language in the sense of "I'd write it all in assembler, but I haven't figured out how to handle cross architecture there yet". C is probably the most indispensable language ever as it's the underlying foundation of computing. Though, we're making smart shifts slowly away from it. It's the new assembler in the sense that languages like Rust and Go are offering all the love of C with some run down features common in modern languages.

        C++ would have suffered a death by now if it weren't for Qt coming along and setting a standard for how to program in C++. Even now, it's getting more and more difficult to use C++ as the language lacks direction. Half the people want it to compete with C and the other half wants it to compete with C# or Java. Also consider that multiple mega-billion dollar companies have banked their entire existence on C++. Rust looks like it will edge away a little on C++. Of course, much of that will be dependent on the quality of the standard libraries.

        Java has a committee of elders (really, they're getting old now) that rule the library infrastructure of Java with an iron fist. As such, writing large scale projects with it makes sense. Java is the new COBOL. Billions or trillions of lines of business critical code are written in it. It's not the best language for anything in particular but it wears many hats. But Java doesn't gain its strength from being a language, it gains it from being a library and runtime.

        Javascript is actually probably going to be one of the first languages to die... and quickly. For example, already people are leaving it for TypeScript... because JavaScript is not dependable and never has been. Now that there is an accepted paradigm for bridging other languages into the DOM, it is clear that it's no longer necessary to write in Javascript directly. There's always been so many issues with compatibility from version to version and implementation of Javascript that it always made sense to have a language that compiles into Javascript rather than using it directly. Now with WebAssembly, there's a lot more about to happen as languages begin to target WebAssembly as their back end... and Javascript as a fallback. WebAssembly is still missing a great way to manage memory, but it still looks REALLY promising.

        C# is a controlled language and is easy. And it gets a lot of great new features without overwhelming the programmers with them. You can be a newb scripter or a seasoned veteran programmer and C# probably can work for just about anything you want to write. It also is the only universal programming language at this time (Javascript might count too but doesn't compile native... though this might not matter anymore) as it supports pretty much every major platform today. It also looks like there's some really good legitimate projects to make a real end-to-end cross platform solution for C# as well, especially with Xamarin,forms and XAML to HTML5, There are some real struggles at this point in time with C# because Microsoft is spreading in every direction trying to make a solution that will work for everyone while still remaining polished. .NET Core 2 and ASP.NET Core 2 look REALLY REALLY promising but there will still be work to do. But with C# addresses everything from Web to OS to Docker all in a single solution format which makes it really nice. Oh... and there's the who
        • Java is the new COBOL.

          Thankfully modern IDEs tend to have autocompletion, so the fact that it's considerably less concise isn't an issue.

        • by _merlin ( 160982 )

          I don't think you're quite right about C++ - I think we've finally got to the point where it's worth using C++. For years, C++ compilers were absolutely atrocious, and standard library implementations were even worse. C++ compilers finally became usable with GCC 4 and MSVC 2005. With these compilers, most of the useful C++ language features finally worked properly.

          Then you had the problem with the standards committee arguing for years, but they've finally got a process that mostly works, and we're gettin

        • by Kjella ( 173770 ) on Sunday July 02, 2017 @09:07AM (#54728945) Homepage

          Javascript is actually probably going to be one of the first languages to die... and quickly.

          Hahahaha no. Javascript is to the web what Java is to the enterprise, there's tons and tons of code and libraries written for it that needs to be maintained and improved, full rewrites rarely happen, rarely succeed and take forever. Other languages that compile down to Javascript won't be a threat any more than Rust and Go replacing C. Even if WebAssembly takes off it's 20 years late to become the standard exchange format, as long as you must have Javascript fallbacks for everything why would you bother unless your site is performance sensitive? You could support just JS or JS+WebAssembly, seems like an easy choice for me. Java applets, Flash, plug-ins in general - Javascript has been slaying all the competition. Even if WebAssembly takes off, is there any reason to think it'll be more than inline ASM for performance critical parts? I think it's just a niche for performance optimization, not a general replacement.

    • Re: (Score:3, Informative)

      Ruby is 20+ years old. I wouldn't call that a fad language. Heck, I'm old enough to remember when people said the same thing about C and Perl relative to FORTRAN, PL/I, and COBOL.
      • Just because a language has existed for a long time doesn't mean that it's ever been the right tool for a critical mass of tasks.

        Hell, Object Pascal is still being used for new projects.

      • by Luthair ( 847766 )
        It may have been around a long time, but its period of popularity was from ~10-years ago to around ~5-years ago.
    • When I was your age we used UNIX Shell and FORTRAN and that's the way we liked it!

      Get off my planet!

    • In 1999 I was listening to a Larry Wall interview and he said that if you want to do all your programming with OOP then Ruby is a better language than Perl. And then he launched into a defense of procedural programming.

      I totally agree. Though mostly I use C. But when I want OOP or scripting, I turn to Ruby.

      I predict mRuby will become popular when common microcontrollers get just a tiny bit bigger.

    • Not many grownups here, I see... Seems to me those fad languages are perl with all the good stuff left out. Funny how easy it is to do things in perl, even with newer machines, NGINX, and whatever opsys and hardware. Sure is tough to remember which parts of perl were left out of python, ruby, php and so on, and which perverted weak->strong typing conversions they do differently. One weird language is enough! I'll take the one that takes the least typing and which gives you more choice to either write su
      • by lucm ( 889690 )

        I still remember my first mod_perl webapp, which was randomly picking different username/session whenever I would refresh the page - all because I wasn't using namespaces. You can do lots of stupid things in PHP when you don't know what you're doing, but at least you're not going to get variables from another thread or process even if you're using global variables.

        • by Megane ( 129182 )

          A few months ago I finally moved my old web server to Apache 2 (yes, seriously, I was still running it on a Blue & White G3, and my new DSL modem broke OS X 10.4's NetInfo stuff!) and was pleasantly surprised to find that while reusing Perl interpreter instances was the default in mod_perl 1, it wasn't even an option in mod_perl 2. Sure, 20 years ago people might sometimes have needed the extra performance, but it could really screw things up if you didn't pay attention all of the time.

          So is Slashdot s

      • I will admit to using Perl for the occasional one-liner, but mostly Perl is for old cowboys who work alone and that's why the libraries are never maintained. For anything complicated you need Python or Ruby.
    • Web languages don't live long


      Every single new trendy language seems to want to be a web framework first and a programming language second, and seem to be designed by people who know how shitty existing web frameworks are but don't know what a well-designed programming language looks like.

    • Techno Psychobitch bitch is utterly terrifying [] hipster superset of Erlang! The real Rockstar language.

      Kids be cool use Erlang reborn as OTP

  • 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.
    • Oh yeah and C++ has been around for 38 years. It ain't going anywhere, especially with Moore's Law ending.
  • 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.
    • Compared to Node what? RoR is a MVC framework, you'd have to compare it to one of the Node MVC frameworks - of which there are tons.
    • And callback after callback is while you try to reinvent threading using one of the shittiest languages known to man outside Visual Basic is easier on the eyes?

      • And callback after callback is while you try to reinvent threading

        That's not a problem anymore since javascript promises.

        using one of the shittiest languages known to man outside Visual Basic

        You don't think VB is better than Javascript? Really? Why not?

        • > That's not a problem anymore since javascript promises.

          You must be kidding me. Have you actually ever used promises?

          The problem with promises is that a very deeply fundamental construct is broken in Javascript. The ides of "First do X and then do Y. Eveyr other programming language (except Haskell) does this by writing the X and then Y on another line next to it, or separated with a semicolon.

          This makes good sense since you can, well, read the code from top to bottom just like a real book. Callbacks to

          • I have never touched Javascript and I know nothing about the 'promise' construct, but people don't use callbacks, upcalls, futures, promises, or whatever they are called for the fun of it. They do it because the sequential execution model is not good enough. They have to deal with unscheduled events, including user clicks; they have to communicate with other systems that will reply at an unpredictable moment in the future (if at all); they have to move lengthy computations out of the main thread to avoid sl

            • Problem is that many many Javascript libraries now use callbacks as a normal method of operation, often when it's not necessary. The result is now you get the "callback of death" with many nested layers of callbacks. It is ugly but worse, hard to read. Here is an example and some solutions [].
      • Bingo.

        Call me a simple farmboy if you like but I prefer the real things ng, not a string of promises. Miss node always promises me a lot, but Ruby? She gives me the goods straight away!

  • Python Won. (Score:5, Interesting)

    by 0100010001010011 ( 652467 ) on Saturday July 01, 2017 @09:52PM (#54727525)

    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.

    • Re: (Score:2, Insightful)

      by DCFusor ( 1763438 )
      Try CPAN. How to ___ with perl has been around longer and is far better. I find python craps up my namespace and scope too easily, but then I've not used it anywhere near as much as the more developed perl. And you can't paste a long program into a single line edit box as the indentation matters. Whitespace as a statement delimiter is stupid, and it being popular just means that there are a lot of stupid people. Ditto indentation. I'd rather have the choice.
      • Re:Python Won. (Score:4, Insightful)

        by 0100010001010011 ( 652467 ) on Saturday July 01, 2017 @10:27PM (#54727663)

        Perl won the GenX popularity contest a long time ago. No one is coming after your Perl, don't worry. You can use it until the day you die.

        You'll be able to recruit Perl developers long after your death just like they do for COBOL and FORTRAN.

        And when Millennials get older hey'll have as many complaints about what ever the next gen programming language is and why Python is the best thing ever. Slashdot will be running stories about "Perl developer shortages" and life will go on.

        You're doing the technological equivalent of arguing over what hammer is better. No one is going to take away your blacksmith's anvil or coarse hammers. I just prefer something else.

        . I'd rather have the choice.

        I'd rather just learn how to do both and teach my brain how to switch depending on what I'm developing. It's about as different as learning to speak another language and then doing so. Arguing than Spanish's word order is better than German's isn't going to help you solve any problems nor is screaming at the Germans in Spanish to "just learn Spanish".

        Today I'll work in Python, tomorrow Bash, the rest of the week Matlab. Occasionally PHP, C, VBA, JavaScript and a few others. Same reason I have to deal with Git, SVN, and ClearCase. In the corporate wold it's easier to learn to do something new than change the momentum of an entire corporation.

        And you can't paste a long program into a single line edit box as the indentation matters.

        I take that time to proof read and learn the language and customize the example I copy and pasted for my application.

        Whitespace as a statement delimiter is stupid, and it being popular just means that there are a lot of stupid people.

        _______ is stupid, and it being popular just means that there are a lot of stupid people.

        Somewhere there's an old assembly developer saying something very similar about the C developers. And the C developers about the Perl, and Perl about Python, Python about what ever comes next.

        It's a language, not a religion.

        • Arguing than Spanish's word order is better than German's isn't going to help you solve any problems nor is screaming at the Germans in Spanish to "just learn Spanish".
          The word order is actually the same, as in basically all european languages.
          However, at least in german, some languages offer to change it as the question what is subject and what is object is determined by articles (I doubt Spanish is one of them)

          • The word order is actually the same, as in basically all european languages.

            Bullshit. French & Italian generally put the adjective after the noun, but English, German & Dutch put it before. Then there's the thing where German sometimes outrageously at the end the verb puts.

            Il m'a donné une pomme rouge. He me has given an apple red. Yup, fucking identical that.

            • And?
              Subject, predicate, object: still the same order in most european languages.
              Nitpicking about an exception like and adjective makes not really sense, or does it?

              Then there's the thing where German sometimes outrageously at the end the verb puts.
              Not sure if I get it, but in english you mostly have the same freedom to rearrange words for emphasizing as in german.

              In other words: if a german sentence has the verb at the end then it is mostly for dramatic/lyric or emphasizing. You don't need to learn that. Y

        • by lucm ( 889690 )

          . I'd rather have the choice.

          I'd rather just learn how to do both and teach my brain how to switch depending on what I'm developing.

          I completely agree.

          And sometimes it's not about picking the best language, it's about picking the right one for your environment.
          - You're surrounded by mathletes? R or Python.
          - You work with red bull dudes? Node.
          - Your team jerks off to UML diagrams? Java.
          - You deal with grumpy get-off-my-lawn sysadmins? Perl.
          - You sit next to people who wear short sleeve shirts and sandals with white socks? VBA.

          Which one is the best? The one that does the job without having to brainwash whoever will be left to maintain it

        • 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.

    • Re: (Score:3, Informative)

      by e r ( 2847683 )
      It's such a shame too because Ruby is nicer and more regular than Python. Everything Python tries to do Ruby does better.

      For example:

      # run some other program using the shell and get its stdout
      # ruby:
      out = `ls -al | foo -a -b | grep -i bar`
      # python:
      from subprocess import call
      call(["ls", "-l"])

      # string length, toString etc.
      # ruby
      puts '10'.to_i.to_s
      # python
      print (string (int ('10')))

      # classes
      # ruby
      class Dog
      # getters and setters implemented with one line if that's your style
      • Here's the complete Python 3.5+ example:

        from subprocess import run, PIPE
        out = run("ls -al | foo -a -b | grep -i bar",
        shell=True, encoding="utf-8", stdout=PIPE).stdout

        Each of these things that doesn't appear in your Ruby snippet has a reason to exist:

        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 quit
  • Unless Ruby has something new to offer then it's popularity will continue to wane and other languages will continue to displace it.

  • I guess it is a culture thing again.
    In Germany(Europe?) there is basically no demand for Ruby.
    Luckily ... I hate its syntax.

  • Another great solution looking for a problem to solve.

  • by Theovon ( 109752 ) on Sunday July 02, 2017 @12:17AM (#54727939)

    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.

  • 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. T
  • 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 me

    • by Luthair ( 847766 )

      While javascript is a turd, I think node is likely here to stay. It lets the amateurs in web development (not that all web devs are, or that all node users are) function with a single programming language.

      Hopefully WebAssembly takes off so we're saved from Javascript.

  • by cjonslashdot ( 904508 ) on Sunday July 02, 2017 @08:09AM (#54728799)

    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.
    • Python + Django? Node.js + Meteor? Node.js + Sails? Java + Spring? Java + Tapestry? Whatever Microsoft's solution is?
    • by guruevi ( 827432 )

      Whatever language and framework you or your team is most versed in.

      You can do this in PHP if that's what your programmers know but when you set forth programming language requirements based on mostly managerial gibberish, you've failed at design.

      Whether your applications is going to end up with a REST or SOAP interface with an RDBMS or NoSQL backend is largely unimportant to the customer, as long as it works, is done in time and is easy to maintain.

      For a new application, since you specified you 'require' RE

  • 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

Imagination is more important than knowledge. -- Albert Einstein