If you’re not really object oriented programming, perl’s OO
system is good enough (I think most casual OOP programmers are
using it for namespace cleanliness and a cheezy way to carry
around something akin to global variables).
I think this is exactly wrong. If you really know what you’re doing
Perl 5’s OOP facilities are quite powerful and flexible. If you’re
a casual OOP user, you’ll be confused as hell. With Ruby "casual"
OOP is free and “real” OOP is as easy as it possibly could be. Perl
6 will narrow this gap considerably though perhaps Parrot will
narrow the library gap (if it will be possible to call modules
written in one language with a Parrot runtime from another???).
Real quick, Perl OO is nothing more than (most of the time, though
they can be array’s/scalars too) a hash with two magic variables that
say what type of an object it is (read: Perl module name space), and
what type of object it’s inherited from (read: fall back Perl module
name space) and that’s about it. Perl OO is by and large a hash with
a quick shorthand to method name spaces. It’s ugly, a kludge that was
grafted on top of an awk replacement, and is as bastardized of an OO
implementation as one can find in any language anywhere and I wager
few diversified engineers would disagree.
As for Perl 6, I think it’s a technological or linguistic Zeppelin:
it’s dated, dangerous, and just waiting to go down in flames. Java’s
taken the Perl world by storm these days now that Java’s VM is
"better" (compared to where it was 4 years ago) and many Perl folk are
tired of cleaning up old, broken, hacked together, one-liner-ish code
that seemed clever to the writer but is an abomination of engineering
or development when reflected upon not more than 3 weeks after
inception (plus or minus a few weeks depending on how full the
engineer’s head is). As I’ve heard on IRC, “chmod 333 *.pl: you don’t
loose any of the readability after you’ve written the file.”
Most developers use $, and @, and love hiding behind the obfuscation
(read: job security). The Perl culture even seems to endorse and take
pride in the obscurity that the language provides. I know there are
some Perl coding wizards in the crowd reading this saying, “that’s not
so!,” but remember, you’re the exception: think about other peoples
code and the modules you rely on. In my Perl days, everything was
’use strict;’, ‘-w’ compliant, and read like a decent C program. I
know now, I was among the few exceptions. If the value of OO is in
making systems readable and maintainable, then few could disagree with
the fact that Perl is a failed attempt at OO programming.
I remember an interview with Larry Wall saying that Perl would never
see a version six and he would do everything he could to oppose such
an effort. Someone with purse strings at O’Reilly likely got a hold
of him. By most people’s measurements, Perl 6 should be a different
language, but it isn’t. Changing syntax, breaking compatibility,
changing the underlying C API’s, and breaking existing code is
essentially a new language (I know, it’s a gross understatement).
Kind of a shame that Perl, as it stands, couldn’t be left alone to rot
and dissolve in the corner as a triumph of hackery and all that could
be wrong with engineering: something to only be mentioned in the
computer history books.
Frankly, I can’t wait till the lightning storm comes to town and
lights the massive new Perl Zep on fire. If Perl’s lucky, after the
fallout and exodus of people, all that’ll be left is Parrot and maybe
a Perl5 syntax compiler for Parrot. A whole lot of good that will do.
Community pressure lead to the preservation of the ugliness and
horrific maintainability nightmare that spawned the engineering effort
in the first place. Ironic that one of Larry Wall’s original
statements of Perl will come true even if the version number will be
different: Perl6 == Perl5.
When it’s all said and done, I’m quite pleased that languages evolve
and come and go, I just get annoyed with the ones that don’t die
quietly, or whine about the good old days. Life moves on, get a grip.
For at least the next decade (if elegance prevails, hopefully longer),
I’ve found my language of choice and it doesn’t have a super trendy
name, nor is it ruled by a money grubbing corporation with a trumped
up marketing budget, and I don’t associate this language with going to
Starbucks or, for that matter, going to the bathroom after it runs
through me (after all, coffee is a diuretic). Call me crazy, but I
prefer not associating certain morning rituals with programming, thank
you very much. For me, engineering is, and should always be an
elegant and clean methodology that gets applied to a problem.
Granted that’s not always the case, it is at least the goal. Ruby is
powerful, under stated, non-offensive, provides what I need at my
finger tips, and has actually started making working through problems
Going back to Parrot, I place higher chances of Matz finishing Rite
(Ruby + VM) than I do of Parrot actually taking flight. It’ll be
interesting to see if Perl dirigible gets paired down to a paper
airplane that gets thrown by hand. I for one, can’t wait to see it’s
nose crumple as I have nothing to loose when the exodus happens: I’ve
already moved on from the fame that was Perl and have embraced my new
mode of transportation. Ruby’s slick, fast, and feels like driving a
new BMW after years of a beat up, run down Mustang. Sure there’s
something retro about putting big tires on a Mustang and tricking it
out with a new engine, but what’s the point? I have a life outside of
my car and don’t want to spend every night tuning it up or getting my
fingers dirty. Instead I’d rather spend it with my girlfriend or out
on a beach staring at the stars: life is more than the sum of the 1’s
and 0’s that we programmers play with during the day. Come time for a
challenge and without any real prep, I can hop in my M5 and it will
out pace a 'stang any day of the week. If you have to out pace the
’stang, wouldn’t you rather be doing it in leather, with a smooth
shifting car, that’s quiet, has seat warmers, lumbar support, and a
killer Bose speaker system?
Ruby’s not perfect mind you, but it has the elegant design and
ingenuity behind it that makes me believe that one of these days,
it’ll get there. What really excites me about Ruby and its future is
that it will do so elegance and with class. ::shrug:: I don’t know
about you, but I think wings and a vertical take off would be damn
slick on a BMW, don’t you? With that said, until the next computer
genius comes along and invents something even more slick
(transporter???), I’m going to stick with my shinny new BMW.
PS And for those interested in having the beverage language carried
over to the car analogy, I associate Java with large, ugly, gas
guzzling SUVs (which get spanked by even non-tweaked Mustangs).