I think that Perl's a horrible choice for a programmer's
first language: it does too much for you. The Perl hacker
doesn't have to worry about buffer lengths, array bounds,
keeping track of allocated memory, and so on, which makes
it easy to develop habits that don't address resource
allocation. Fine if you're hacking Perl, not so fine if
you start writing C later on.
I have some personal experience to back this up, if
you'll indulge me. I've TAed labs for an introductory
software engineering course at my
university: this is a student's
first introduction to writing software, rather than using
a procedural language. It's also their first glimpse of C.
For a long time, the first-year courses were taught in
Pascal; recently, they switched to Java. Students who
learned to program with Java had much more trouble keeping
track of resources (file handles and heap memory, for the
purposes of this course) than the ones who started out with
Pascal, and their code was brittle as a result. I
attribute this to Java's "convenience" features (growable
strings, garbage collection, etc).
The problem with teaching programmers Perl as a first
language is that they will almost inevitably go on to write
C, and their C will be buggy and insecure. I'd like to see
Comp. Sci. majors around the planet start with an elegant,
sane assembly language (MIPS and 68000 asms come closest to
this ideal, IME), then move to C, then move to
safer, higher-level languages. Like Perl.
On the other hand, Perl makes an excellent first
language for people who aren't going to be career
programmers: it's easy to get a lot done with only a little
knowledge, which means less lag time between starting to
program and solving your problems.
The hell with paco, vote for Erudil!