Wow, what a great article!
For years, I've been grumbling about how much easier it was to learn about computers back in the days of the C-64, when you had to learn a minimal amount of simple programming to get anything done at all. You simply couldn't avoid at least a little bit of exposure to what went on under the hood in order to make all those amazing things happen. Even better, you couldn't really mess up, because the worst that could happen was that you had to switch off and on. There wasn't a hard disk to corrupt or an OS to reinstall when all else failed.
The last computer I owned that came with a workable BASIC language was my Amiga 500, purchased in 1987. Even then AmigaBasic was phased out when the operating system was updated.
My very first exposure to computers was in Grade Three, when my school got ONE computer. A Commodore PET. It spent a month in each classroom over the course of the school year, and everyone got a chance to fiddle with it. No training (because it was new to the teachers too); just a chance to play with it.
My best friend knew only that computers were supposed to be able to solve problems. So he typed in:
CAN YOU DESIGN A MORE FUEL EFFICIENT CAR?
The reply: "?SYNTAX ERROR. READY."
He lost interest; I was hooked. What the heck was a SYNTAX ERROR? And what did you have to do to make the machine actually do something useful?
Long story short, I got to that PET whenever I could. Before you know it, I had it printing my name on the screen endlessly. By sixth grade, I was writing simple quiz programs for my own edification. They had to be simple, because the school didn't have a disk or tape drive.
I got a VIC-20 and tape drive as a "reward" for passing sixth grade. A couple years later, I moved up to a C-64 with disk drive. Spent endless weekends typing in pages and pages of code from magazines like COMPUTE!'s Gazette--my main source of games and other fun stuff.
Seventh grade, my class put on a Christmas play involving a talking computer. I can't remember anything about the play, except that I suggested the amazing idea of using a computer speech synthesizer to actually have a computer voice in the show. I had to sit backstage typing the dialogue into a BASIC program during the performance, now on a C-64, because there was STILL no way to save my work at school. But it was fun and exciting, and everyone got caught up in it. And they could all understand it.
I continued to use BASIC into the DOS era, where I spent a summer (1987, I think) writing programs for my dad's office. The money I earned that year enabled me to move into the graphical era with that Amiga. Everyone I knew was still using Commodores (I don't think I ever met an Apple II user), right up until DOS began to take over the mainstream.
These days, I always tell people that I'd take a C-64 over an Xbox360 any day. Games are fun, but there's just not the depth of experience in a state of the art first-person shooter that you can get from learning how to make an animated hot air balloon float across the screen with a few lines of code on a 64.
I have not become a master programmer as a result of all this. The real result was that I incorporated the ideas of programming into other things I do. To this day, I'm not afraid to whip off a quick little macro or standalone application to solve a simple problem. But even when not programming, I am always aware, at some level, of what's going on under the hood.
I do teach first year college students sometimes. I teach a basic computer literacy course that all students need to pass if they can't pass the entry exam on their computer skills. It's not really much fun for the teacher, because the class is filled with people who are convinced they're there as the result of a grave injustice. After all, they're computer experts! They hang out in chat rooms, play free online Texas Hold 'Em during class, get their music via peer-to-peer networks, and spend their evenings playing World of Warcraft.
Never mind that they can't even make the computer print their name on the screen. And I don't even have the tools to show them how, any more. Which is a shame, because I can't help but think that there's no better way to get them fascinated with computers for real.
HTML is the new BASIC. Any computer with a notepad and a browser can use it. And HTML, unlike BASIC, is a gateway device. Kids who start to learn HTML want to go on to learn how to use sql and perl coding in ordre to make their pages work better. BASIC, while it seemed to be a wonderful thing back when we were kids, actually taught us little about how programs should be written.
When's the "Why Johnny can't perform Brain Surgery" article coming out?
Learning to program a computer is not an essential skill for a child to have. The folks who developed all this technology most likely never saw a computer, any computer until after High School.
Concentrate on the basics. After that perhaps being able to locate Louisiana and Iraq on a Map. Then start worrying about crap like computer programming.
Many out there are suggesting high level languages like Python, Ruby, HTML (which is not a language!), PHP and Java; but all these have a serious drawback. If the object is to learn how a computer works, then you cannot use a language that hides the computer from you! Languages like Python tend to hold your hand. B&D languages like Java force you to do things the "right" way (even if it is wrong), even going so far as to dictate the layout of your source tree. All this gets in the way.
I have an alternative suggestion: Use good old C. Yes, it is easy to get things wrong, like mismanage memory and other resources. But if you really wish to understand how computers work then making mistakes is an essential part of the learning experience. How, for instance, are you to learn that memory is a finite resource that must be carefully managed, if it is transparently done for you? If you understand that memory allocation is not a cheap operation, then you won't commit the silly errors I've seen in Java code where people allocate memory within a loop, when a stack variable would have sufficed.
And C is simple enough to get started in, but flexible and powerful enough to grow with. Start by writing simple console or command line programs for Windows, Mac or Linux. (A simple command-line "hello world" program takes no more than 3-4 lines of code!) Learn flow control, looping, subroutines. Learn binary logic. C can do all this. If Mr. Brin's son is really into computers, he will love the level of tinkering that C allows.
Good C compilers for all platforms, commercial and open source, can be readily had. Give it some consideration. And once you understand the computer and wish to do more complex things with it, you will have a much greater appreciation for those high-level scripting languages.
(I am a professional programmer who first started out with an Atari 800 with the OSS Mac/65 assembler and Action! language cartriges. Now that was fun!)
Much of the initial coverage about Fort Hood turned out to be wrong. Is there anything wrong with that?
The accountability imposed by another country for the CIA's kidnapping and torture reveals much about our own.
Fox News' morning show plays to type, talking about whether Muslims in the Army should face "special debriefings"
The Maine fight was supposed to be the dress rehearsal for repealing California's Prop. 8 -- but gay marriage lost
Once one obtains Seriousness credentials in the Washington media, they are irrevocable no matter one's conduct.
Salon headlines in your mailbox