Letters posted here are associated with the following article:
The letters thread is now closed.
First off, I am FLOORED that there are so many comments on this article, and so many Editor's Choice letters. Amazing.
My Dad wouldn't let us have an Atari, he insisted on an Apple II. He hooked up to an old TV and traded games and programs on tape with his brothers.
If my brothers or I wanted to play Space Invaders or Castle Wolfenstein, etc. we had to earn our game time by spending a half hour using a typing tutor program, or writing BASIC code. A half hour traded for an hour of game time, so I spent a good part of my pre-teen years writing double-entendre laden Mad Lib progams using variables.
I didn't grow up to be a programmer, I'm a graphic designer, but that introduction to logical thinking has made me very adept at decoding PostScript printing conflicts. It helped me learn HTML, CSS and PHP. It helped me think like the computer.
When I went to art school we were taught that you had to know the rules before you can break them. How will our new generation of programmers develop innovative new products if they don't understand the "basics?"
and as a postscript of sorts, my son, who is 11, doesn't program, but he can change a tire, check the oil and jump start our old Toyota if need be. He also knows the difference between RGB and CMYK. Teach your children well.
So can Li. Better get used to it, folks.
...that's just out of sheer Boomer nostalgia.
I couldn't begin to assess the technical merits of the programming-language debate. But what really struck me was the close, positive relationship the author has with his son. That's what's really important.
I used to program using Basic back in my teenage years, today I'm a Unix admin and the closest to programming I do is a little shell and some perl. Certainly, the benefits of such hands on was the development of the necessary logical structures that would later help me relate and understand more complex problems.
What the current "scene" lacks is the broadness of application Basic had, in order to make "something" today you need a lot of tools; the tools are fancy, the presentation flashy, but you can't really see what's going on under the hood, this is partially ok if your later leanings aren't tied specifically to programming or systems engineering. Yet the true value of the experience, specially at a young age, is akin to LEGO, with simple elements your imagination and skills develops to build something complex. This is lost on todays tools, everything is already done (cut/paste) and the joy of striving stifled.
In this day and age, why start your kid off with a langauge that will mangle his programming thought processes? There are much better options than BASIC available for free download, the best being Scheme (http://www.plt-scheme.org/). Smalltalk Squeak (http://www.squeak.org/) is also a good one to start with.
I still see a lot of posts missing what I thought were the main points (which I agree with). BASIC originally came on the computer - nothing else to buy (or find for OSS fans). Nothing like that exists on WINDOWS computers now. And BASIC was simple. You didn't have to know anything about the computer. It was an interpreter, so you didn't have to know about compilers, linkers and such. Just type and run, and it would tell you exactly where you had a problem or it would just run. And it had very few commands. Very simple.
This isn't about the best language to teach kids HOW to program, this is about giving kids the opportunity to try programming to see if it is for them. BASIC was simple and relatively pain free. If a child discovered they liked programming, they could learn more on their own or go to school (like I did).
Thanks for the original article!
After some time wrestling with this same dilemma myself, even though I have the beginnings of a museum of 8-bit computers in my garage, I finally settled on one of the few devices with imbedded BASIC still being actively produced and developed with a lively community of people (mostly middle school and high school students themselves) creating and sharing programs still today: the TI-8x family of calculators.
There are some limitations - the screen is tiny, there's no QWERTY keyboard, and the commands are not standard. But it's simple to learn and use. Ten years ago, I wasn't beginning programming on my TI-85 - that honor falls to the Apple IIe and Amiga - but even while I used C and learned Java in college, I still enjoyed the novelty (and unique challenge) or creating complex programs on such a platform.
Dear Mr. Brin,
Have you perhaps considered introducing your child to JavaScript? Sure, it needs a little framework (HTML or XML), but JavaScript has been toted for years as being fairly easy to learn.
I admit I'm a little biased, having written the JavaScript Developer's Dictionary for Sams Publishing (I don't recommend it for people just starting out). Even so, there are applications out there with a standalone JavaScript engine (Mozilla's xpcshell gives you command-line JavaScript access, but you may have to compile Mozilla or get the XULRunner SDK in order to get xpcshell).
Alex Vincent
moderator, XML forum @ http://www.codingforums.com
P.S. I loved "Foundation's Triumph".
I strongly agree with the author that the computer industry has moved from viewing users as participants to being consumers. In 1979 when my first daughter was born the computer "revolution" was just beginning and there were many books teaching programming to children, now it is difficult to find any. Even books and languages that purport to teach programming tend to emphasize the use of prepackaged solutions where the "programmer" simply invokes a routine that is too complex to understand and may not be customnizable or even suitable.
An example is my aborterd attempt to teach my son to program using Visual Basic. Our first project was a simple game that had little annimated butterflies flying around that exploded when clicked, causing the remaining butteflies to move more quickly. The whole thing was modified from a "screensaver" example. The problem which came up quickly was how to add the sound of an explosion when the butterfly blew-up. I could find nothing in any book in the library, Borders and other local bookstores, or the reference book that came with Visual Basic that told how to programatically invoke a wave file. All the references had on sound was how to invoke a Media Player (start button, pause, etc.). This functionality seems to be primarily focused on the ability to add a user control to a presentation rather to provide a general purpose programing function.
In my view, learning is what happens when you are trying to do something else. The emphasis should be on the utility that the concept provides, not on the abstract idea that remembering various arcane concepts is "good for you". The best way to teach computing is to try to create something which requires that you program the computer to do it. This bring concepts into perspective and simplifies remembering them. The best type of project to provide the motivation to see it through is one which interests the student (this is not an algorithm to sort a list unless that is part of a more meaninful activity). In most cases this would be best served by teaching game programming. I am not talking about coding Oblivion from scratch (although it might evolve into that at higher grade levels) but starting with simple games (my 18 year old still enjoys Castle of the Winds) and progressing from there.
The other problem is that in the quest for bigger and better, programming languages are evolving quickly, making it difficult for the reference materials to mature because they go obsolete so rapidly. I propose that we create several stable languages such as "Educational Basic" or "Educational C++" that have a commitment to staying the same so that the reference materials can pe produced, mature and be profitable for their authors and publishers while providing the ability to convey the concepts to anyone who wishes to learn. A simple tool used well is better than a complicated one that is not used.
Jim