Why Johnny Can't Code

This article by the author David Brin set off a long round of discussion in Slashdot. A one line summary of the article would be "BASIC used to be on every computer a child touched -- but today there's no easy way for kids to get hooked on programming." And in some important ways he is right. In other important ways he's not. But let's start with where he is right.

BASIC did used to be on every computer that a child, or most children anyway, touched. There was BASIC in my old TRS-80, Apple IIs had BASIC, and so did the Commodore Pet. The Olivetti P-6060 (anyone else remember those?) had BASIC on it. DOS computers had Qbasic or GW-BASIC.  I could go on and on showing my age and putting young people to sleep but you get the picture. A child could sit down at a computer, type some commands into the computer and watch the computer do sometime. It was easy, it was exciting and it was the same everywhere. Lots of kids got hooked on computers playing with BASIC. Of course not everyone was thrilled with this. Dijkstra is famous for claiming "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration"

Today BASIC is not on many computers at all. At least it is not a standard and the various versions of BASIC that are available are not the same BASIC that many of us grew up with.  There are several versions of BASIC that are available for free and children can get them and they can install them but there are not there to discovery easily and by accident. Even worse they are not the simple interpreted BASIC of old. BASIC like most other languages have been optimized for professional developers. While a great many students learn how to program using Visual Basic (available free as Visual Basic Express) it is not quite as easy as the old versions of BASIC were.

While we are talking about Visual Basic Express, there has been some talk about adding it to the operating system as a standard part of the installation. Dan Fernandez does a great job of discussion why the decision was made to not do that. Nothing in the computer field is the same as it was 20 years ago. Back in the old days nothing took up a lot of room but today everything seems to take up a lot of room. Even with large disks the tolerance for filling up that space with things most people will not use is pretty low. The command line compiler for the .NET languages is part of a normal OS installation BTW. That is not well known.

So where is David Brin wrong? I think there are a couple of ways for students to get hooked on programming. Simple, friendly development environments that allow students to explore programming. I'm thinking of tools like Alice, Squeak, and Scratch among others. I especially like Alice and can see a lot of kids getting hooked on programming by using Alice. The only down side of these tools is that they are fairly limited to their own environments. There is also Phrogram which is a very BASIC-like language with a simple IDE that beginners can experiment with. It's not the same as the old versions of BASIC but I'm not convinced that is really a bad thing.

The biggest problem with the old versions of BASIC is that they didn't have a natural upgrade path. Few of these other development environments have a natural upgrade path either and that is a concern. Phrogram is something of an exception there of course. This is a challenging time for hobbyist programmers and young people who want to experiment with programming. This is one reason that I really wish we could get more middle school exploratory courses in programming. I think that good teachers can make a real difference. I believe that the problems Dijkstra saw with BASIC are more the fault of bad teaching (mostly self teaching) rather than the language itself.