This has been knocking around the blogosphere for a while now, but I may as well engage with it. Apparently, David Brin thinks coming generations will miss out because computers don't come with BASIC any more. I'm not so sure. I was a ZX Spectrum kid, and I used to spend a lot of time fiddling with code on it without any clear aim. Later, I met Mallard BASIC on the Amstrad PCW, and did a few things slightly more useful with it - Mallard had a file handling thingy called Jetsam you could call from within a BASIC script, which helped.
But - what? I rejected computers for a while, and only really got back to it when I developed a serious forums habit at RHUL. In a similar way, I first heard of blogs and Blogger in Vienna in the autumn of 2001, but didn't cross the threshold - so I suppose Instapundit's fame is at least in part my fault. Now I regret not learning to program properly. Looking back, though, I wouldn't wish BASIC on a new generation of geeks. Certainly not on computers with networking, graphical user interfaces and other stuff. Because the gap between "Hello World" and "anything you might want to make a computer do, especially when you're 12" is very broad. Yes, you have to learn concepts like sequential execution, loops, arrays, subroutines, procedure calls and that they are to be preferred to subs, that GOTO is considered harmful and the like.
But the point of an introductory language is that you shouldn't notice that you're learning that stuff. If the aim is learning-by-doing, it's got to make things happen, and design should involve some thought about what the users might want to do (think mobile devices).
That said, which programming language would my readers recommend I learn? (Don't say Brainfuck! or anything like that, please.)