Letters posted here are associated with the following article:
The letters thread is now closed.
I started programming in Commodore 64 Basic when I was in elementary school. But I think you are having a "Get off my lawn!" moment.
Try Cygwin. You'll get a Unix shell environment that blows away Basic as a learning tool, is free, and installs as easily as any other Windows app.
You can get as "close to the metal" or as abstract as you like. If you want to write your own algorithm to sort text in ASCII-ascending order, like I did in Basic back in '84, there is nothing to prevent you from doing that in a bash script. But isn't it much nicer just to type "sort" and save your mental expenditure for less tedious programming exercises?
That's what I remember most about Basic. God, was it tedious. Beginning each line with a new number. Hoping you left enough of an interval between lines so you wouldn't have to renumber them later when you inserted additional code. Gosub 23000. What the hell did that mean? Scroll down to line 23000 and find out. Spaghetti code isn't a bug, it's the primary feature of the Basic programming language. A lot of tedium that just didn't add that much to my understanding of programming.
I think our author is creating a problem where none exists.
If you want kids to learn programming on their own, here are the three rules:
It's got to be fun
It's got to be free
It's got to be easy
Fortunately, there is a line-oriented programming language that already exists on every home computer on the planet, and it meets all three criteria. It's called Javascript. It runs in your browser. And it teaches everything you would learn from BASIC.
What, indeed, do you learn from BASIC? Well, you learn about variables, subroutines/functions/methods, and about "if", "for", "while", and "print" commands, and about basic I/O. Javascript, like pretty much all programming languages, has all that.
Plus it meets the first criteria: It lets you do fun stuff. You can make things happen on web pages, and post them for your friends to see.
I learned to write code in the '70s in grade school, and my first program was a variation on the old StarTrek game. I spent hours obsessively adding new features to a program that you played on a clackety-clack teletype. No video back then; just paper and ink for output. I would not have done it unless it were just plain fun.
So don't lament the loss of BASIC; it wouldn't work anyway, because it's just not fun anymore. And don't think for a moment that it is in any way superior to Javascript or a zillion other easily-obtained languages. The concepts are all the same. I'm not worried about the kids.
I sent this article to my son, who taught himself to program in BASIC at the age of eight, and now is a programmer for Google. I always thought that those born in the early seventies were an accidentally privileged generation, for the reasons explained in this article. But my son has always disagreed, and still does. His answer arrived this morning:
"BASIC! Oh David Brin, you weird old coot.
HTML is the new BASIC. My Space is the new Apple II. Kids these days get it."
I still disagree with my son on this matter. But he's the expert, so I guess I just have to accept his judgement.
I found Brin's essay to echo a complaint I've had for several years now.
I am a professor at one of the University of California campuses. I teach a range of subjects in biology and anthropology. When it comes to educating PhD students, I teach applied mathematics, statistics, and numerical methods to biologists and anthropologists. We get extremely bright PhD students, and they are very computer literate, but...
...very few of them can write a program that will even compute the average of a series of numbers. It's extremely frustrating. Each of them has spent many many hours in front of computers on their way to our PhD program, but very very little of it was spent building sets of instructions. Older scientists are often less computer saavy, but know more about programming.
This means more recent PhDs often actually know *less* about programming than previous generations do! If these students could write simple programs for their own use, they could save themselves countless hours of coding and recoding data. They could validate their statistical methods.
Look, specialization is largely good for society, and having software engineers do most of the programming these days is a reflection of specialization. It's similar to how automobile repair has become an increasingly specialized trade. But scientists often need very specialized programs. Waiting for software engineers to make some pretty pre-packaged environment will often not work for us. We have to take out our own trash. We have to fix our own fuel injector. Heck, we have to build our own fuel injectors.
It's gotten to the point that I ask first-year PhD students if they can program (most, "No") and require them to pass an exam on simple programming (in a language of their choice) before they can advance to candidacy. We make it work that way. But most universities just let their PhD students struggle on their own and probably never learn much about programming. This varies by discipline, of course, but programming is no less useful in ecology than it is in astro physics.
In my experience, the younger the students, the worse their knowledge of programming, on average. And it's damaging to the practice of science. It's certainly not Microsoft's responsibility to help us, but I'd sure appreciate it if they put BASIC on every install and made it a default desktop icon.
I teach programming, AP Computer Science. Like David I am so sad that the day when programming was the coolest thing you could do on a computer, is long gone. Like David, I wish accessible programming environments were more popular. But I disagree that a lack of accessible programming environments has caused it.
Squeak (squeakland.org) is just one example and is everything a programming teacher could ask for. It is a language which, even though it's over 30 years old prepares kids well for modern programming (unlike BASIC). It is proven to be more accessible to new learners and children than BASIC. It gives young programmers the ability to incorporate all kind of modern multimedia into their programming. In my fantasies, all elementary and middle school kids would be raised on it before they got to me in high school.
So why aren't? Because now the competition for kids' attention is fierce and there are lots of cool things to do on computers without having to figure out why this algorythm didn't get the data it needed.
I don't have a solution. I guess from now on people will learn to program only when they are paid to.