Letters posted here are associated with the following article:
The letters thread is now closed.
Dear Mr. Brin:
The problem that you have encountered in attempting to teach your son Basic represents the logical conclusion to a problem I first encountered when I entered college in 1994.
Back in 1993 and 1994, I was a skilled classroom programmer in what I suspect was the last period in which Basic was taught at public schools. I was good at it, and wished to become better when I entered college. Unfortunately, when I actually got to college I quickly learned that not only was Basic not taught- you were expected to be familiar with Unix, Irix, B, C, and other programming languages which simply did not have the same theoretical underpinnings and logical structures.
Despite their arcane nature, I would have gladly learned them- if my college had been willing to teach me. Unfortunately, there were no courses for beginners- only for experts. Thus began my education in political science.
Years later, when I finally decided that I wanted to try them anyway, I looked for the easiest programming language I could find. It was Microsoft Visual Basic 6. A good, solid program available in student version for several hundred dollars, available in commercial version for... over a thousand dollars. And immediately replaced by Microsoft Visual Basic.Net, whereupon ALL copies of VB 6 were withdrawn from production.
Simply put, the phraseology used to introduce and instruct on even INSTALLING Visual Basic.Net is terrifying. Without ever actually dwelling upon the fact that VB.Net is in fact a 'language' used to make 'programs', the manual implies that advanced knowledge of installing network servers and proxy servers is necessary before you can even begin using it. It talks about 'building applications', 'retrieving databases', and 'creating XML webpages', and gives the impression that if you're not already a graduate with a degree in servicing computers, you shouldn't even bother. It scared me away, and I have a college degree and a law degree. I cannot imagine any child reading this stuff and still being willing to give learning VB.Net a try.
Sincerely,
Michael B. English
...but Brin still makes some very good points. I'm working on my doctorate in CS now, and the students I see really are missing some of the basic nuts & bolts. And coincidentally, those fundamentals are precisely the ones on which BASIC focuses.
Seriously though, BASIC is such a simple language and I know that Brin is smart enough to write his own version. Most open source projects start from some random person being annoyed because he/she can't find something online that meets his/her exact needs...
And just to reply to the other letters: Python's cool, but it covers up a lot of the fundamentals. Perl has the same problem, plus has the added misfortune of being amazingly difficult to read. HTML isn't even a procedural language (and it doesn't come "pre-installed" on computers--it's just interpreted by a browser). JavaScript can be dreadfully unpredictable and testy in its behavior, and it's a bitch to debug. (I know--I coded in it professionally for a year.) And please, let's not educate tomorrow's coders in MS's current kludgey offerings--at least until they clean up their act and make their stuff compatible with everyone else's. When you use one of their products, you have this nasty tendency to end up with all the others too. And finally, it's and its are different words. Maybe it's snobbish of me, but I have a hard time reading letters that confuse them.
Good luck David and Ben. :)
Some excellent responses here. I question the notion that BASIC is somehow going to teach a kid how the computer really works. Help me out here, but has anyone other than a Bleeding edge Basicist ever used the language to dick around with the stack?
All of my memories of BASIC are that it was an easier way to get high level chores done than assembler and that it was an ugly way to do it. GOTOS, and horrid line numbers before you could label. I spent a lot of time back in the day figuring out how to get crap out of BASIC and into something that people could use. It was during that struggle that I figured out a couple of things: if I could avoid using BASIC, I would do so. If I could avoid using FORTRAN, another nasty, antiquated, language, I would do so. Had I ever learned COBOL, that would have been the third thing I would have figured out how to avoid.
To my way of thinking, the reason the earnest author of this article, David Brin, wants BASIC, is that it is something he knows. He is enthusiastic about it, because it was fun for him in his youth; something he can easily share with his son, Ben. When I read the article, the first thing I thought was, "well, why not just go get a shareware BASIC interpreter and run it in a shell on a PC, Mac, or Linux box?"
Several people have suggested just that.
What I want to know is, what is the magical allure of BASIC outside of the constraints of familiarity? Old style BASIC running in a shell is pretty boring, and it will not shed one bit of light on the abstractive moat around the machine one encounters using modern languages and coding practices. Nor does it share much light inside the moat, for that matter.
I am not going to engage in arguments with the computer scientists and other rabble hanging around Salon.com about this, but this article reminded me of someone lamenting that there were no more Conestogas available for Grandpa to teach the young'uns how to cross the Missouri with an oxe's ass in their face while a perfect bridge runs from bank to bank.
As a software professional (who started with BASIC, since that was mostly all there was, but moved to assembler, Pascal, C, as soon as I could get my hands on them), I agree with other posters here: "BASIC is gone, and good riddance" (geophile).
I also echo the sentiment that Python, Ruby, even PHP and JavaScript are of greater pedagogical value. There is not a high barrier to entry, although it superficially "seems" so, and dwelling on this point indicates the shallowness of Brin's analysis.
I don't think the problem is in access to technology; the problem - again, other posters got here first - is in attitudes to learning "from the ground up". I've found many adult professionals who were simply uninterested in what makes the infrastructure tick - that their lifestyle and jobs depended on. That's fine; it just guarantees an ecological niche for the geeks. I know many of them, and I share many geek traits.
If Brin's son is "tantalised", then suggest he builds a web site (for example). After learning static markup he'll quickly get the hang of PHP.
If he's as "tantalised" as I was, he'll be programming in Xlib or Cocoa or GTK within a year.
Parents - even geek parents like me - should remember that it's quite possible their child isn't one of them, and doesn't need to understand the machine at the machine code level. Maybe they only want to check their mail, reliably and securely message their friends, draw in Photoshop, or edit their band's demo reel in iMovie.
Nobody is surprised when an assembly programmer doesn't want to drop down to soldering TTL circuits. Nobody is surprised when a C programmer balks at writing assembler. Nobody is surprised when a SQL DBA draws the line at writing Perl. The temptation to micromanage the machine is too often exercised in the commercial environments I see. Let kids be exposed to HLLs and VHLLs and good application user interfaces. Let them understand a web site from the "does it afford the user" perspective rather than worrying about counting cycles and microsecond latencies. There is too little attention to human-computer interface and too much "use C dude, Ruby is too slow".
The true impediment to computing civilisation is Microsoft. Step number one, buy your son/daughter an iMac G5 and bring them into the 21st century - or at least show them some of the magnificent alternatives - and you'll give them an intellectual and vocational independence worth having. If nothing else, they'll learn that there's more to computing life than crashes, viruses and cold, dead, closed minds.
To Jim Rootham: The emulator you're looking for is simh (http://simh.trailing-edge.com/).