Well ... let's just say I think Ruby is a vast improvement on Perl. I
learned Perl when Perl 4 was the reigning standard. I don't particularly
like the way Perl 5 does objects and references. I wrote a lot of code in
Perl 4 and I still maintain it, but I wouldn't write *new* code in Perl now
that I have Ruby.
I pretty well loathe the Perl object model, and the syntax for
references could use some work, but object oriented programming isn't
the whole world of programming -- and Perl handles a lot of things with
more elegance than most other languages (such as lexical closures, which
are, frankly, slightly less clunky than Ruby's closures). Ruby does a
lot of things better than Perl, but there are some significant
shortfalls, too.
The notable thing that jumped out at me about Ruby when I discovered it
is this: Between Perl and Ruby, I don't need to learn Python at all.
I'm awfully glad for that, since Python basically makes my eyes bleed.
Call it a personal failure if you like -- it is definitely at least
mostly personal bias -- but that's the way it is.
Most of what I have written in Perl is stuff that Perl (4) is good at.
Regular expressions, extracting numerical data from miscellaneous text
files, arrays and hashes. Ruby has all of that, plus a coherent object
model, a coherent "Enumerable" model, lambdas, blocks, continuations ...
Perl's unnamed blocks/lambdas/subroutines/functions/whatever are
actually more consistent, syntactically, than Ruby's -- though for many
purposes, Ruby's implementation is slicker. It's a trade-off that
provides a net win or net lose depending on what I'm doing.
I'm simply tired of it ... it lacks "elegance". It's useful ... it's
been around longer than Ruby, so there are more libraries and packages
for it. It's not going away. It's evolving. But Ruby's not going away
either. Ruby is evolving.
It doesn't lack elegance. It doesn't encourage it the same way as Ruby,
but it certainly enables it. In fact, I'd say it enables it more fully
than Python, though encourages it less. Again, a trade-off (though Ruby
does seem to avoid having to trade away much in this case, from what
I've seen so far).
I haven't seen them ... I have a Ford if it matters.
I pick on Perl
because I know more Perl than the others. I don't know enough about
Python or PHP to pick on them. There appear to be lots of folks here
that will pick on Python and Java anyway.
PHP's just too easy to pick on. Seriously. It's an anemic syntax
wrapped 'round an enormous bucket of functions that seem to have been
chosen for native implementation by way of a dart board. No challenge
in picking on that one.
Frankly, I think one of the biggest reasons Java and, to a slightly
lesser extent, Python get picked on more often than any other
non-Microsoft languages in almost all programming communities is that
both languages' communities tend to have sort of a "God's Chosen
Language" sense of entitlement -- not universally, but just prominently
enough that people tend to generalize. Stereotyping both Java and
Python, each in its own way, as inspiring a community of zealots is just
an obvious thing to do when looking for a language to disparage. It's
probably quite unfair in both cases, of course. In any case, I see
hints of one-true-language-ism in every language community, sometimes
more obnoxiously than at other times (including here).
Python's a great language, in principle, and is reportedly a great
language in practice for those whose proclivities it suits. It doesn't
suit mine, so I'll stick to Ruby and Perl. Java . . . well, let's just
say that as far as I can tell it's not nearly as great a language as
some seem to think. I'd rather use Java than Visual Basic, but beyond
that there isn't much competition with Java for its low ranking in my
hierarchy of preferred languages.
I'm sure there are some here who'll use that statement as an excuse to
dismiss anything I say about Java or Python from here on out, of course,
and I'm not entirely sure I won't catch some flak up front but, hey,
full disclosure an' all.
Despite my thorough dislike and the negative language "features" that
inspired it, I acknowledge that Java has its uses too. Rather than
disparage it as the wrong language for everything I do, I just choose to
avoid doing the things for which it's the right language as much as I
can manage.
I think that's quite enough off-topic rambling for one email. The point
of this last bit of nattering on, if it can be said to have a real
point, is that every (reasonable) language has its advantages and
disadvantages. I happen to mesh well with those of both Perl and Ruby,
but not those of Python or Java. Nearly categorical dismissals of Perl
such as yours (implying, it seems, that with Ruby around Perl is
useless except insofar as it gets you employment) are pretty much
valueless, just as similar treatments of the language I don't like would
be.