|Welcome to the Monastery
Re: Perl as one's first programming languageby samizdat (Vicar)
|on Apr 07, 2008 at 18:02 UTC
I think we have two basic paths in programming these days, and I have to say that there are legitimate reasons for choosing each path.
The first path is the one most of us grew up with, that of needing to understand the underlying hardware. As an embedded systems programmer, I'm typical of this breed. I grew up on bit-banging assembly language and Peter Norton's inside tips.
Today, there's a second path. Actually, there always has been, starting with COBOL and FORTRAN and, yes, LISP. The holy grail of programming has always been to abstract away all hardware dependencies, and we're now getting to the point where forty or fifty levels of object aggregation do not produce an application that appears to be stuck in gooey mud, thanks to Moore and Noyce et al.
The nice thing about Perl (and Ruby and even BASIC) is that you can play without needing to learn too many rules and arcane incantations (not to deny that EVERY programming language is an arcane piece of syntactic crap). The key to all of these interpreted languages is experimentation. That's a feature of LISP as well, and hardburn's correct to include it as a potential first language. The downside of all of them (except for LISP) is that there is an arcane syntax to be learned. Perl's best at being able to handle lots of different DWIM's that all the others will not. Ruby is more fragile than Perl, but it must be said that its syntax, once learned, makes a lot more sense. I think MHO that BASIC should remain buried will be shared by all present. (!)
Contrast these with the so-called production languages in today's usage, C/C++ and Java. Both C and Java require reams of extra verbiage surrounding the logic of programming, and none of it is intuitively obvious. Moreso, there's lots of crap to be learned even before you get to issues surrounding hardware or memory management. As the OP stated, even 'Hello, World!' takes a bunch of compiler incantations and definitions that must be understood.
I do think we in programming are going to run aground in the near future in much the same way that today's kids are getting spoiled by the Internet. Contrary to popular belief, the history of the world began before 1990, and there is indeed hardware underneath Bill Gates' toy. There always will be hardware to be understood, and those who understand it will always be in high demand.
Our kids do indeed need Perl (or something equally potent) so that they can explore in all directions. Not every kid (or curious adult) will explore every nook and cranny, but some kid somewhere will, and that's a good thing. It does take a special breed to be a craftsman in any endeavor, and those who have the aptitude should be given tools that encourage exploration.
"There's more than one level to any answer."