David Brin laments the lack of simple built-in programming environments on personal comptuters [via Slashdot]. I too remember learning to program on my Apple IIe – if you turned on the computer without a programmed disk in the drive, you fell into BASIC, and I copied many listigs out of magaziines or books and played around with their functionality. Brin is entirely right – this type of built-in, no-fuss programming environment got a lot of us started.
Now, there are still command-line options. My programming students download Java off the Sun website and compile and run from the DOS prompt, and they could use Notepad to write their code, though I think a more supportive editor is desirable. But, Java isn’t accessible in the same was BASIC was. And installing and running it this way requires some wrangling with your PATH environment variable – particularly if you have Quicktime installed.
And Brin points out that even if you can fairly quickly get a Java environment (or C++, or…..) going on your computer, these alternatives do not match the advantages of BASIC. I’m not going to head down the path of arguing comparative programming languages, though I think there are other programming languages that can be interesting tools for early exposure (okay, I’ll just mention LISP and its functional ilk…..) but will agree that our modern robust languages don’t lend themselves to back-of-the-book, type-it-in experimentation.
The whole article is a really good read, but Brin’s bottom line point is that without this ease of experimentation, today’s children will grow up with the computer being a perevasive tool but no more understanding of how it really works than most of my generation has of the workings of our car (especially compared to the knowledge of our grandparents). Says Brin:
The parallel technology of the ’70s generation was IT. Not every boomer soldered an Altair from a kit, or mastered the arcana of DBASE. But enough of them did so that we got the Internet and Web. We got Moore’s Law and other marvels. We got a chance to ride another great technological wave.
I thtink Brin is a bit too dismissive of the value of “information consumption devices” when engineering and used properly. But given that there is no technological reason why such devices can’t also allow easy access to minimal programming environments, I think he is right to question whether we are advancing ourselves beyond a point that invites the energy and enthusiasm of novices and hobbyists.
I had never really considered that aspect of programming as it relates to today’s children, but I do think you (and Brin) bring up good points here. It’ll be interesting to see if things play out the way you’ve predicted (i.e. “advancing ourselves beyond a point that invites the energy and enthusiasm of novices and hobbyists.”
I think that there are other symptoms of this. When I was in high school, programming was an elective and only a handful of us took it. But it seemed as if this was set to change and that over the next decade there would be an increase in programming within the high school curriculum, particularly for science students. This is a data-point of one, but when I went back to my high school in the spring and asked, there were actually *fewer* students taking programming than when I was in school, even though the number of students at the school has increased and more students have their own computers. The focus is enitrely application-based.
Not everybody needs to learn how to program. And I happily grant that there was a chunk of time there when more people were learning to program than might have out of pure interest due to financial incentives. But we seem to have returned to a level *below* where we used to be.
I suspect the fact that there are so many good applications out there to do so many interesting things is part of it – you don’t *have* to be able to program to do useful things with your computer. But I also think that the current packaging of computers such that programming is made difficult plays a large role as well.
This is a fascinating and scary idea. We’ll be poorer for it if we lose the novices and hobbyists…not to mention people like yourself who “got started” dabbling and then got hooked and have made a “career” of it.
Someone advised me to take “Computer Science for Liberal Arts Majors” or some title like that, and I still remember the fascination of understanding basic programming 20 years later. I am reluctant to admit to you that I hated the class, but I have never forgotten elements of it. And it has given me a life-long appreciation for computer programmers.
I also love your analogy about the fact that we neither understand how our cars work nor our computers…and how this is a new phenomena.
You are welcome to admit you hated your computer science class – I’m passionate about my subject, but I certainly try to be respectful that not everybody will feel the same. But I will go so far as to say that I think it is not uncommon for people to hate the practice of doing computer science when exposed to it as a student, but still come away with a better understanding of the types of problems that we are trying to solve and maybe even an idea of how we try to solve them. To really get that to happen, though, the onus is on the instructor to use language and intuition that is accessible to people from all backgrounds – this is defnitely the hardest part about teaching my computation & cognition class which is open to students in any sort of cognitive science field and not just our majors.