Ruby’s not ready - an indepth essay

F.Y.I

Not sure if you guys have read this article, I am going to re-post it
here.

2008/4/7 Song Ma [email protected]:

Ruby's not ready | glyphobet • глыфобет • γλυφοβετ

The piece can be summarized in two brief quotations:

First, near the beginning:

I promise we'll be as objective as humanly possible

then, about 500 pages later:

TMTOWDI is bad

In other words, I’ll be objective, so long as objective means judging
things according to my own lack of imagination.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Song Ma wrote:
| F.Y.I
|
| Not sure if you guys have read this article, I am going to re-post it
here.
|
| Ruby's not ready | glyphobet • глыфобет • γλυφοβετ
|

“It’s not ready, because it isn’t Python”. That sums the article up in a
sentence.

I could say the same in reverse about Python, or any other language.

Two major fallacies:

  1. The issues the article touches on are already known, and partially
    addressed in libraries (Regexen with Oniguruma (sp?)) and/or different
    implementations (speed in JRuby, for example, where you could farm out
    to Java’s Strings or regexen).

  2. (And this breaks the whole premise of the article:) The basis for the
    comparison is humbug. Porting libraries and applications isn’t a valid
    test of languages, since the original implementation shapes
    preconceptions.

If Ruby and particularly Rails weren’t ready, it wouldn’t see adoption
by major players.


Phillip G.
Twitter: twitter.com/cynicalryan

Rule of Open-Source Programming #4:

If you don’t work on your project, chances are that no one will.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkf646IACgkQbtAgaoJTgL8PwwCglpbFBS9fqm+/6q8WTGdeliC7
0IAAn3YcFu1ATbfo4C58mbuyccgGLlEb
=Xush
-----END PGP SIGNATURE-----

Interesting. But what I am thinking about is not the attitude of the
author,
but the points he was trying to make. The deep review and discussion
will
benefit the language insights.

2008/4/8, Avdi G. [email protected]:

Well he seems to hold everything to the standard of Python, so of
course anything that follows the TMTOWDI approach rather than Ivory
Tower Driven Development (ITDD) is going to be bad.

–Jeremy

2008/4/7 Avdi G. [email protected]:

then, about 500 pages later:


http://jeremymcanally.com/
http://entp.com

