Why do people use Ruby on Rails? It's slow, ugly and has minimal support across web hosts. Suddenly, a lot of people I know are beginning to use it and I can't get straight answers from them as to why. One of my friends who uses it says he believes it's popular with Mac users because Ruby comes preinstalled on OSX, but so does Perl and Python. I asked another friend and he said "because it can serve dynamic web pages." At this point I just gave up and dismissed my friends for idiots who don't know shit about programming, so now I'm asking you, fellow /prog/riders: why do people who know how to program and know the alternatives use that shitty ass Ruby on Rails?
Your post can be optimized into two words. See: Why hipsters
Name:
Anonymous2011-07-30 18:21
because it can be learned in a single day.
Name:
Anonymous2011-07-30 18:40
>>1 Why do people use Ruby on Rails?
I find that the majority of Ruby and RoR developers are novice programmers and Ruby is the first programming language they've ever used. The reason they picked it up is because they heard it was hip and cool and easy to use, and they needed something to build their first websites.
It's why you should never trust the opinion of Ruby developers, they don't know fuck all. Many of the long-time professional developers who have at one point used Ruby/RoR, such as Zed Shaw and friends, have since abandoned it.
Shit always prevails, until everyone realizes it is indeed shit.
This is a natural law in computing.
Name:
Anonymous2011-07-31 6:50
It's only slow if you go out of your way to make it slow and don't use the correct kind of database for your expected load. Often times the "it doesn't scale" argument boils down to the type of database used, not the Rails framework itself. This is a problem no matter what language or framework you use. Rails is awesome but it not the right tool for every job.
The code itself is about the most elegant code I've ever seen. Ruby as a language is expressive and powerful but terse when necessary. It has the syntactic beauty of Perl but has community standards that lead to actually beautiful code, not mangled jibberish that is unreadable to anyone but the original author. I suggest reading the books "Elegant Ruby" and "Metaprogramming Ruby". Rails as a framework makes excellent use of Ruby's strongest features and this lets developers write small amounts of easy to understand code that do an awful lot.
http://www.railshosting.org/
If you can't find a good inexpensive host from here then you're not trying. This argument was valid 4 or 5 years ago. Not in 2011.
I use it because it allows me to cut through the bullshit and get straight to the part of web apps that matter. I don't want to reinvent the wheel. Plenty of people see things the same way. Hence the sudden explosion in popularity.
It's not that it's popular with Mac users, it's that lots of Rails developers switched to Mac because of TextMate. This is by no means the majority of Rails developers, but it is a disproportionate amount compared to other frameworks and languages. Personally for Ruby/Rails development I use RubyMine on either Linux or Windows.
And it's not that it serves dynamic web pages, lots of things do that, obviously. It's that it is one of the better MVC frameworks and makes the task simple for trivial cases but allows you to do just about anything you want if you know what you're doing.
Before talking shit on Rails try sitting down and learning a little Ruby and then making fun something with it. I've been programming for over a decade now and doing server side web development pretty much the entire time. I got started with Rails around 5 years ago now and can honestly say it absolutely changed the way I think about programming and making websites for the better.
The Ruby compiler really needs to get sped up much like Javascript compilers have gotten really fast if Ruby is every going to go full mainstream in web development
Ruby as a language supports continuations via callcc keyword. Ruby's callcc is incredibly slow, implemented via stack copying. JRuby and IronRuby don't have continuations at all, and it's quite unlikely they will ever get them. There were also support breaches in mainline Ruby, when Ruby 1.9 has not supported continuations for a while. If you want your code to be portable, I'd suggest not using continuations.
All accusations towards Ruby are just ridiculous and are factually inaccurate! It is important that as a community we debunk these myths and unjustified criticisms. An even better road to take would be to provide examples of how computationally complex problems can be dealt with efficiently in Ruby, highlighting the best practices and the existing workarounds.
A religious community is emotionally easy to attack and may produce inopportune responses in defense of whatever has been questioned. Over the past three years I’ve heard a few bad things about Ruby and I’ve seen all sorts of responses, which in some cases were simply overreactions.
Ruby is a wonderfully designed language. The Ruby and Ruby on Rails communities have a lot of passion. We love our language, created by a very cool guy (and maestro of humbleness) in Japan. We love our framework authored by a Danish GAP model, and we really enjoy the spirit in the community. We have the best non-paid marketing department in the world. We started the revolution which is powering most of the new social websites out there.
Ruby on Rails is important and valuable technical solution, languages and tools for software problems.
- Ruby indulges obfuscation: Ruby has no keyword/optional arguments, so you'll have to use hash parameters as a substitute. This is an idiom that comes from Perl. Ugly APL-looking code, like 12.5.integer? or
(0..127).each { |n| p n.chr }, considered beautiful. Quirky variable names (because of bad scoping design): @instance_var @@class_var CONSTANT_VAR $global_var &proc $~[1]. A good amount of your code will consist of begin end begin begin end end...
- Slow: JIT-compiling implementations exist, but they're still slow and incomplete, due to Ruby's complexity. Bad language design makes Ruby difficult to optimize compared to other dynamic languages, like Lisp or Smalltalk. For example, Ruby has to accomodate for somebody in another thread changing the definition of a class spontaneously, forcing compiler to be very conservative. Compiler hints, like `int X` from C/C++ or `declare (int X)` from Lisp, arent possible either.
- Slow GC: Ruby's GC is not copy-on-write friendly, as Ruby's mark-and-sweep implementation stores the mark bit directly inside objects, a GC cycle will thus result in all objects being written to, making their memory pages `dirty` and Ruby's speed proportional to the number of allocated objects. Ruby simply was not designed to support hundred thousand objects allocation per second. Unfortunately, that’s exactly what frameworks like Ruby on Rails do. The more objects you allocate, the more time you “lose” at code execution. For instance something as simple as 100.times{ ‘foo’ } allocates 100 string objects, because strings are mutable and therefore each version requires its own copy. A simple Ruby on Rails ‘hello world’ already uses around 331973 objects.
- Non-othogonal: {|bar| bar.foo}, proc {|bar| bar.foo}, lambda {|bar| bar.foo}, def baz(bar) bar.foo end - all copy the same functionality, where Lisp gets along with only `lambda`
- Ruby (like most other scripting languages) does not require variables to be declared, as (let (x 123) ...) in Lisp or int x = 123 in C/C++. If you want a variable private to a block, you need to pick an unique variable name, you've to hold the entire symbol table in your head. This also means that Ruby can't even detect a trivial typo - it will produce a program, which will continue working for hours until it reaches the typo - THEN go boom and you lost all unsaved data. Local and global scopes are unintuitive. Certain operations (like regular expression operator) create implicit local variables.
- Ruby as a language supports continuations via callcc keyword. Ruby's callcc is incredibly slow, implemented via stack copying. JRuby and IronRuby don't have continuations at all, and it's quite unlikely they will ever get them. There were also support breaches in mainline Ruby, where Ruby 1.9 has not supported continuations for a while. If you want your code to be portable, I'd suggest not using continuations.
So, to summarize, Ruby is retarded and says things like:
"If I'm not hungry, then I'll stay at my desk, else I'll go to lunch", or: "If I'm not hungry is not true, then I'll go to lunch"
Whereas other languages, such as Perl, just say it like a normal person would:
"If I'm hungry then I'll go to lunch"
>>27
Apparently in Perl's case it is being type coerced to an integer, and the integer value of lists are their lengths. It is shorthand for if (scalar($myarr)), and since Perl doesn't have actual bool symbols, 0 is false. Some of the Lisps also have empty list as false but by a direct mechanism that the empty list is equivalent to nil and false symbols (Schemes however, have empty list and false as distinct symbols, and in fact, evaluates empty lists to true).
Name:
Anonymous2011-10-30 1:39
Interestingly, Ruby follows Scheme's way of evaluating empty lists. Along with the bang notation for destructive methods and the availability of callcc, Ruby follows a fair number of Scheme patterns.
Is it coincidence? The invisible hand of the Sussman guides the market
And this was ruby 1.8.6 which is slow as dick. MRI sucks dick. 1.9.X, Rubinious, and JRuby are where its at. All the cool kids are using MacRuby. Enjoy your WinRuby Nigga.
you still use cpanel hosting? I'm posting that in my dream journal
TL;DR: AWS FAGGOTS
Name:
Anon2011-10-30 14:32
Yes, if you have a simple program like write me this or x = that do something else etc. But if you have a very complicating program involving sql's, cookies, emails and hordes of calculations then you will see the greatness of Ruby and more specifically the greatness of Rails.
Oh and btw most webhosters support Ruby on Rails.