On Wed, Mar 28, 2007 at 10:04:08PM +0900, Jason R. wrote:
later, and good luck.
For the record, I hear that .NET version 3 is trying to implement open
classes, so on top of the responses already given, this is a completely
moot point
There are several things wrong with that statement. First, plans for
.NET
have nothing to do with the relative merits of open classes, though I’d
be
interested in reading about what is being planned concerning open
classes
in .NET if you have a citation. Second, the issue is not open classes
themselves, which can be used effectively and appropriately, but as an
example (along with method_missing) of features that are often misused
in
the name of cleverness and at the expense of maintainability.
way!
http://www.loudthinking.com/arc/000516.html
It’s a post by DHH, primary author of the “opinionated” Rails code. Like
it
or not, he is a mover and shaker in the Ruby world and in this article
he
says, “…I consider stored procedures and constraints vile and reckless
destroyers of coherence.”
What you probably saw, and heartily decided to misread was someone saying
in a specific case that a database was stupid because it added too much
complexity to a project.
The post I refer to above is based on the naive assumption that there is
such a thing as an “application database” that is distinct from an
“integration database.” Anyone who has worked in any enterprise (defined
as
a company whose core business is not software but has custom software
needs) knows that every database is an integration database. There will
eventually be a need for multiple applications to interact with the
data.
The common response is that the application for which the database is
its
“application database” is responsible for providing access to the data
to
other applications via web services. This is a reinvention of the wheel,
not to mention an unnecessary layer of abstraction. RDBMSs have been
successfully, effectively, and efficiently supporting various
authentication and permission models for decades, not to mention
supporting
constraints to maintain data integrity. It is foolish, not to mention
arrogant, to propose writing new, unproven code to implement what
already
exists and works well.
As for arrogance, the only arrogance I see are people like you,
unfortunately. All you Java and C# people who have this odd fetish of
trying to discredit and bash any language that is even slightly different
and for some reason becoming popular. Dynamic Typing?! OH NOES You can’t
trust a program without static typing! Open Classes! feignt. No, the
arrogance is on your side, the people like you who are hurting this
industry with a complete inability to adapt to, learn, and develop new
ideas.
Wow, where did all that come from? Ruby is a great language, no
question.
It is the right tool for many jobs. It could be better, though, and it
could be the right tool for more jobs with some improvements. Most of
the
improvements I’ve seen suggested have to do with libraries (e.g. soap4r)
and coding discipline.
You aren’t likely to see many people on this list suggesting that it
needs
static typing, nor that open classes were inherently bad, nor even
saying
that it needs to be more like C# or Java at the language level. The
ability
to integrate with existing systems, however, requires a lot of library
code
that does exist in the Java and C# world and is missing, buggy, and/or
inefficient in the Ruby world. When these libraries exist in an
efficient
and dependable form enterprise adoption will be smoother and more
common.
We like to call ourselves Pragmatic. Look into it, and if you haven’t
yet, go buy Pragmatic Programmer and read it over and over again. You
just may learn something.
Tell me, have you even tried Ruby or Rails for more than a day? To be
honest, you’re not saying a single thing new that I haven’t seen on blog
posts or articles in the past 2 years of people who refuse to try Ruby
because it’s different, it’s new, and it’s going to complicate their life
(how is of course never discussed, they are just so sure of it).
Paragraphs like the two above go a long way toward explaining where
accusations of arrogance come from.
I’ll say again, Ruby is most definitely ready for prime time and has been
for many years now. It’s people like you who are hampering the inclusion
of this great language into the greater software world, mostly, I think,
because you people are afraid of change, deathly afraid. Well here’s a
news flash: Software changes daily, and I really pity those people who
have missed out on this seemingly obvious fact.
I’ve learned and used dozens of languages. I’ve even enjoyed many of
them,
including Ruby. I understand Ruby, JavaScript, C, C#, and C++ deeply (as
well as a few other mini-languages like awk and SQL). They each have
their
strengths and weaknesses which make them each the right tool for certain
kinds of jobs. There is, unsurprisingly, some overlap. I’ve made money
programming some of the languages I know, including Ruby. I am currently
employed developing a large Ruby on Rails site, though not really for an
“enterprise” by the definition I gave above.
At a previous job, however, I was working in VB.NET on a massive
internal,
mission-critical piece of software for a genuine “enterprise” using a
vast
database (both in schema and in number of rows) that was accessed by
multiple applications. Every DB interaction was through stored
procedures
for security and accountability reasons. They weren’t using any
constraints, but they should have been and the lack of constraints
resulted
in invalid and corrupt data that had to be detected and cleared manually
on
a regular basis. Though one of the applications was a web app, Ruby on
Rails would have been the wrong tool. In fact, there was no part of the
massive system that would have been well-served by Ruby. It required too
much integration with existing systems in ways that Ruby doesn’t do
well.
Someday, perhaps, Ruby will have the library support to make it the
right
tool, but not yet.
To be clear, I like Ruby and I think it is the right tool for a variety
of
profitable work, including what I am doing now. By the same token, I
think
that many of the problems that “enterprises” need to solve are
ill-served
by Ruby and its present ecosystem (e.g. library support). I also think
that
ecosystem can be improved, if we put in the time and effort to do so.
Jason
–Greg