I consider
BASIC to be an excellent beginner's introduction to "what
is a program?", etc., so long as they are exposed to other languages
immediately after grasping the basic principles.
Well, there is the
"small" problem that BASIC syntax, data types, and
control structures relate poorly to modern languages and even less to
powerful abstractions.
I'm not convinced that's a problem.
What's wrong with Scheme? Or at worst, Python?
The same thing that was wrong with the New Math: you don't dump the
full load of theory on a beginner, not unless you want a very confused
beginner, or you have the incredible luck to get a Ramanujan or Knuth
as a student (and if so, honestly, the best thing anyone can do is to
get the hell out of the way).
Just as it takes a certain amount of mathematical sophistication to
grasp, say, the difference between base ten and other bases, or the
difference between a number and its representation in some base, it
takes a certain amount of programming sophistication to grasp what,
say, lexical scoping is and why it's important - and it helps to have
some experience with non-lexically-scoped languages.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse at
rodents-montreal.org
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B