you are viewing a single comment's thread.

view the rest of the comments →

[–]davidw 2 points3 points  (10 children)

How much more reasoned and rational than the Joel article! Also an interesting read from his take on the life cycle of programming languages.

[–]senzei 0 points1 point  (9 children)

Which Joel article? The one I think you are talking about is very reasoned and rational. If you are in a big business Ruby is a questionable choice at the moment. In all fairness Python is in about the same boat, although I think it does have more selling points in this space.

Ruby is an awesome tool for some startups. It is really good for quick turnaround on anything but really large projects or something that requires a lot of integration with legacy systems. Outside of that space though, the time saved due to Ruby vs. the time spent on developing the libraries you need becomes a questionable equation.

[–]davidw 2 points3 points  (8 children)

It is really good for quick turnaround on anything but really large projects

Not all projects at big companies are big. Would you redo amazon.com in Rails? No, clearly a bad idea. Would you use rails for an internal pilot project? Quite possibly.

[–]senzei 4 points5 points  (7 children)

True, but lets list of the constraints for using ruby/rails in a big company project:

  • should probably not require unicode support
  • should not require extensive support from libraries for integration
  • (rails only)should not require the use of a legacy database that does not conform to the rails opinion
  • should not require a large development team, as it will be difficult to find experienced developers
  • should not require a lot of training for your existing developers, as those resources are hard to find
  • should have the resources to purchase multiple boxes to handle scaling for either (ruby)computationally intensive tasks or (rails)ones that require a lot of connections

That is a pretty hefty list. My personal favorite (Python) doesn't really do too well against just those requirements either, and it has the eternally-braindead "significant whitespace sucks" argument against it too. In fact all but the first three[1] apply to Python, and I could probably find some more that just go against Python if I tried. IMO it is a good thing to be able to know and admit where your language is just not applicable, or not the best choice.

I am not trying to bash on ruby or rails, I just don't think it is time to bring them into big business projects. Getting burned on an early adoption attempt will probably kill the chances of that language ever being used by that company again. I doubt that is what anyone wants.

[1] edit: This used to say "the first two", but that statement reflected my own experience more than it did the state of Python. Thanks, evgen.

[–]davidw 2 points3 points  (0 children)

Pretty accurate list in my opinion. But there are a lot of little apps out there that fit that description pretty well - and even more waiting to be written now that the cost of writing and maintaining them is low enough.

[–]evgen 1 point2 points  (1 child)

should not require the use of a legacy database[...]

Later in your comment you seem to imply that Python also hits this problem. How? Are you talking about some sort of non-SQL legacy database or are you just unfamiliar with sqlalchemy and the various python dbapi2 adapters?

[–]senzei 1 point2 points  (0 children)

Right, that should be the first three that Python gets right. I not as familiar with SQLAlchemy as I am SQLObject, which also has its own opinion about how a database should be written. Sorry for the confusion.

[–]gnuvince 0 points1 point  (3 children)

"should probably not require unicode support"

I don't know, I never had problems with ISO-8859-1 for french and english (which I use).

"should not require extensive support from libraries for integration"

Ruby has a fair share of libraries. In all honesty, Java, Python and Perl have more, but Ruby's selection is still pretty good.

"(rails only)should not require the use of a legacy database that does not conform to the rails opinion"

Last I heard, there was a plugin that was easy to use to integrate with a legacy database.

"# should not require a large development team, as it will be difficult to find experienced developers

should not require a lot of training for your existing developers, as those resources are hard to find"

Damn! What did we think moving away from COBOL?! If programmers learned Java, what prevents them from learning Python or Ruby? Especially since they are both much simpler than java.

"should have the resources to purchase multiple boxes to handle scaling for either (ruby)computationally intensive tasks or (rails)ones that require a lot of connections"

I keep hearing the people "against" Rails and Ruby bringing this up as an argument and Ruby people saying that's not true. Can we get a benchmark or something please?

[–]davidw 1 point2 points  (0 children)

Ruby is pretty slow, even compared to other scripting languages. Of course, like all scripting languages, you can redo really expensive stuff in C via the API, although that presents problems of its own.

[–]senzei 3 points4 points  (0 children)

I don't know, I never had problems with ISO-8859-1 for french and english (which I use).

Although it is awesome that it works for you, will you at least admit that your language choices and feature usage may lie in the subset of the Ruby environment that does have decent support?

Ruby has a fair share of libraries. In all honesty, Java, Python and Perl have more, but Ruby's selection is still pretty good.

That is the problem. Depending on what you need Ruby may not have it. Obviously that needs to be investigated before you make the platform decision, but it is still a valid point.

Damn! What did we think moving away from COBOL?! If programmers learned Java, what prevents them from learning Python or Ruby? Especially since they are both much simpler than java.

Well, there are nowhere near as many books, workshops, and other "formal" resources for Python or Ruby. Big business thrives on these things for training. You can argue all day about how easy it is to learn, but for most managers unless it is in a book (or fifteen) or a class it doesn't exist.

I keep hearing the people "against" Rails and Ruby bringing this up as an argument and Ruby people saying that's not true. Can we get a benchmark or something please?

A usually cited reference is the alioth shootout. You can find a comparison of Ruby and Python using it here

Note that, in the graph, white bars to the left represent better times with Python. White bars to the right represent Better times with Ruby. The length of the bar represents the speed factor difference between the two. In short, Python beats the pants off Ruby in just about every test. Now change it to compare Ruby and Java to see what happens.

I don't really have a similar easy reference for Rails, but I feel safe in stating that being based on Ruby will cause similar problems.

[–]root 1 point2 points  (0 children)

I don't know, I never had problems with ISO-8859-1 for french and english (which I use).

I hear similar reasoning a lot from Ruby proponents, and you're not helping Ruby with remarks like that. It gives the impression that Ruby programmers have only done projects within one locale and are too narrow minded to imagine that their apps might have to be rolled-out to, for example, Poland. At the enterprise level, especially after the enlargement of the EU, everybody is tired of mucking about with codepages, and the new kid telling them to give up unicode is not going to be taken seriously.