Letters posted here are associated with the following article:
The letters thread is now closed.
Wow ... some of these letters are like New Math all over again.
Brin wants the classic BASIC precisely because of its limitations. The moment you say the word 'compiler' you are at least one order of magnitude too complex. Your modern programmer can probably do algebra in their sleep -- but kids still get shown two apples and two more apples and asked how many apples they have now. The point of the ultra-limited BASIC was not to enable the accomplishment of useful tasks, but to help the development of useful ways to think about the world.
Most of the more modern languages are also vastly less redundant in their coding style, with Perl and C being good examples. BASIC, by contrast, gives you lots more surface area to read and understand what the computer is doing for you, even while it reduces the possible range of what it can represent. This lack of efficiency is the kiss of death to a professional programmer, but it is exactly what a 9 year old needs.
Line-by-line programming is like learning to speak sentences. Eventually we want them to plan out that book report, but first we just want a good sentence to come out of their mouths. At some point, kids might write a program too big to be comfortably understood in BASIC. At that point, it will be time to move on.
David,
I understand where you're coming from, but I disagree pretty strongly that the interfaces of perl, or shell, or python, or ... fill in the blank with your favorite scripting language - somehow don't give you the simplistic, do-it-yourself interface that BASIC did.
I, like a lot of my generation, grew up on the Pets, the TRS-80's, the Vic-20's, and the C-64's. I first learned assembler on a Commodore 64 when I was 12 or so, and I agree that it was much easier for me to get to that point because I was able to experiment with the BASIC language. But then, unlike a lot of my peers, I took a 10 year hiatus from programming, and didn't get really back into it until grad school. Learning C was a huge pain in the butt for me, C++ even more so, to the point that I gave up on programming altogether and focused more on the application integration side of things & experimented with security subsystems that were more fun (and simple) to play with.
For me, BASIC was the thing that allowed a 12-year old kid to program a computer. It was wonderfully liberating.
But I disagree pretty stringently that the same, simplistic interface isn't available on any modern computer. Throw in a knoppix CDROM (no installation required), and an 8-year old boy can figure out how to make just about any computer become a linux workstation that features a native interface that includes one of the most simplistic programming languages I'm aware of - the bourne shell.
The 8-year old boy of my example throws in a knoppix CDROM to his parent's computer (or starts up his $100, MIT-provided, laptop if he happens to live in the thirld world), clicks on a terminal icon, and starts typing:
VAR="Hello World!"
echo $VAR
And see's his computer screen show:
Hello World!
How different is that from a bit of basic code? How hard is it to use "printf" to move a dot across the screen? And even perl (or perlsh, for the adventurous) offers a fairly simple interface.
I really don't understand why you're fixating on the need for BASIC when very many common, simple program languages are just a few feet away from you in the form of knoppix CD.
Mark
Maybe some of the BASIC-bashing comes across as snootiness, but the venom just comes from having lived with it, and then having tried something better. I'm just trying to spare other people the pain is all.
Some people think that while BASIC might not be a good thing for a pro, it's still good to start with. I disagree--some commenters here ascribe good qualities to it, but those exist elsewhere just as much, or more:
1. "It's simple, and doesn't require compiling." First of all, BASIC as I learned it (GW-BASIC) wasn't really all that simple. PEEK, POKE, CALL, and GOTO are like chainsaws, except not as useful. In other words, BASIC has some sharp points lurking in it that really aren't helpful from a learning perspective.
When you're starting out, you don't have to use those, of course, but the same is true for other languages: when you're starting out, you use a small, simple subset of them. BASIC is "limited", but that's not the same thing as "simple"; a language like Python is simple and pretty easy to start with (you can do line-by-line programming in it just fine, you don't have to compile it, and I'd say the basics are easier than they are in BASIC). With Python, though, it's easier to move on to more interesting things.
2. "It was universally available." Today, the internet is about as available, and through the internet you can very easily get all kinds of good programming tools. Google is your friend; search for "python", click on the "download" link, click on the "Windows Installer" link, or on the "Python for Macintosh OS X" link if that's your thing. You do have to consciously choose to do it, but if that's the barrier for you, then you've got bigger problems than learning to program. DrScheme is about as easy to install. There was a time when getting this stuff was hard, but those days are gone for good.
You shouldn't need a "computer expert" to tell you where to download Python; once you've got the recommendation (one of the first ones to show up here, and I'm sure Dr. Brin has heard it a hundred times) it's extremely easy to do.
3. "Other languages are arcane." Here's some Python:
>>> print 1 + 1
2
>>> message="Hello world!"
>>> print message
Hello world!
Clearly, we're talking advanced computer-fu here. Scheme is slightly stranger to look at, but if you can get over the syntax it's very simple (if you've ever used RPN on a calculator you're halfway there). If you can't handle it, you're probably old ;-)
Seriously, though, I think a lot of people here underestimate how easily kids learn. This means two things: first, today's languages really aren't that hard for kids to pick up, and second, many people here with fond memories of BASIC acquired them when they were young. BASIC wasn't really that great, honest; you were just that good at learning.
4. "It was the only game in town for beginners" --or words to that effect. This meant that it could be added to math textbooks. This is true, as far as it goes. The explosion in software means that there are a lot more options now. Several of those would work well in a textbook context, if the textbooks were kept reasonably up-to-date.
One thing that's not going away any time soon, though, is the rate of change in software. That change is the real rub between a math textbook and a programming tool. And the speed of change in software is mostly a good and necessary thing. If you really want programming in your math curriculum, perhaps it could be included in a small supplemental paperback or on a web page. Putting it in a book that has to last for a while is not a good idea, though.