I want to learn a new language...

Levi Pearson levi at cold.org
Wed Feb 14 16:42:03 MST 2007

So, here's my take on these three languages:

Perl is an accretion of very useful features glued together on top of
a fairly elegant, nearly Lisp-like core.  However, the accretive
nature shows itself quite plainly; it's got 'awk'ward pieces and
'sed'iment littered throughout its syntax and semantics.  It's full of
quirks, corner cases, and ad-hoc design decisions that were created to
make particular patterns of use very convenient.  This all makes it a
complex language that you can pick up the basics of very easily, but
requires a lot of reading and conversing with arcane masters to
explore all the nooks and crannies of.  If you're not planning on
using it frequently, it's probably not worth it, because you'll forget
a lot of these details between uses.  People who use it all the time
tell me that they remember just fine; maybe it's just me.  Anyway, the
true raison d'etre of Perl is Unix system administration.  Despite its
flaws, and whether you love it or hate it, it nearly always wins at
this one task.  Sometimes it's because of the text manipulation tools,
sometimes it's due to bindings or CPAN modules.  If you don't care
about Unix system administration, I would give it lower consideration.

Python was, at one point, my favorite language.  I didn't have
exposure to many languages at that time, but it was very easy for me
to pick up and I was immediately able to create useful programs.  It's
a very clean language, and the way to do things is generally fairly
obvious.  I have a few nits to pick with it, but they're not serious
flaws as far as I'm concerned.  Also, anyone who tells you Python
isn't really object oriented is probably using a different definition
of 'object oriented' than you are.  It's a very object-oriented
language indeed, though some of the machinery is exposed (though not
to the absurd extent of OO perl).  It's very dynamic, flexible, and
powerful.  It's reasonably fast.  It's got a fairly good set of
libraries.  I don't see any big reason not to choose Python.

I don't have as much to say about Ruby, because I've never actually
used it.  I like it a lot conceptually, since it marries the Smalltalk
object model with some Lispy sensibilities.  However, you've already
seen some of my concerns about the language and its current
implementation.  I also don't like the fact that blocks are relegated
to the final argument position, and have some odd quirks compared to
their Smalltalk counterparts.  I think Ruby has the potential to be
very fun, though; perhaps more so than Python, and far more so than
Perl, which I can only hate because of the mess that it is.  I will
probably learn a bit of it myself, sometime, someday, if its current
popularity trend holds.

Those are my opinions;  you'll have to decide for yourself which one
you want to learn, since the languages I would suggest are not options
you listed.


More information about the PLUG mailing list