Now: would you like to debate whether a Rails programmer can produce at
five times the rate of a .NET programmer, given equivalent tools and
processes? Or would you like to join me in efforts and advocacy to speed
Ruby up, which seems to me a more productive use of time?
No, I want to provide Joel a Cluebat, with glowing letters on it
spelling:
“Premature Optimization is the root of all evil”.
In a web app, the bottleneck is the database, so - guess what?! - it’s
written in C. Anything else is just tuning.
I will trade CPU cycles for programmer cycles any day.
On Sun, Sep 10, 2006 at 02:40:18AM +0900, Joseph wrote:
Also, a little off topic, you could reach a middle of the ground
compromise, extending your app in Ruby and leaving the “legacy” code
alone, a common practice in the mainframe world where COBOL apps have
been largely left in the cold or with minimal maintenace, while hooks
have been made into Java based applications that extend them! Why not
do the same with Net/Java apss with links to Ruby on Rails?
The (unspoken, but somewhat obvious) implication that Java is the “new”
legacy COBOL of the new millenium strikes me intuitively as a valid
comparison in a number of ways. Just like COBOL in its day, Java has
been hailed as making code maintenance easier, making programming
“safer”, being THE enterprise language of its time, and so on. Just
like COBOL after its day, Java is beginning to get a fair bit of flak
for requiring “fat” code, imposing a lot of project time overhead, and
having gained its immense popularity via overhype (regardless of the
accuracy of those claims). It’s an interesting (off-topic) thought –
and it makes me wonder if something like Ruby will be the next
Java/COBOL.
Finally to end my reply I would say that if you are starting a NEW
project, mission critical or not, and there is no “showstopper” for
your application, by all means Ruby and Ruby on Rails are indeed the
best possible tools you could choose. THAT IS PRECISELY my point. The
productivity savings, the elegance and clarity of the framework is just
to good to ignore.
I think calling Ruby and Rails the “best possible tools you could
choose” might be a bit overenthusiastic. They are certainly excellent
tools, and are surely the best tools for certain specific tasks, but
other tools are better for other tasks. Ruby and Rails are far from
being the only excellent tools available to us. I don’t think you meant
to imply that they are the only excellent tools available, but the
unequivocal nature of your comment makes it look that way.
[Ruby is slow] so if you become The Next MySpace,
you’ll be buying 5 times as many boxes as the .NET guy
down the hall.
I can’t believe I missed another rebuttal here.
If you become the next MySpace, you are done! Just getting to that
Critical
Mass point is 98% of the battle. Once you are there, you have many more
options than when you started.
So, once again, Joel is also taking a slam at Lean Software Development
here…
On Sun, Sep 10, 2006 at 04:35:49AM +0900, M. Edward (Ed) Borasky wrote:
That isn’t the point.
Five new experienced .NET programmers are cheaper than five new
experienced Rails programmers.
One new box is cheaper than five new boxes.
Now: would you like to debate whether a Rails programmer can produce at
five times the rate of a .NET programmer, given equivalent tools and
processes? Or would you like to join me in efforts and advocacy to speed
Ruby up, which seems to me a more productive use of time?
If you’re going to debate the scale of productivity increase for web
development gained with Rails, perhaps you should also debate these
mythic software performance gains for .NET over Rails. I, frankly, am
not convinced .NET grants any notable performance benefit over Rails on
average, at all. I’m more convinced of productivity gains for Rails
programmers over .NET programmers, however.
If you’re going to debate the scale of productivity increase for web
development gained with Rails, perhaps you should also debate these
mythic software performance gains for .NET over Rails.
I haven’t seen any benchmarks one way or the other. So I can’t comment
with any assurance. Nobody is paying me to improve the performance of
either .NET or Ruby, but since Ruby is an open-source project, it’s only
natural that I’d choose to volunteer in that direction. But I’m a lot
more interested in hard numerical apps than web apps at the moment.
I, frankly, am
not convinced .NET grants any notable performance benefit over Rails on
average, at all.
Neither am I, as I noted above. But Joel Spolsky is, so I think it’s at
least worth investigating how he came to his conclusions and tearing
said arguments apart. I think what he is saying is that today’s Ruby
interpreters are slower that today’s .NET run-times, and not anything
about Rails vs. NET for web apps. Yes, the line about buying five
machines vs. one is a cheap shot.
Speaking of which, does anyone know what the underlying platform is for
MySpace? Windows? .NET? LAMP? Something else?
I’m more convinced of productivity gains for Rails
programmers over .NET programmers, however.
With equal levels of experience? Equal levels of application domain
knowledge? The same processes? All factors equal except .NET vs. Rails?
That’s a competition I’d like to see, if there’s some way to set it up.
It’s very rare, however, that all other factors are equal.
Most of the claims of improved productivity for Rails – the ones I
believe, anyhow – are made by people with many years of experience in
web development under their belt and much of that experience with a
mature Java framework. In short, all they have to learn is where to find
everything in Rails and the details of the Rails domain-specific
language. They already know how to build a shopping cart and just need
to learn how to do it in Rails.
On Sun, Sep 10, 2006 at 08:28:56AM +0900, M. Edward (Ed) Borasky wrote:
Chad P. wrote:
If you’re going to debate the scale of productivity increase for web
development gained with Rails, perhaps you should also debate these
mythic software performance gains for .NET over Rails.
I haven’t seen any benchmarks one way or the other. So I can’t comment
with any assurance. Nobody is paying me to improve the performance of
either .NET or Ruby, but since Ruby is an open-source project, it’s only
natural that I’d choose to volunteer in that direction. But I’m a lot
more interested in hard numerical apps than web apps at the moment.
Joel indicated that you could get the same scalability/performance out
of one fifth the boxen by using .NET instead of Rails. That’s where
this tangent of the discussion originated.
Speaking of which, does anyone know what the underlying platform is for
MySpace? Windows? .NET? LAMP? Something else?
Until recently, MySpace was running on ColdFusion 5. It is, last time I
checked, undergoing migration to BlueDragon.NET (CFML on .NET).
web development under their belt and much of that experience with a
mature Java framework. In short, all they have to learn is where to find
everything in Rails and the details of the Rails domain-specific
language. They already know how to build a shopping cart and just need
to learn how to do it in Rails.
That sounds like less-than-equal levels of experience with Rails. Let’s
just unceremoniously dump equal numbers of long-time web developers into
Rails and ASP.NET environments, but without prior experience with
either, and see what happens. That’s probably more fair than
experienced ASP.NET developers vs. experienced Rails developers, since
from what I’ve seen most of the .NET developers who know their fourth
points of contact from holes in the ground are desktop application
guys, not web developers. I wouldn’t want to give the Rails guys an
unfair advantage.
[Ruby is slow] so if you become The Next MySpace,
you’ll be buying 5 times as many boxes as the .NET guy
down the hall.
Last time I checked, 5 new boxes were cheaper than 5 new programmers…
Slow and fast are notoriously difficult to pin down, especially when
dealing with dynamically generated web content. If there is much in the
way of database queries or similar activity involved in generating the
page, that can quickly become the bottleneck. If the application is
such
that the db data can be cached in some way, even if the dynamic
generation
is still taking place, speeds can be fairly fast.
My in-development IOWA branch is, in testing, pumping some real (as in,
destined for a production web site) dynamic web pages in the 2.5k to 4k
bytes size range in excess of 200/second on a modest 2ghz AMD Athlon
server.
If I take that same dynamically generated content and let the framework
cache it (and serve the cached content itself) in tests I am pushing
3800
to 3900 requests per second for a 2.6k page THROUGH RUBY CODE, and about
1000 requests per second for a 38k page.
“Ruby is slow.” is easy to say, but in practice, where web apps are
concerned, ruby can be fast enough.
I don’t consider a 4X speed improvement on a matrix multiply and
inverse, which is what I got with YARV over Ruby 1.8.5, “premature
optimization”.
Nobody has stated Ruby is fast. Your argument, however, is: “my
algorithm is
bigger than your algorithm”.
Trivially put your matrices into a C++ library, bond it to Ruby, and
keep
going.
Programming is mostly about command-and-control code, glueing ready-made
libraries together. The faster and easier the glueing is, the more time
you
have open to optimize the few things that need it.
If the bottleneck is the database, why does Rails frown on stored
procedures, preferring instead to do everything in the ActiveRecord ORM?
I’m sorry, but i just need to step into this and point out what should
have been obvious ages ago…
You can’t compare .net and Rails. It’s like comparing the JVM or
Parrot and Rails. It makes no sense.
.NET and the JVM and Parrot are just virtual machines that by themself
contribute absolutely nothing to the productivity of a web developer.
Or for a non-programmer analogy it’s like saying that the
contstruction company makes the architect more productive. I’m sorry
but it doesn’t. Yes they come into contact but the architect /
developers productivity issues are no longer an issue when the
construction company / virtual machine comes in to do it’s work.
And while we’re on the topic, can you (all of you) please explain to
the managers at your company that .net isn’t a language and nothing
is “written in .net”