Much of what you do each day can be traced back to an idea that Alan Kay was working on many years ago. Work with a laptop computer? Kay was working on a notebook computer called the Dynabook 35 years ago. There weren't even desktop computers then and he was trying to invent a flat-screen portable with a wireless network and local storage. Use a word processor where you can select bold and see the text you type rendered as bold? Ever use a computer that had a GUI that featured windows that could overlap each other? Ever use a program written in an object-oriented language? Kay and his cohorts worked on projects like these over 20 years ago.
On Thursday April 24, Kay will deliver a keynote at O'Reilly's Emerging Technology conference at the Santa Clara Convention Center. His talk is titled "'Daddy, Are We There Yet?' The Computer Revolution Hasn't Happened Yet". I spoke to him by phone while scribbling madly to keep up with him. Here are some of his thoughts on the history and current state of object oriented-programming, Squeak, software engineering, and children's software.
With the passing of Kristen Nygaard and Ole Dahl, the creators of SIMULA, this past year, I ask Kay if he had taken a look back at the nearly 40-year history of object-oriented programming (OOP). He corrects me that actually Sketchpad predated SIMULA by a few years and its 40-year anniversary passed with no commemoration. A recurring theme in our conversation is that much is lost to the programming community because we don't have a good sense of history.
Kay characterizes SIMULA as a great transitional set of ideas. With SIMULA, Algol blocks could be used as independent things that could carry data and behavior. In 1966, Kay had just learned Sketchpad when he read an early paper on SIMULA by Nygaard and Dahl. Kay put a biological twist on what he would later call object-oriented programming. "Everything is a cell," he explains. "The main thing I added is that everything could be an object. There is an interface algebra that today might be called polymorphism. There was a collision of these ideas and LISP." Kay admires the great set of ideas present in LISP and refers to it as the "greatest single programming language ever designed."
While at Xerox PARC, Kay invented Smalltalk. Although the present day hot OO languages, Java and C#, make a lot of their C-like syntax, much of their real roots can be found in Smalltalk. In addition to an OO language, Smalltalk was also a development system and an operating system for Smalltalk programs. The five person Smalltalk team at PARC created both the software and the hardware to run it on. As a result, Smalltalk applications performed quite well on these systems.
In the 1980s, Kay explains, Intel and Motorola were not producing processors that could run these higher level languages. As a result, programmers interested in performance were programming in C and early bound languages. When Stroustrop developed C++ he wasn't trying to emulate the work done at PARC, he was creating support for objects using a preprocessor for C. The relationship between C++ and C was much like the relationship between SIMULA and Algol. Kay sees Java as falling between Smalltalk and C++. In some ways it is an improvement, in other ways it is mainly C++ with garbage collection. One of the most obvious deficiencies of Java, says Kay, is that "Java has a difficult time of adding to itself."
"Twenty years ago at PARC," Kay says, "I thought we would be way beyond where we are now. I was dissatisfied with what we did there. The irony is that today it looks pretty good. The result of our work is techniques for doing software in an interesting and more powerful way. That was back in the seventies. People today aren't doing a lot of work to move programming to its next phase."
I ask Kay with the foundations of OO that have been established, what it is that programmers don't understand. He answers that we "could ask the same about architects. What don't people get about Frank Lloyd Wright? Today we still have buildings that are ugly and towns that are ugly. Simplicity and beauty aren't high on people's requirement lists."
He differentiates between a carpenter and an architect and considers the analogous case for developers. "You can claim to be a programmer," he says, "if you can write a couple of lines of C code. The real questions in programming is the stuff you don't have prefabricated modules for. A programmer is always in the business of specifying the goals and the purposes of a system. Can you come up with an advanced architecture for rendering the idea?"
Squeak is an actively maintained, free, open-source version of Smalltalk available from www.squeak.org . With Squeak the entire VM (virtual machine) is written in Squeak. Kay explains, "That means the Squeak spec is debuggable. Whatever it does is what the VM is. This thing runs fast enough, when you're working on a music demonstration, to generate three to four voices in real time. The VM is written in Squeak and then transformed mathematically to C. It runs on thirty different platforms 'bit-identically'. A bug in the VM is the same on all machines." How hard is it to port Squeak to a new platform? Kay says the longest port took less than one month on a completely bare chip and that, for example, the port to the Sony PlayStation took only a few days.
Kay's best guess is that there are between forty and fifty thousand Squeak users. A few thousand people work with it in the same manner that you think of the Linux user core. They hear from a few hundred regularly and between thirty and forty people spend a couple of hours a day working on the Squeak code. Most important for Kay are the children, parents, and teachers who use Squeak. The www.squeakland.org site is a resource for these groups. There is a kid's version, tutorials, and examples on the Squeakland site.
In addition to the lab work, research, and work with graduate students, Kay has spent many years working with elementary school teachers and students. He recognizes how hard teachers work and how much they are asked to do. How do we help these teachers teach math or technology? He recommends that we "work with motivated teachers and their students and support them with regular visits. It's a lot of work." Squeak and the modules being developed are designed to create a rich world that students can explore and experiment with.
Years ago I saw Kay speak to parents at a private school in Cleveland. He showed a video of a two year old turning on a computer, selecting a disk, inserting it, and starting the program contained on the disk. The audience gasped. At that time, that was seemed incredible. You think, "so what." That's the point. Now it is no big deal. Kay says, "all the little girl was doing was the equivalent of going to a shelf, making a choice, and opening a book. That isn't real literacy."
"The trick," Kay continues, "is that like Montessori we think of the main instincts of kids is to play. There just aren't any twentieth and twenty-first century toys to play with. Seymore Pappert's LOGO pioneered this and lead kids to real mathematical learning." Kay says, "once kids make stuff, you start to see real computer literacy."
As the two year old girl from the video grows up she'll see younger children even more comfortable with computers. Just as kids in a high print environment tend to read, Kay predicts that as "kids grow up in a world where computing is there, it will be these children that will invent personal computing." I tell Kay that both of my daughters' Montessori teachers recommended we not let the kids use the computer. "For younger kids," he answers, "it is important that they learn about the physical world. But, Montessori would have been a great innovator with computers. She would embrace and enrich toys that have interesting side effects. It is not part of the traditional Montessori curriculum because she didn't live during a time when there were computers."
Kay and the other founders of The Viewpoints Research Institute are using Squeak as a media for highly interactive and constructive materials to support the teaching of math and science to K-12 students. After complaining about the current state of software targeting children, I ask Kay how we encourage the production of better educational software for kids. He answers, "don't buy bad stuff."
As simple as that sounds, he points out that "the market needs to reject what is bad. The stuff that got put out wasn't rejected. It's a certain kind of laziness. PARC had taste and built guidelines. Even small teams can produce quality software." He believes that for the consumer it also is a matter of taste. People shouldn't legislate what other people should do. On the other hand, you have to make sure people are aware of their alternatives. A popular fast food restaurant might be across the street. Meanwhile, a mile a way is a better restaurant where a good meal costs just a little more than at the place across the street. We need to help get the word out for the alternative.
There are times with software that this is difficult. Kay describes these as large bandwagons that everyone jumps on. There are companies who won't consider not using Microsoft products because of the size of the Microsoft market share. One of the many things that Kay likes about his present employer, HP, is that they support a variety of operating systems, including Microsoft. They didn't make a decision on one side or the other but embraced both.
Kay considers how to get programmers to move to that next phase. He says, "There are more powerful ways of doing programming, but they have steeper learning curves. The problem is to move programming from a popular field to a richer field and to help people with the learning curve.
Daniel H. Steinberg is the editor for the new series of Mac Developer titles for the Pragmatic Programmers. He writes feature articles for Apple's ADC web site and is a regular contributor to Mac Devcenter. He has presented at Apple's Worldwide Developer Conference, MacWorld, MacHack and other Mac developer conferences.
Return to OpenP2P.com.
Copyright © 2009 O'Reilly Media, Inc.