David Brin wrote an article for Salon about the absence of BASIC on modern computers that is wrong on so many levels that it makes my brain hurt. Here’s the argument:
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.
Unfortunately, writing code for your Web browser doesn’t satisfy Brin (although he doesn’t even consider Web programming in the article), because it’s not close enough to the machine, or not “BASIC” enough, see?
Those textbook exercises were easy, effective, universal, pedagogically interesting — and nothing even remotely like them can be done with any language other than BASIC. Typing in a simple algorithm yourself, seeing exactly how the computer calculates and iterates in a manner you could duplicate with pencil and paper — say, running an experiment in coin flipping, or making a dot change its position on a screen, propelled by math and logic, and only by math and logic: All of this is priceless. As it was priceless 20 years ago. Only 20 years ago, it was physically possible for millions of kids to do it. Today it is not.
The “scripting” languages that serve as entry-level tools for today’s aspiring programmers — like Perl and Python — don’t make this experience accessible to students in the same way. BASIC was close enough to the algorithm that you could actually follow the reasoning of the machine as it made choices and followed logical pathways. Repeating this point for emphasis: You could even do it all yourself, following along on paper, for a few iterations, verifying that the dot on the screen was moving by the sheer power of mathematics, alone. Wow! (Indeed, I would love to sit with my son and write “Pong” from scratch. The rule set — the math — is so simple. And he would never see the world the same, no matter how many higher-level languages he then moves on to.)
This is just completely wrong. Yes, there are tons of higher level libraries and abstractions that are part of modern scripting languages, but take a look at an introductory text for any of these languages, and you’ll see simple, short programs exactly like the ones he’s talking about in BASIC. Indeed, the thing that makes programming books work is that you can understand how programs work when written on paper, and then see how they work when you run them on your computer. That’s how you learn.
Languages like Ruby and Python even provide an interface exactly like the one on the old Commodore 64 where you can simply type in statements and see what they do, line by line. Ruby’s is called irb and Python has its interactive mode. These are ideal environments for experimentation and learning.
Given that today’s tools provide everything that BASIC did (and they do), let’s look at the big picture. Today, with Web access, you can find tons of example code for whatever language you prefer (even BASIC). When I was learning to program, we were basically captives of the computer magazine industry. You can also easily share your programs online with other people who might find them useful, so there’s no need to toil in solitude. There are plenty of outlets online where you can get help if you’re stuck. And best of all, there are lots more reasons why you might want to program.
Brin decries the fact that people are being taught to be computer “consumers” rather than “builders” but the hallmark of the current era is that many applications that you consume also enable you to build. You could be writing on LiveJournal, or posting photos to Flickr, or uploading videos to YouTube. You can sign up for a Ning account and start building your own publicly available Web applications without paying a dime. World of Warcraft has over five million subscribers and it contains a built in development environment that uses a real scripting language called Lua. Yes, you can consume, but you are also able to build, and it’s easy to get started.
It would be better if more people knew how computers worked and programming were a skill that’s dispersed more widely throughout society, but it’s not the tools that are at fault here. The blame lies elsewhere.