Letters posted here are associated with the following article:
The letters thread is now closed.
Part of the problem is that the included language isn't easy enough. i.e. Ruby, Python, etc. are still not going to be as logical or close to the metal as Basic was. I learned basic when I was in TaG as a kid. It was a good jump start into programming. And now that's my career. I meandered into Biology and English literature in college, but I think that experience programming on the Commodore 64 and committing to tape definitely helped me to love to learn to tinker. So it wasn't a big jump for me to use Linux full time later in life when I started working as programmer.
Anyway, I think the point Mr. Brinn didn't make well enough, aside from the above, is that even if one of these languages were as easy as Basic, they're rarely included and never intrinsic to the operating of the machine, unless you're talking about Linux. On Windows you have to jump through hoops that most kids today just won't do. They'll spend all day customizing their MySpace page, but can't be bothered to even learn HTML, much less JavaScript, much less Ruby. It is sad, but I think it's a natural progression of the fact that users have become so abstracted from operating their computer to the point where it's a tool or an entertainment device or a news receptor, used to do things far far beyond strict "computing".
Someday as horsepower outstrips the computers we use today there will come a time where socialization and understanding the rules of business and communication are far more important than the actual programming. The language will be 4GL or 5GL and all the kids will need to know is how to communicate well enough or how to design for the end user. And as heavy consumers and avid socializers (using their computers), I think in a strange way they'll be uniquely placed to thrive in the programming environment of the future.
I don't program anymore -- I haven't in 17 years (since I started law school). What programming at a BASIC level provided me, however, has proved invaluable to me as a lawyer. Understanding logic -- that you can solve large and complex problems through IFs, ORs, ANDs and GOTOs -- is invaluable regardless of one's career path. Even more valuable is the understanding that a machine (which most of us must use as part of our jobs) does not have a mind of its own -- it does what it is told to do. When a program that you write does not work as intended, it is not the machine's fault -- the program writer did something wrong -- the logic of the writer went astray somewhere. Nothing imposes the same level of intellectual accountability that programing does. My dad (who worked with those FORTRAN punch cards) forced all of us kids to write programs in BASIC to solve all types of math and accounting problems as junior high kids (this was in the late 70s -- we had an old WANG computer and then an Osborne PC). None of us kids developed into scientists, engineers, or computer programmers (we are doctors, teachers and lawyers), but we do all understand how computers and logic work, which makes us far more effective in our chosen lines of work. My kids, despite their ability to use the internet, email, and computer games, have no such understanding.
As textbook Gen X'er, I had my first computer, an Apple II+ (48K RAM!!) in 1982, did a little BASIC programming with my friends. Moved up to a Mac in College, then an AT/XT in an internship in 1988 (Lotus 2.01!). I remember that everything was just a little too hard. Just printing Landscape was a tedious chore that often crashed the computer. Thank God we don't live in those days anymore. But like Mr. Brin's automotive example of the WWII generation - it really taught us how to understand computers. We *really* wanted to harness the power, and could see the possibilites, but often first we had to get under the hood a little. It's so much easier and better now. However. In the business world I see a lot of 20 somethings that are great at IM, text messaging, and feel absolutely at home sitting in front of a screen all day. But something is missing. For all the ballyhoo about how this generation will be great at computing - what they really are great at is their comfort level with a GUI. And that's about it. No essential curiosity, no exploration, no poking around trying to figure out how to do something in the essential business apps (excel, word, powerpoint). More importantly than typing the code and watching the dots move on the screen was the debugging process. Trying to figure out *why* this wasn't working. Finding the solution was such a valuable process - and often revealed a level of processing possibilites not understood before. If all you came up with is a web browser where you point and click at everything - there's no fundamental power over what you are doing - and all curiosity is quashed. And because it's all sealed up, if it doesn't work, or you want to do something else - you're thwarted, there's no poking around under the hood - so giving up is rewarded. It's sad. I would never wish anyone to ever have to deal with a computer crashing just because they wanted to print landscape. But there has to be a way to impart those valuable lessons and critical thinking skills to the next generation.
I have written tens of thousands of lines of BASIC code on everything from a UNIVAC 1108 to an Apple II and I am rather fond of the language. Over about the last 10 years I noticed that programming was getting less and less fun. I was spending all my time looking up objects in the documentation instead of writing code.
This lead me to the realization that when I used to program in BASIC everything was built into the language. One manual, one interface, one way of doing things. Simple things were simple to do and hard things were proportionally harder. The languages I use today have almost nothing built into the language. Even printing a simple line of text requires that I #include the correct library and learn the ins and outs of the IO library. What ever happend to
PRINT I, J
And it spreads into other areas as well. In the bad old days I would code a quick BASIC script to do a financial calulation. Now, I have to use a spread sheet, or spend too long coding it up in Java or C++.
Of course, the problem is that you have to add a *LOT* to a language to be able to write modern applications. And the market for programming languages (even free ones) is for application developers, not kids. I have spent a few hours a week over the last three years playing with designs for a language aimed to solve this problem. I want to make programming fun again. I want to make it usable by kids and adults. Will I ever do it? Maybe. :-)
I do have one question for you, why are you so intent on line oriented languages? My experience is that forcing a language to match up with lines of text causes a lot of confusion. There always has to be a way to cross a line boundry. So, I was surprised by you focus on that type of language. On the other hand I am an old fart and computers were mostly science fiction when I was in junior high. (Oh, the existed, but no one had one. They cost hundreds of thousands or millions of dollars back then.) I do teach game programming so I thought I was in touch with the youth point of view on this subject.
Bob Pendleton
P.S.
I've loved your writing ever since I first saw you in Analog. Looking forward to anything you write.