|Think about Loose Coupling|
Perl is not the first programming language I've learned, but it's the firts programming language I've used. I can't comment honestly on what it's like to learn perl as a first language, as I started with logo as a kid and then took a high school class in basic and a college intro in java. I came into perl with a good handle on things like loops, scoping (though our still throws me sometimes), and modularization.
perl, however, is the first programming language that I've actually used to program. Other languages may have taught me those general concepts (and how to move a turtle around the screen), but perl made it possible to implement those concepts in ways that made sense to me, and were as flexible as my thinking. Granted, I still write some pretty ugly code, but I also feel like a programmer rather than a casual user or an unskilled novice. Sure there's a lot of stuff I could do better and a lot of functionality in perl that I am blissfully unaware of, but I have what I need to allow me to do things in the programming language rather than just come up with stock answers to class assignments or make unsuccessful attempts at implementing interesting concepts.
I blame my current sense of accomplishment and my growing fascination with the art of programming on perl, because perl is the first language that has made me recognize the extent to which programming can be an art. With its relatively shallow learning curve (at least for someone with decent math, and hopefully some exposure to logic and/or programming), its natural-seeming syntax, its extensive documentation, its amazing extensions and its fantastic communities, perl has turned me from a pretender into a striver. Before I played at competency, convincing myself that surely I could hack something together if I really had to; now I understand my own capabilities, and even when I can find an answer, I know that I am best served by seeking out another WTDI.
and what do I get at the end of this gush? I just looked down at the Llama and realized why it is that even if perl is not the best first language to learn, it is the best first language to program in. It's one of the basic commitments of perl as a language; what I just used all these words to try to say, the perl community has built itself around:
Perl makes the easy things easy and the hard things possible
just another perl monk
Apparently Lisp is good for this too and, especially after reading GEB, I am eager to explore functional programming.