18 ms·
Ruby is my favorite language, and often it is a joy to use because of its combined attributes of brevity, expressive power, and feature consistency. It's disap
by michaelteter 4y ago
Ruby is my favorite language, and often it is a joy to use because of its combined attributes of brevity, expressive power, and feature consistency.
It's disappointing that there are so many more jobs for another popular language - one that lacks the elegance and consistency but which has a larger ecosystem.
As far as I know, the only well known reason for a company to choose Ruby is if they want Rails (and obviously if the founding team already knows/likes Ruby). But that other language also has a popular (and comparatively clumsy) web framework plus well known modules for all the fantasy capabilities that startups dream of... you know, the AI/ML "not sure how we will use it but we know it will be great, and it's good for marketing".
Sadly, I don't expect this situation to reverse in the future. Maybe like blockchain, once the AI/ML fantasy hype dies down the other comparatively-unpleasant language will lose general appeal and Ruby will gain more attention.
Edit - also, the domain squatters "rubylang.org" should lose their domain. There is no legitimate excuse for having this domain which redirects to a general garbage site.
- goodoldneon 4y agoDoes Ruby still not allow type annotations in the same file as your code? Last time I checked, you had to put them in separate .rbs files. That’s a dealbreaker for me
- ric2b 4y agoYou can with a third party library, Sorbet. It's not the nicest experience due to not being native but it works much better than you'd expect without being native.
- ergonaught 4y agoI chose python over ruby eons ago because, for whatever reason, ruby reminded me of perl (not a good thing). Something about the syntax turned me off. Rust has similar problems for me.
- peoplefromibiza 4y ago> the other comparatively-unpleasant language > one that lacks the elegance and consistency upvoted for perfectly concise description of that language. it is even more sad knowing that high quality alternatives for the most popular libraries exist, but inertia is simply too high. @work I've tried to introduce Ruby to my colleagues that are very bad at programming, but good at science. They ditched it with reasons like "I don't like it" or "it's too slow" without even measuring (it is not! Shopify would have died by now). I'm still using it without them knowing and it's the reason why I'm 10x faster than everybody else to build solutions. The other language it's the only one they "learned" at uni and keep using it for everything, even when it's the worst possible choice, management doesn't care and doesn't know the difference. software engineering is still not engineering, unfortunately.
- pelasaco 4y agothe "too slow argument" is normally based on old internet opinions and benchmarks.. ruby today is pretty fast. In the company that I work, we do a lot of system programming using ruby, web development, etc.. It came to substitute perl around 2005, and we still using it successfully today. When we need something really, really fast, specially including parallel processing and etc, we just use jruby.
- dragonwriter 4y ago> ruby today is pretty fast Ruby today is slow as hell, but not as much as slower than other slow as hell languages as Ruby used to be.
- pelasaco 4y agodid you benchmark Jruby or TruffleRuby? Did you compile c-ruby with jemalloc? Normally the "ruby is slow" argument, is based on not being involved with ruby and solving real problems with it. Some people will just LOL this argument even harder if you add development time and code maintenance costs on that equation.
- dragonwriter 4y ago> one that lacks the elegance and consistency but which has a larger ecosystem. ... and decent first party docs, actual code modules rather than “execute every source file in the global namespace”, a first party Windows build, etc., etc., etc. If the Ruby community can't acknowledge the real things holding it back compared to other available options, well, that makes it that much harder to catch up.
- mypalmike 4y agoThey did apparently manage to make their interpreter figure out where mismatched "end" statements are most likely to be, which was one several serious pain points for me with the language. I don't think the execution model you mention, which results in the absurdity of C style transitive includes polluting the global namespace, will ever be changed though.
- tomstuart 4y ago> I don't think the execution model you mention, which results in the absurdity of C style transitive includes polluting the global namespace, will ever be changed though. There is a proposal at https://bugs.ruby-lang.org/issues/19024 https://bugs.ruby-lang.org/issues/19024 to change this but, as you can see from the comments, it’s a bit tricky to get right while preserving backwards compatibility. (Whether that conversation makes you more or less optimistic about the chances of it ever being changed is up to you.)
- michaelteter 4y ago> They did apparently manage to make their interpreter figure out where mismatched "end" statements are most likely to be, which was one several serious pain points for me with the language. Searching for a mismatched/missing _end_ is preferable to having a line or block get accidentally unindented and end up still "working" (running) while producing very confusing results. Moving blocks of code in Python requires great care, especially since the editor cannot reasonably guess which scope level the paste should go into. Also, the lack of an _end_ or bracket as with other languages means the editor cannot visually assist with identifying block boundaries. To be fair though, my vim-memory of using % to bounce between start/end brackets doesn't work in Ruby because of the begin/end words instead of matched symbols :(. However, RubyMine does show the beginning of the block as an unobtrusive popup at the top of the window when your cursor is on the _end_ keyword. That's super handy when there are several blocks closing in succession.
- samwillis 4y agoYou are obviously referring to Python and so I would like to note a few things. (I have nothing against Ruby) > Ruby ... its combined attributes of brevity, expressive power, and feature consistency. > [Python] lacks the elegance and consistency First I would argue Python is very consistent in its design, it aims to only have one obvious way to do things and so it's easy to guess how apis will work. It also aims for explicitness, which makes code very easy to follow and reason about. Secondly on "brevity" and "expressiveness", I don't really see them as an attribute that make a language "better". Sure for experienced developers who like a personal game of code golf (don't we all at times!) those are attributes can can make coding more "fun". But that doesn't necessarily translate to code that is ideal when working as part of a team, or code that is easy to follow when a new developer starts on an existing codebase. Ultimately I think that's why Python has gained more traction than Ruby, it's an "easer" language to follow and start with. Ruby is probably a more fun and intellectually stimulating language to work with though.
- Mikeb85 4y agoPython gained traction because of Google (Google used it initially then Guido worked for them for a decade+, vs. Matz at Heroku/salesforce) and then because it's the easiest way to use ML libs. That's it. It's slower than Ruby, has worse package management and less consistent syntax but if you want to use Tensorflow, PyTorch, etc..., it's the default.
- yla92 4y ago> It's slower than Ruby. Any reference/numbers to back this up ? Just genuinely curious about this.
- Mikeb85 4y agoBasically any benchmark that uses just the language. Throw some loops and maths in there. It doesn't really matter though, both languages are used typically for scripting. But just shows it's not really about the "language", it's about the ecosystem.
- 4y ago
- rg111 4y ago> Maybe like blockchain, once the AI/ML fantasy hype dies down Two minutes of silence for the poor sods who still thinks that AI/ML is pure hype. (Granted, there is hype. But there is much real stuff.) And, also, blockchain and ML/AI are nothing similar, except for Twitter bottom-feeders trying to milk each. AI/ML already has real applications with hundreds of millions of dollars actual value created. And just like CS itself, AI/ML will perpetrate more and more fields in the coming days. There may not be an AGI soon, or ever, but mark my words, AI/ML will continue to have growing real applications in different fields. Blockchain had only hype. ML has substance + hype (AGI, silver bullet to all problems, etc.). I will not engage in language wars like GP here, because those are stupid. I work all day with Python, and I also enjoy coding in Ruby sometimes in hobby projects.
- marcinzm 4y ago>AI/ML already has real applications with hundreds of millions of dollars actual value created. Hundreds of billions a year probably (and that may be low) if you count online advertising and large consumer facing sites in general. If you turned off the ML behind Facebook/Google/Netflix/Amazon then you'd be lucky to only lose 50% revenue based on my personal experience of adding ML on top of such products.
- rg111 4y agoThat is true. ML in recsys of Netflix and product suggestion/placement in Amazon are worth tens of billions of dollar alone, per month.
- deleted 4y ago[deleted]
- michaelteter 4y agoThat's a handful of companies. I'm not talking about them (and they also use many other languages in addition to Python). I said, "there are so many more jobs for another popular language", and I was clearly speaking of the broad job market... not a few big players.
- berkes 4y ago> reason for a company to choose Ruby is if they want Rails And that there, is the whole "Problem" of Ruby. Ruby is a beauty. Rails isn't. It's nice, productive (for certain niches) and has a long track-record. But Rails is also often the root of problems such as maintainability, long-term-productiveness, hosting (performance, scaling), and lock-in. There are far better solutions for simple CRUD-apps today than writing them all out in MVC code. And when you need complex business-logic (i.e no longer a simlpe CRUD app) the , the weird MVC (plus Concerns) that rails offers is simply not cutting it. Yet Ruby is Rails, and Rails is Ruby. So when Rails looses its niche and usefulness, Ruby uses it's niche and usefulness. And that's a shame. (I am a 12+years Ruby, former Rails, and now moving-to-Rust developer)
- Felipebury 4y ago[dead]
- devoutsalsa 4y agoHonestly I don’t agree. In my experience Rails easily becomes a rat’s nest of magical code that is nearly impossible to read. A bajillion imports leads to code being pulled in from who knows where.
- ubercore 4y agoLast time I used Rails was years ago, but I found Rails had a huge mental load when developing. So much magic and inference, you had to carry the whole Rails mental model around with you to read some simple code. I think that's a danger in any framework, but it felt especially acute to me in Rails.
- stiltzkin 4y agoThat's your experience, many think it was a fresh air using Rails than using Java for webdev.
- michaelteter 4y agoThis is really a matter (or problem) of how people use Rails. I am very much not a fan of magic, and I prefer explicit over implicit. You cannot use the same approaches for serious, big Rails projects as you might for quick and dirty proof of concepts. And by that I mean OO, mixins, fat models, overemphasis of ORM, etc. will hurt down the road. But most of these same points are true for Django too. The better way to use Rails is for the core features, and then keep the business logic in modules in "services" (just domain specific organized modules which have little or no dependency on Rails, and are therefore super easy to write complete tests for). An organically grown Rails project that started as an MVP will predictably turn into a ball of sadness if not refactored significantly at various stages in the life of the project.
- Shorel 4y agoI'm sorry, I agree it is a beautiful language. But Ruby is slow. Performance matters. In a world when everything seems to run in cloud servers, efficiency matters. If you can have 20 times more simultaneous users in the same cloud server by using a different tech stack, there's no reason to keep using Ruby. For the record, I also think Python is generally slow, but it has improved in the latest version, and the important libraries for Python are written in C++.
- chrischattin 4y agoI guarantee the language is not the limiting factor in a web scaling problem.
- berkes 4y agoNot in the vast majority of practical use-cases anyway. There'll obviously always be the exceptions like Twitter having to migrate off Ruby (Well rails) because scaling is just too hard. But those are exceptions.
- jeltz 4y agoAnd Rails back then was extremely slow. There have always been web frameworks for Ruby with way less overhead.
- scruple 4y agoMy direct experience with combating scaling issues in Rails applications always comes back to Rails itself. (ab)uses of Active record, specifically. And sometimes they're very hard to detangle. After well over a decade of doing this sort of work I'm simply not interested in seeing yet another Rails mess.
- berkes 4y agoI do agree that Rails is often a cause of bad performance. Not in the first place because of its own, or Ruby's poor performance, but because it's easy to write horrible code, and hard to write nice code in it. AR is a very leaky abstraction over a DB. A horrible query always a mere has_many, sort or default scope away. It's MVC horribly unsuited to manage and isolate business logic. The result often indeed being code that performs terrible.
- lmm 4y agoRuby was a day late and a dollar short. "Established language X, but cleaner and more elegant" has never succeeded on its own and never will; if you want people to switch languages then you have to have a clear selling point that language X doesn't do. (Also if you ask me Ruby never was cleaner and more elegant than Python in the first place, at least in the ways that matter; there are definitely things it does better, but if one of your language's selling points is scripting style use then there are limits to the value of consistency)
- p-e-w 4y ago> But that other language also has a popular (and comparatively clumsy) web framework Django is today more elegant, more complete, and better documented than Rails ever was. 10 years ago you would have been correct. 5 years ago they were about evenly matched. Today it's not even close. Python is eating the world, and web frameworks are no exception.
- capableweb 4y agoDjango might be better but Ruby as a language is way better thought out than Python. Python feels like it's cobbled together compared to Ruby. There is a certain elegance with the language, that is hard to find elsewhere.
- empthought 4y agoI disagree. I perceive no difference in elegance between the two languages nor a particular “cobbled together” aspect to Python.
- scotty79 4y agoMeta classes, dict/slot are some really inelegant stuff.
- empthought 4y agoI disagree. They are elegant.
- arcturus17 4y agoI use Python every day and I like it. However, functional semantics are not elegant at all IMO. Using list() and map() all over the place is not cool, and like many others say, list comprehensions, though concise, are not always that readable (and I say this as someone who reads and writes plenty of them). Lambdas are not great, either. In Django in particular, async feels like an afterthought, compared to other frameworks where it's first class.
- empthought 4y agoI disagree. Ruby has no more elegance or consistency than the other popular language, and it objectively has a much poorer selection of libraries.
- nextlevelwizard 4y agoLack of libraries is noticeable - especially since I've worked with python for past years. However Ruby's syntax is way nicer. I can actually write what I think instead of having to translate my thoughts into python. Of course over time working with python has made my thoughts to conform into more pythonic way, but I still occasionally find myself thinking how something would have been way nicer to write in ruby instead.
- empthought 4y agoI disagree. Ruby’s syntax is not nicer.
- Ralfp 4y agoWhat made me pick Django (and Python) over RoR back in 2009 when I was looking for next language after becoming unhappy PHP was experience with part of its community. But it wasn't positive experience with Djangonauts. It was negative experience with RoR devs. I've never had random Django person come from nowhere either on web dev forum or PHP forum to *flame* others for using PHP. But it was regular thing with Rails devs. AFAIR the term "Rails Zealot", meaning combative tribalistic RoR developer who goes around the web to try to convince other devs that they should switch to RoR using aggressive and flaming rhetoric comes from around that time. I've though this was regular PHP hate, but when I've started learning Django and participating on Python communities I've found out that at smaller scale the flamewars are also there. But this time the reasons why I am "harming myself" and "not real programing" were different.
- jeltz 4y agoThere were for sure Django people back then who flame PHP devs. I know I was a Python user back then.
- adenozine 4y agoSo, how do you reconcile this opinion with the fact that Ruby can't even do a proper REPL on Windows? It just starts showing weird output, overwriting lines and doubling up other ones... that other language just works. And look, I LOVE Ruby. I come from twentyish years of Perl, and I really like the way Ruby feels when banging out a script but these days, time is in short supply, and I just don't have time to screw around with Ruby. If I were someone who was gravely concerned with Ruby's future, I really don't know where to even begin. * DataSci/ML scene is basically nonexistent, that's a problem. * Windows scene isn't good, at all. That's a problem. At least it's kinda there, so you wouldn't be starting from scratch at least, like Crystal team has fought with. * I think something could be done with integrating Rubocop or some other linter (? idk what real Rubyists use) in order to begin solidifying the code culture. PEP8 is a huge factor of Python's success imo. * Packaging. I'm not familiar with the modern Ruby stack, but in my limited dabbling, rake has done just fine. In Python, hearing about Packaging Issues is the new vogue from customers/people who have no idea what they're doing in the slightest. I've used pip/setup.py in the past, but funny enough I'm actually reading up on Hatch lately, which is the new hotness. Anyhow, I don't think it's quite fair to throw this much shade at Python when Ruby hasn't really addressed any of the things that makes Python so popular. If Ruby is so much better, than it needs to do all those things at least as well if not better.
- nindalf 4y agoIf anyone reading this is thinking “why does Windows even matter for development?” then congratulations because you’ve discovered you’re in a filter bubble. Surveys, such as StackOverflow’s (https://survey.stackoverflow.co/2022/#section-most-popular-technologies-operating-system https://survey.stackoverflow.co/2022/#section-most-popular-t...) consistently find that > Windows is the most popular operating system for developers, across both personal and professional use. If it makes anyone feel better, I’m in this filter bubble as well. I’ve never seen someone program professionally in Windows.
- detinho 4y agoWell, I'm programming on windows for about 6 months now, comming from using Linux for the last 5 years. I have to admit I was forced as my new notebook BIOS has a wrong VBT configuration and that makes the Linux kernel to not recognize my HDMI port. And I can acomplish any other task a regular developer can do (and I was doing) programming in Java (with sdkman), using docker containers, git on the command line, Big Data tools (flink, iceberg, haddop, etc) and even some bash scripts (nothing too fancy). The only things that bothers me are the CRLF x LF and sometimes the windows defender making the fans go crazy, but thats is a minimum and I can do some workarounds, the same way I did with bluetooth and audio on Linux.
- marcinzm 4y ago>once the AI/ML fantasy hype dies Sure. Once all of online advertising, search (web, ecommerce, specialized sites, etc.), image editing, spell checking, recommendations (streaming, ecommerce, email, marketing, etc.) and a hundred other things cease to exist. Or more broadly once every large consumer facing company decides, for whatever reason, that it'd prefer to make significantly less money. People talking about things without realizing what they are and where they're used usually indicates that their broader argument is going to be filled with equally many invalid assumptions and logical holes.
- michaelteter 4y agoWhat percentage of companies (including startups) that use Python are using anything more than Django/Flask/sqlalchemy and the usual network modules? I did not say that AI/ML is not useful. But I'm quite sure that some (many) of the companies using Python are not doing any of that - even if they say on their pitch deck that they are or will.
- marcinzm 4y agoI'm not sure why you're focused on startups so much when a minority of engineers work at them. Python is also used heavily for data analytics, data science and data engineering which aren't AI/ML and likely much more common at startups.
- KyeRussell 4y agoIf this comment is indicative of the general attitude of the Ruby / RoR community then I can’t exactly say that I’m jumping up and down to get involved. I feel like I’ve been transported 10-15 years back in time with this ridiculous negativity. Django and RoR are much of a muchness. Ruby and Python are too, to a lesser extent. This whole thing stinks of narcissism of small differences and sour grapes. To imply that even most users of the most popular non-browser language in the world are partaking in ML hype is utterly absurd. When you need to use nebulous words like “clumsy” to describe why you don’t something it’s inarguable that you’re unable to not take your own familiarly into account. I prefer Python, am certainly more familiar with it, and could truthfully say that I feel about Ruby the way that you obviously feel about Python. The difference is I’d never jump onto a Python post on Hacker News and try to pass these feelings off as fact in a way that puts down so many people for preferring a certain tool.
- fknorangesite 4y ago> If this comment is indicative of the general attitude of the Ruby / RoR community It really isn't. On the whole I've rarely found a tech community that is kinder and more welcoming than Ruby's.
- michaelteter 4y agoI refer to The Blub Paradox - http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html I have used both languages extensively, off and on for nearly 20 years. I've also used C, C++, Java, and built some small projects with Clojure and Elixir. Of course people have differing sensibilities when it comes to aesthetics, but at a certain point equally observed options can be compared - with one being recognized as better. I don't put down Python or Pythonistas because I dislike them; I just voiced my frustration that so many companies choose Python when I obviously believe there are better choices (particularly similar complexity/feature options like Ruby). Clumsy, an incomplete comparison: Python OOP Having to explicitly pass self. Not having public/protected/private members. Ruby does, including convenience attribute reader/writer functions. And in Ruby you can still provide your own custom methods. In Python, you have to keep an internal _attrname and then have some set_attrname function if you want to provide special logic on your setter. General recommendation to not use dunders, except that you should define dunders such as __init__ and __str__ for many classes. Ruby's class initializer is an optional method called... "initialize". (Principle of least surprise.) It also has a standard of to_something() methods which return the object in different formats, such as to_str, to_i, to_f, etc. More on this later. Built-in functions: sorted(), a past tense verb, doesn't "sorted" a list, it gives you a sorted copy of a list. Not to be confused with list.sort(), which also sorts but returns nothing and mutates list. next(), which mutates the iterator you pass it. Most other built-ins do not mutate their arguments. int(), float(), sorted(), next(), etc. all only work for certain argument types. The way to know is just to know. In Ruby, these would be object methods. And you could know if you could do foo.to_i (convert to int) just by asking "abc".respond_to?(:to_i). Incidentally, Python's int("abcd") raises an exception, while int("1") works as expected. You can't ask the string "can you be converted to int?" Now maybe converting strings to ints is unwise in general, and that's fair. But the ergonomics here are... not good. And regarding sorted() vs foo.sort(), in Ruby we have foo.sort (non-destructive, returning a sorted list), and foo.sort! (mutates in place). The ! indicates a more significant impact of the function compared to the non-bang version. Elsewhere in the threads I illustrate list comprehension vs Ruby's collection methods and blocks. Ternary operator: Many languages: flag_set ? 1 : 0 Python: 1 if flag_set else 0 This is an if else. So written as an if else, it would be: if flag_set 1 else 0 The Python ternary operator rearranges this logic. But! In Python you can't do "1 if flag_set". Ironically, that's fine in Ruby. Speaking of block return values... (from the imperative if/else above)... Ruby: x = if flag_set 1 else 0 end You cannot do this in Python because conditional blocks do not return a value. It is common in Ruby to say x = case(foo) ... and each match will have a value. The value of the expression in the case which matches is used to set x. In Python (now that you finally, as of 3.10 actually have a switch statement), you must repeat the x = expr for each match. I will say I'm amazed that after so long of no switch statement in Python, they chose to build one with pattern matching reminiscent of Elixir's. If I were to dig through my memory I could find more examples of Python oddities. My decision to merely compress it all into one word - clumsy - was to avoid getting into these details, particularly since the assumed audience was Ruby users based on the topic.
- Arubis 4y agoRails is quite the double-edged sword, too. Even putting aside the controversial close ties to DHH (which is a hell of an exception to be making), the dominating presence of Rails within the Ruby ecosystem means that any Ruby-adjacent project either becomes a Rails-adjacent project (and possibly gets absorbed into Rails itself) or fades into irrelevance. It makes expanding the language into non-web framework domains really challenging. It appears the Elixir community has observed this pattern and has learned from it; time will tell whether that lovely language can build enough popularity to overcome its relative niche status. (Context: Ruby is my primary programming language; I rotate clients fairly frequently; nobody doesn’t use Rails.)
- ofrzeta 4y agoWhat's Elixir without Phoenix?
- michaelteter 4y agoElixir is Erlang/BEAM VM, and Phoenix is a small (but awesome) thing in comparison. Elixir has first class access to an incredibly rich (and battled-hardened) network/distributed ecosystem... if you need it. I know there are major voip companies who build on it, and of course Discord is famous for what they were able to do efficiently with it. These are all outside the realm of Phoenix. That's not to say Phoenix isn't significant. I think it will definitely be a bridge that pulls Ruby (and the few willing Python) devs over to Elixir. It got me, and I built a successful project in it a few years ago.
- brightball 4y agoIMO Ruby the language is a great enabler. The Ruby ecosystem is the real selling point. It's the most productive ecosystem out there because of the sheer level of polish that exists within the Gem ecosystem and the Aspect Oriented Programming capabilities that make it so easy to plug and layer functionality from them. Combine that with this relentless commitment to Developer Experience and it's a tremendous enabler. No other language and ecosystem that I know of enables so few people to accomplish so much, so fast, so well.
- coldtrait 4y agoI recently started a new job that uses RoR and I'm blown away by how different it is. Coming from Java, I'm still always struggling to get basic things done but it's really cool how Rails has features for things that would otherwise require manual code.
- wmeredith 4y ago"comparatively-unpleasant language" This smugness is insufferable to me. What are you talking about?
- hk1337 4y agoI love Ruby. Sinatra was actually my entry into using Ruby and recently have been working on a side project with Rails 7. I work with PHP and Laravel too and after working with Rails 7 for a bit Laravel is like a cheap imitation. I also work with python a lot and I wouldn't want to do the web work in python as much as I would ruby but I would rather do the data crunching in python.
- bdcravens 4y agoI love Ruby, and a substantial amount of our application is written in Ruby. However, there's a very significant portion that requires NodeJS, and to write it in Ruby would be an absolute ball of mud of kludginess and abstraction. I'm happy to write code in a time when I have great tools I can piece together appropriately to make great solutions.
- ilyt 4y agoI woudn't exactly call it consistent and design decisions are questionable. Even the article-mentioned def foo(*) bar(*) end is some needless nonsensical bloat, who on earth complained "oh, saying def foo(a) is so 90s, we need to have option to replace it with symbol used for multiplication or pointers in some cases!" It's mediocre language that happened to have some then-popular web framework written in
- Alifatisk 4y agoWell there is also: def foo(*rest) bar(*rest) end if that helps? What would you prefer instead of the asterisk?
- sam2426679 4y agoimo, Ruby optimizes for flexibility over consistency in a way that is unpleasant and lends itself to unforced errors. The Python standard library has never straight up failed on me in the way that Ruby has. Ruby had buggy named-argument splatting, i.e. func(*kwargs), until 2.7, and even that was a half-realized implementation. It took something like 5 years to fix: https://bugs.ruby-lang.org/issues/11860 https://bugs.ruby-lang.org/issues/11860 I've had similar experiences with Rails.
- bdcravens 4y agoBeen through it before, when I used ColdFusion. Not highly regarded these days, but among the options at the time, it was ridiculously fast to build applications in. To this day, even has some features missing in other languages/frameworks. However, things shift in the industry. In CF's case, it was the shift to open source and package managers, IMO. There's no value in casting stones at the use cases that undermine your worldview. (Personally I love Ruby, but if and when the time comes, I'll move on to whatever meets the needs of my employer/client)
- zem 4y agowhen I was mostly doing ruby, with the occasional foray into python, I would have agreed with you. but having gotten a python day job and using it as my primary language for the past several years, I think there are features that python got right and ruby did not, as well as vice versa of course. the top one is the way the two languages handle modules and namespaces (ruby lets you reopen modules, which is nice, but python lets you easily see at the call site whether you are calling a function from an imported file, which is amazing for large projects), but I also miss introspectable doc strings, and syntactic support for type annotations (which are also introspectable at runtime!) when I'm writing ruby these days.