Read my books:
Ruby in Practice (Ruby in Practice)
My free Ruby e-book (http://humblelittlerubybook.com/)

Or, my blogs:

http://rubyinpractice.com

Damn!

Our whole coding business has been built on a language and framework
that’s just not ready yet??

LOL!

That’s just silly. I don’t understand why he’d write something like
that, but honestly it doesn’t really matter.

If he wants to not use Rails and Ruby, then so be it. I use it, and
I’ve used it for years, we’ve done numerous apps (over 10), some of
our them Enterprise-level, and it works a treat.

I looked at Python, but writing it is a pain in the neck. It just
sucks (for me).

This is my preference.

Julian.

Learn Ruby on Rails! Check out the FREE VIDS (for a limited time)
VIDEO #3 out NOW!
http://sensei.zenunit.com/

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Song Ma wrote:
| Interesting. But what I am thinking about is not the attitude of the
author,
| but the points he was trying to make. The deep review and discussion will
| benefit the language insights.

Two years ago, it might have. But not anymore.

And it is not about attitude. It’s credibility. And the first two
paragraphs of the article blew that.


Phillip G.
Twitter: twitter.com/cynicalryan

Never buy what you do not want
because it is cheap; it will be dear to you.
~ – Thomas Jefferson (1743-1826)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkf66msACgkQbtAgaoJTgL/U2wCgkHjcu+D9JU7o5BQxSHVW4Y55
14AAnRUDvsB6d1XnyEUPz0guIMBxxmR6
=JGAj
-----END PGP SIGNATURE-----

Song Ma wrote:

F.Y.I

Not sure if you guys have read this article, I am going to re-post it here.

Ruby's not ready | glyphobet • глыфобет • γλυφοβετ

Warning: only read if you feel like being really irritated to gain maybe
a tiny bit of insight, probably on things you already know. At least,
that’s my opinion on this article.

-Justin

2008/4/7 Song Ma [email protected]:

Interesting. But what I am thinking about is not the attitude of the author,
but the points he was trying to make. The deep review and discussion will
benefit the language insights.

There’s no deep review here. It’s a shallow review written in a
shallow way. The author is completely and wholly incorrect that:

“The options for Ruby 1.8 users are to install 1.9 or the third-party
Oniguruma package… In general, it’s a bad sign when a third-party
reimplements a large chunk of functionality in an existing piece
of software.”

This represents pure ignorance. Yes, Ruby 1.8 users must install
Oniguruma for the features that Oniguruma provides. But it’s not a
“third-party” product as such; it is the Ruby 1.9 regexp engine.
This fact has been known and stated for at least three years, and
Oniguruma is made available as an option for people who need the
additional features. (Free clue: not many. Those who do need it really
need it. Most people don’t.)

The author is similarly wholly ignorant of Ruby 1.9 and Ruby 2.0
discussions and assumes that “lack of English documentation” is the
same as “lack of documentation.” The author is a fool for believing
the claim that Ruby 2 has been in development longer than Perl 6. Perl
6 was ramping up as I switched to Ruby in 2002 and Ruby 1.8 was
released a bit after that (I got my Ruby 1.8 Pickaxe at the 2005
RubyConf in San Diego). Matz has been talking about the next
generation of Ruby (Ruby 2.0) for a while, but that’s no different
than the discussions and experiments surrounding Py3k.

Worst of all, the author treats both the Alioth shootout and the Zed
Shaw rant as things worthy of positive attention, when both are, well,
worthless. The Alioth shootout has been known to be worthless for
years yet periodically some idiot treats it as serious. Zed’s rant was
a rant. It too had things that are known to be false, things that
are probably libellous, and things that were simply taken out of
context.

All in all, the authors pretend to be objective when they are anything
but. They’ve drunk the Guido-ade and as the resulting article shows
had no interest in showing Ruby in a positive light. Most of the
things that they’ve mentioned are differences from Python (neither
positive nor negative) or have little importance to most applications.
(Yes, Virginia. Most people don’t need full-on Unicode munging in
their code. It’s necessary when you do need it, but most people don’t
need it.)

This article deserves to be buried with great prejudice.

-austin

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Austin Z. wrote:

| (Yes, Virginia. Most people don’t need full-on Unicode munging in
| their code. It’s necessary when you do need it, but most people don’t
| need it.)

I need it. Most of Europe needs it. Not to mention Arabia, Japan, and
everybody else not speaking English.


Phillip G.
Twitter: twitter.com/cynicalryan

~ “Endorsing products is the American way of expressing
individuality.”

  • -Calvin
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.8 (MingW32)
    Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkf67xsACgkQbtAgaoJTgL8EsQCfS8P7nsE9JFbcHpwzbbpPQGvq
7LIAnRMf/jqxjnTHbun779NQuhBQ0mKm
=9M0o
-----END PGP SIGNATURE-----

I’m pretty sure this was simply a bullet point review on a client’s
list of requirements for a project’s RFP/spec.

“We want you to use Ruby/Rails because we’ve heard you get things done
faster. If you want this project, you need to use Ruby or tell us why
you won’t use it.”

“We don’t know how to use Ruby, so let me give you a list of stupid
reasons we aren’t using it. It has nothing to do with the fact that
we don’t have any clue how to use it. Nope. The biggest killer for
us is all of these minor things, especially having to remember THREE
WHOLE WAYS to print text to the screen. Whew! Ruby isn’t ready.”

I think your assessment is basically spot on of its bias.

–Jeremy

2008/4/8 Austin Z. [email protected]:

Oniguruma package… In general, it’s a bad sign when a third-party

Worst of all, the author treats both the Alioth shootout and the Zed
things that they’ve mentioned are differences from Python (neither


http://jeremymcanally.com/
http://entp.com

Read my books:
Ruby in Practice (Ruby in Practice)
My free Ruby e-book (http://humblelittlerubybook.com/)

Or, my blogs:

http://rubyinpractice.com

The points he was trying to make are incredibly biased.

Ruby works like people do. That’s why I like it. That’s why it’s
faster to program in.

If people aren’t open to programming in a more natural way, Ruby will
just “get in the way”. So, it’s not for them.

All of the “downsides” are worth this. It’s pragmatic.

Julian.

Learn Ruby on Rails! Check out the FREE VIDS (for a limited time)
VIDEO #3 out NOW!
http://sensei.zenunit.com/

Austin Z. wrote:

There’s no deep review here. It’s a shallow review written in a
shallow way.

Indeed. Just one shallow point that showed up when I scrolled about 2/3
down and read a couple of paragraphs from the essay:

What is the difference between the length and size methods on
String, Array, and Hash? There is none. Hashes have update and
merge methods. What’s the difference? None.

These are particularly atrocious synonyms, because the English
words they are based on aren’t synonymous. What if you have a
class representing a geometric object, and you want length and
size to return different measurements?

Sure, so on your geometric class you define length and size to be
different. It happens that they are the same for strings (and why not).
They don’t have to be the same for other things.

On Apr 8, 5:05 am, Phillip G. [email protected]
wrote:

I need it. Most of Europe needs it. Not to mention Arabia, Japan, and
everybody else not speaking English.

Bullshit. I’ve done localization for Chinese sites in Ruby without
ever
having to think about unicode issues. SOME things require you to take
care. Such as not making stupid assumptions about the length of
strings
in bytes vs. characters. But most of the time people can do a lot of
string mangling with UTF-8 without ever needing to think about it.

ALL my work involve international character sets in one way or the
other,
because I refuse to not deal with i18n. NONE of my work involves “full-
on
unicode munging”. It involves a tiny subset of support at most.

That applies to most people, and most of what they’ll ever need is
trivial to implement.

Reading/writing UTF-8 is easy. Splitting UTF8 into characters, or
converting it to 32 bit codepoints is easy (surprise, surprise,
#pack and #unpack supports it).

Once you have it in 32 bit, the length calculation problems go away,
and slicing and splicing strings without thinking about it becomes
easy.

That’s almost everything most people ever need in order to work
with Unicode. If there was such a burning need, most people would
use ICU bindings for Ruby (do they exist? I’ve never even bothered to
look, but if they don’t they’d be trivial to write if I ever need
them)

Vidar

[Unicode]

I need it.

I keep on reading people that need Unicode, and in your case it may very
well be true and for many others as well.

But personally I never had a need to use Unicode and it may be true for
many others as well.

======================================================

But about the blogger in question - it is easy to see he is an avid
python user.
Personally I have no big objection to python as a language (much less
than against perl or php), I think projects using python instead of perl
do a big improvement in general for various reasons, and I think anyone
choosing python can as well choose ruby.

But the blogger seems to make extremely BAD points:

Point 1
“The language and its implementation are incomplete and immature.”
“A project loses time when it must implement missing or incomplete
functionality.”

This is a statement. He does not give points to illustrate this
statement.
I can only laugh about unbased statements. What functionality is
missing?
Should viewers try to understand how you think?

Point 2
“The language is inconsistent and needlessly complex. Inconsistency and
complexity confuses people and confusion breeds bugs.”

It is true that ruby as a whole is a complex language. So is haskell.
“Complexity” alone is nothing inherently bad. If you want an euphemism
for “complexity”, you could use “powerful”. And if we use the word
powerful the
language suddenly no longer appears “bad”. But it is true - ruby is
complex. There is a lot to learn and know for a newcomer to ruby
(normally, but ruby is A LOT easier than haskell)

When i went from php (yes, laugh…) to ruby there was a lot to learn.
There is still a lot to learn but the situation has changed. I have
since then entirely got rid of all my php (which means yes, all my web
stuff is powered by ruby).

For several reasons, ruby is a much better language than php. And ruby
is more suited to outside-www tasks than php ever will.

Ruby as a language is not inconsistent though.

As said I partially agree about the complexity stuff as in “a lot to
learn and know”, but this does not really matter for a given project.
For example I do spend more time aggressively thinking if I really need
to use something in a ruby program or not.
@@class_vars I really never need, global vars I do sometimes use but
they arent needed that much. Metamagic is sometimes fun but I dont think
there are that many use cases for it. (I am just in love of objects
which seem to solve pretty everything …)

Point 3
“The documentation is incomplete. Incomplete documentation breeds bugs
as you might misuse a feature.”

That documentation could be improved in ruby - agreed. I am in total
favour of this, and I hope people do not recommend only ri as
“solution”. Often the ri was equivalent to “RTFM”. This is what php for
a long time had better solved than ruby due to webpages about php and
the php-homepage docu (the situation has changed in the recent years for
ruby due to some websites and efforts improving online docu of ruby, so
I am not complaining here really)

That “incomplete docu breeds bugs” is total and utter bullshit.

Last but not least, I think everyone that visits the blog knows what
“Comments are closed.” means:
He is only interested in presenting his (IMHO incorrect) view to the
visitor.

A blog that disallows comments yet makes many unfound and incorrect
statements is just wasting time of the visitor.

Marc H., 08.04.2008 13:24:

[Unicode]

I need it.

I keep on reading people that need Unicode, and in your case it may very
well be true and for many others as well.

That’s precisely the ignorant attitude that caused the issues we
currently have with differen character sets. I’m pretty sure that if
computer systems had been emerged from a non-english speaking country at
the beginning we wouldn’t need to still fight character set issues
(there are still too many applications that even have problems with 8bit
character sets)

There are definitely more users in the world who need Unicode than
users who don’t need it and therefor don’t care.

You can not even get away with a 8bit character set for a european wide
application, let alone a world-wide application.

I’m a newbie with Ruby and until I read this discussion I simply assumed
it would fully support Unicode “out of the box” especially given the
fact that is originates from Japan. I’m actually very confused (not to
say shocked) that there is a discussion if Ruby needs (or supports?)
Unicode.

Unicode (and a relevant encoding such as UTF8) should be the standard
for all (new) programming languages and not an exception.

Thomas

Why is everyone getting so worked up? It’s a critique. Biased it may
be, but that in itself does not make it worthless. In fact, it can be
very constructive b/c it uncovers “attack points” with the language.
With each point we can ask ourselves objectively is this a
misconception or a fair point? In either case we have an opportunity,
to address misconceptions in our Ruby evangelizing blogs and to work
to improve Ruby where a point has merit.

Bias can work both ways. But I think the Ruby community can rise above
it, and Ruby will be all the better for it.

T.

From: “Thomas K.” [email protected]

That’s precisely the ignorant attitude that caused the issues we currently have with
differen character sets.

“Let me tell you something about You that YOU don’t know. . . .”

I’m a newbie with Ruby and until I read this discussion I simply assumed it would fully
support Unicode “out of the box” especially given the fact that is originates from Japan.
I’m actually very confused (not to say shocked) that there is a discussion if Ruby
needs (or supports?) Unicode.

My understanding was that in Japan, character encodings such as EUC-JP
or Shift_JIS
were widely preferred over Unicode.

Unicode (and a relevant encoding such as UTF8) should be the standard for all (new)
programming languages and not an exception.

Apparently not, as One Character Encoding to Rule Them All is not
considered
satisfactory to many people.

Here’s a long thread on the subject from the archives:
http://tinyurl.com/ge2kp

Anyway, ruby 1.8 does have usable UTF-8 support “out of the box.”
(See also
post #9 in that thread by Matz talking about 1.8.)

Ruby 1.9 has much broader support for handling multiple character
encodings.

Regards,

Bill

On 8 Apr 2008, at 03:53, Song Ma wrote:

F.Y.I

Not sure if you guys have read this article, I am going to re-post
it here.

Ruby's not ready | glyphobet • глыфобет • γλυφοβετ

If an article of similar tone were published comparing French and
English we would all see it for the daft nonsense it is.

Python and Ruby fill a certain niche and present different ways of
handling problems in that niche. I much prefer Ruby to Python, and I
have friends who much prefer Python to Ruby. Arguing over which is the
better language is pointless.

Ellie

Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net

raise ArgumentError unless @reality.responds_to? :reason

Bill K., 08.04.2008 14:51:

Unicode (and a relevant encoding such as UTF8) should be the standard for all (new)
programming languages and not an exception.

Apparently not, as One Character Encoding to Rule Them All is not considered
satisfactory to many people.
But Unicode/UTF8 would at least satisfy a lot more people than plain
ASCII or 8bit encodings (such as ISO-8859-x)

Here’s a long thread on the subject from the archives: http://tinyurl.com/ge2kp

Anyway, ruby 1.8 does have usable UTF-8 support “out of the box.” (See also
post #9 in that thread by Matz talking about 1.8.)
Ah! Good to know that.

Ruby 1.9 has much broader support for handling multiple character encodings.
Is there any release plan for 1.9?

Thomas