This is in response to David Brin's article, "Why Johnny Can't Code",
in Salon, 2006-09-14:
http://www.salon.com/tech/feature/2006/09/14/basic/

While (what I think is) his main point (#7 below) is mostly true and
important, his supporting points are mostly nonsense --- it really
lowered my respect for Brin.  Here's my summary of his points:

1. There's no programming language preinstalled on new computers.

This is utter nonsense.  Has he not heard of JavaScript?

2. BASIC programs in textbooks are unrunnable now because BASIC is no
   longer preinstalled, and no other language is widespread (or
   stable?) enough to replace it in new textbooks.

The first point is true and unfortunate; the second one is false;
again, has he not heard of JavaScript?  It's installed on every
computer that has a web browser, it's an ECMA standard, and its
momentum on billions of web pages maintained by millions of people
ensures that no backward-incompatible changes are coming any time
soon.

3. Programming in BASIC teaches its users how computers actually work,
   to a greater extent than the languages that programmers use
   nowadays to "stack and organize object-oriented services".  [I
   admit I may have misunderstood this point; it was not very clearly
   stated in the article.]

This is nonsense too.  One of the most common languages people use to
call object-oriented services (what does he mean, "stack and
organize"?) is Visual Basic.NET.  Older BASICs mostly teach you how to
cope with the limitations of the BASIC virtual machine, things like
neither having nor being able to create a stack for parameter passing,
and neither having nor being able to create dynamic memory allocation.
I think C is much better for learning how computers actually work, and
C and its low-level descendants like C++ are the other most common
languages people use to "stack and organize object-oriented services",
whatever that means.

4. No language other than BASIC lets you see exactly how the computer
   calculates and iterates in a manner you could duplicate with pencil
   and paper.  [He actually says that --- can you believe it?]

Again, utter nonsense.  BASIC implementations of the time he's talking
about had very poor tracing facilities, so all you could see was what
you told your program to output, and possibly line numbers.  The level
of transparency there is easily available with JavaScript today, or
other languages that are slightly less widespread: VBA, or Perl, or
Python, or C, or full-fledged Visual Basic, and all of those languages
have debuggers so you actually can see what the program does
line-by-line in a way you could not with old BASICs.

4.5. In particular, Perl and Python don't do that.

I have no idea what he was thinking when he wrote this.  It's utter
nonsense.  You can translate old BASIC programs line by line into
Python --- many of the lines are even the same, minus the line
numbers.

5. Kids these days don't know much about how computers really work,
   because nobody tries to teach them.

True enough, but it was nearly as true in BASIC's heyday.  Only a very
small fraction of the kids who typed in programs from their math
textbooks, or even from computer magazines, ever learned assembly
language.

6. If you want to program in BASIC, it's a lot easier to do by buying
   a Commodore 64 or Apple ][ than by installing a BASIC interpreter
   on top of Microsoft Windows or MacOS.

Yup, that's true, although he could have downloaded and installed
GW-BASIC and been delighted.

7. A generation of kids is growing up not realizing they can make
   software themselves, because of the absence of BASIC interpreters.

That's mostly true --- but the reason is not the absence of BASIC
interpreters, but their feebleness.  Kids prefer environments without
the artificial limitations on power built into old BASIC interpreters;
writing programs in old BASIC dialects doesn't get you any closer to
producing something your friends will mistake for store-bought
software when they see it.

8. Only old guys and Bangaloreans do "line coding" in the IT industry
   these days.

I can't tell what he means by "line coding", so I can't tell whether
this is true or false.  If he means "coding in textual languages",
most software is still written that way, because nobody has come up
with anything better yet.  If he means "coding with line numbers",
then that's true but fairly trivial; it certainly doesn't justify the
conclusions he draws, that people who know how to "line program" have
job security.

9. OLPC, like other education initiatives, is bent on providing
   "information consumption devices", not tools that teach creative
   thinking and technological mastery.

Totally, libelously false.  OLPC includes Squeak, with all the
programming tools for kids that have been developed over years,
specifically in order to teach creative thinking and technological
mastery.

Reply via email to