September 13, 2006 7:19 PM
I just came across an article in Salon titled “Why Johnny can’t code” exploring the decline in availability of simple programming tools included with computers. It happens to be written by one of my faveorite Science Fiction authors, David Brin (a fact that I didn’t realize until the mention of Startide Rising on the last page—bad me for not reading bylines). His basic thesis is that currently children (or students of any age) have no ready access to a simple programming language like the BASIC that used to be included with every computer, and that because of this, while computers are becoming more and more important, people have less and less of an inroad into understanding how they work.
Only, quietly and without fanfare, or even any comment or notice by software pundits, we have drifted into a situation where almost none of the millions of personal computers in America offers a line-programming language simple enough for kids to pick up fast. Not even the one that was a software lingua franca on nearly all machines, only a decade or so ago. And that is not only a problem for Ben and me; it is a problem for our nation and civilization….
And yet the thought processes that today’s best programmers learned at the line-coding level still serve these designers well….
But today, very few young people are learning those deeper patterns. Indeed, they seem to be forbidden any access to that world at all.
And yet, they are tantalized! Ben [Brin’s Son] has long complained that his math textbooks all featured little type-it-in-yourself programs at the end of each chapter — alongside the problem sets — offering the student a chance to try out some simple algorithm on a computer.
I desperately want to agree. It sounds like something that I would complain about, and certainly I think that my experience with simple programming languages as a child were incredibly important to my development. But I can’t really get behind it. Or at least I think that Brin has misplaced the blame in mourning BASIC.
This might just be because I’ve never been a fan of BASIC. I grew up with Logo, which my mom has used to teach problem solving and thinking skills for my entire life, and I don’t really get the fascination with it being a “line programming language” as Brin says repeatedly. The strict line nature (eg controlling flow by saying GOTO 12) instead of calling a function was what always turned me off from BASIC. I don’t see why this makes it easier to follow. Instead it removes some of the most important teaching tools like true recursion and returned values which you can get when you use functions to control the flow. It might be a what you learned first kind of thing, but I don’t see why basic was so great.
Except for the fact that it meant that every computer came with at least some kind of scripting language. He does have a point there. Of course my first reaction is get a Mac. Then you a whole professional programming environment for free not to mention shell scripting and php. But of course this doesn’t really address his complaint. It is true that you can’t just start up the application, start typing, and get a functioning program out.
It’s not far from it, though. C is actually a pretty low level language, and with some help no greater than what is in the “Try it in BASIC” sections Brin mentions, you can write straightforward console programs in C using Xcode that don’t use more lines than it would take to write the algorithm in pseudo code. And, of course, (as Brin does mention) Logo is still alive and well.
I think what I’m saying is that the problem isn’t so much that it is hard to access the programming languages, or that the lack of BASIC is such a bad thing, but that people don’t expect that a kid can write simple programs any more. I say, instead of bringing back BASIC, more people should write books and teach classes using C or Logo or even shell scripting aimed and teaching children about implementing algorithms in code the way they used to with BASIC. There are plenty of resources out there if they wanted to do it. Like I said, this is basically what my mom does.