Daddy, Are We There Yet? A Discussion with Alan Kay
by Daniel H. Steinberg04/03/2003
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.
A Look Back
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."
What Didn't Happen
"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
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.
So, Daddy, Are We There?
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.
Showing messages 1 through 23 of 23.
-
Squeak is NOT free software
2006-07-29 09:25:09 pupeno [View]
-
Squeak is NOT free software
2006-07-29 09:25:00 pupeno [View]
Squeak is not free software:
http://www.fsf.org/licensing/licenses/index_html#NonFreeSoftwareLicense
(search for Squeak to find it).
It would be nice if Alan Kay could learn a bit about freedom from Richard Stallman, then we would have an impressive really free as in freedom platform: Squeak.
-
History and Development Systems
2004-02-13 22:55:57 mhamrick23 [View]
" 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."
Anyone interested in the history of computing should check out not only the Computer History Museum, but also Bruce Damer's DigiBarn.
I donated my Valdocs system, NeXT Slab, and BeBox to the DigiBarn. Each represented not so much a hardware revolution, but more of a change in the way users interacted with their environments.
The programming environment that came with NeXTStep was, at the time, nothing short of a miracle. I'm happy to see it make it's return as MacOS X.
-
Smalltalk vs Java
2004-01-12 13:39:03 anonymous2 [View]
One should understand the past to get glimpses of the future. Smalltalk vs Java is a good point to do this study. Why Java succeed where Smalltalk failed?
There was marketing. Xerox PARC is widelly known as a market failure, while Sun manage to bring Java, since its early version, to the spotlight. There is no reason that we should expect future decision to adopt this or that solution without a strong marketing support.
There is timing. Virtual machines are expensive in terms of speed and memory consuption. However, when Smalltalk appeared, we were "not there" yet. Smalltalk was a heavy load and it was very difficult to use. Computers were not so as wide-spread as today. Java, on the other side, got in the market "just in time" for a amazing growth of CPU and memory in a already ubiquitous PC.
There was freedom. Smalltalk was about "take it all or leave it all". Java is a language, that can be used in different environments. Developers have their ways. I, for example, around 89/90 was using Actor and not Smalltalk, because it was more windows like.
Syntax also plays a role. Although Smalltalk is pure OO and beautiful, it is easier for a programmer to learn Java (most of them know Pascal/C ou Basic).
In a way, this points to a future where:
1. Successes should mix good technical reasons with strong market.
2. Sucesses should be revolutionary and evolutionary at the same time. New concepts should draw people to it, but the "interface" should change little from what they are used to.
3. Sucesses should allow for freedom of choice in things other that its own "master concept".
4. Sucesses should be affordable.
-
Smalltalk vs Java
2004-02-13 23:19:04 mhamrick23 [View]
Oh... almost forgot...
"Syntax also plays a role. Although Smalltalk is pure OO and beautiful, it is easier for a programmer to learn Java (most of them know Pascal/C ou Basic)."
Some of the most successful Smalltalk projects I've worked on involved people who were never introduced to Pascal, C, or BASIC. It's a subtle point, but I'm not sure that programmers are the best people to have developing software. There's too much baggage they bring to the project.
Successfully modeling a real-world process is more concerned with understanding what questions to ask the model's consumers than understanding the side-effects of auto-incrementing a variable in an assignment statement, or even how C++ implements multiple inheritence.
There have been a couple projects I've worked on where I used Smalltalk to model a system under development DURING user interviews. When asked what I was doing, I simply said I was "capturing the system specifications in an active, graphical note-taking environment." On one project, at the end of a five-day series of meetings, I actually had some of the non-technical staff modifying my classes while I wrote on the white board. I am fairly confident that you will NEVER see non-technical people volunteer to edit .java files to represent changes in an ongoing specification, even if you're using JBuilder, Forte (NetBeans?), Eclipse, or IDEA. -
Smalltalk vs Java
2004-02-13 23:08:35 mhamrick23 [View]
Smalltalk failed? That's news to me.
At one point GUIs were available on but a few machines clustered around research universities and defense department installations. WIMP (Windows Icon Mouse Pointer) interfaces are now ubiquitous.
Many people forget that Smalltalk might have been the "original" open source development environment. One of the great features of most (if not all) Smalltalks is that the source code is included with the Image.
Smalltalk/80 was the first time I saw an IDE. While I'm a fan of emacs + command line for certain programming tasks, debugging under Smalltalk is a transcendent experience.
Just a few examples of some of the ideas refined in Smalltalk. What has Java given us that's new?
Don't get me wrong here... The market want's Java, and I actually kind of like Java for certain types of tasks. But when it's time to develop something new, I always prototype in Smalltalk (Squeak, actually.)
-
Contrary to Kay, hardware was not the issue
2003-04-15 13:56:47 anonymous2 [View]
Kay claims that PARC hardware ran Smalltalk faster because the hardware was optimized for it. Sort of -- the Alto and successors like the Dolphin and Dorado had programmable microcode, and they implemented the Smalltalk VM at that level. But this is hardly a panacea, and the fact is that those machines had pretty poor performance (except for the Dorado, which solved the problem by throwing exotic ECL chips at it, at a cost of nearly $100,000 a unit.)
I used Smalltalk on most of the Xerox machines in the mid-'80s. Performance was acceptable but not good. (By comparison, I was stunned at how fast the original Mac was when I first saw it.) The first machine I ever used that ran Smalltalk at high speed was ... a Sun-3 workstation with a Smalltalk that translated bytecode to 68000 machine code. (This was one of the first just-in-time translators, written by Peter Deutsch.)
My point is that Kay is incorrect to claim that hardware was an issue in the choice of Smalltalk or C. I think a bigger reason few other people used Smalltalk was that the environment insisted on taking over the entire computer, and would not co-exist with any other software. C, by comparison, would fit in anywhere.
--Jens Alfke -
Contrary to Kay, hardware was not the issue
2006-07-29 09:30:34 pupeno [View]
"C, by comparison, would fit in anywhere."
I think this is a mistake. C is not different than Smalltalk, the fact that C seems to fit better it is because the operating system is written in C.
That being said I agree about the environment issue you expose.
-
Patterns built in
2003-04-06 07:51:25 mariox19@mac.com [View]
I think the next great leap in programming will be an object oriented language with support built in for patterns. I think it will be simple and fully dynamic, along the lines of Python.
Unlike Python, and other languages though, the language will support such common patterns as Singleton, Delegate (chain of responsibility), Factory and so forth through the use of keywords, or at most two word constructs. (Try implementing a Singleton in Python, for instance, and you can see how convoluted it is.)
When this happens, the learning of OOP and patterns will go hand in hand and lead to a leap in understanding for the average up and coming programmer. -
Patterns are frequently work-arounds
2003-04-27 17:56:22 anonymous2 [View]
for missing capabilities.
The ideal language would have no patterns because all of the appropriate mechanisms would be supported directly. -
[OT]: singleton and borg in Python
2003-04-24 23:23:31 anonymous2 [View]
Coding a Singleton in Python
http://groups.google.com/groups?threadm=1020669846.963494%40newsmaster-04.atnet.at
which points to:
Five Easy Pieces: Simple Python Non-Patterns
http://www.aleax.it/Python/5ep.html
and the associated Recipe
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66531 -
Been there, done that
2003-04-07 00:02:03 anonymous2 [View]
I think you're absolutely right about needing to be able to express higher levels of abstraction with programming languages. What is needed is a language that is inherently extensible. If you can extend the syntax of a language using the language itself, you can add any of the patterns you want without having to come up with a new language.
The good news is that this is already possible. In fact, languages that can be extended in themselves already existed long before the term "design pattern." The ones I know about are in the Lisp family, like Scheme ( http://schemers.org ) and Common Lisp ( http://cons.org/cracauer/lisp.html ). However, I'm sure there are others.
I also enjoying programming in Python immensely. One of the new features of the language I haven't explored yet is metaclasses, which may also provide the extensibility I was talking about. I'm not certain, but I think that the concept originated in Smalltalk, the main focus of this article.
The more I see and read about software, the more I'm convinced that nothing new is being done in Computer Science and language design. Most of the interesting stuff has already been done and most people don't even know about it. Maybe being a Computer Scientist involves being a historian as much as anything else.
Jonathan Rogers -
What about FORTH or TILE?
2004-02-13 22:32:28 mhamrick23 [View]
FORTH is a wonderful example of a language that is extensible. You're provided with a number of control structures, but if they don't work for you, you're well within your rights to invent your own. There's a somewhat standard way to break into assembly in FORTH that involves loading the assembler module for whatever processor you're interested in. It adds keyword that generate opcodes and in the process modifies the parser.
So when you talk about extensible languages, I wonder if what you're talking about isn't simply a language where the parser is configurable.. -
Been there, done that
2003-10-08 19:17:34 anonymous2 [View]
Metaclasses did come out of the Smalltalk. Either the ST-78 or ST-80. Can't remember which right now.
-
Smalltalk
2003-04-04 20:18:06 anonymous2 [View]
I just wanted to add those looking for the latest information on Smalltalk should go to http://www.whysmalltalk.com
The Smalltalk Industry Council also has a site at http://www.stic.org
-
Interesting... but how?
2003-04-04 13:15:46 Corvus [View]
The goal of the Viewpoints Institute, "to help make major positive changes in how children are educated all over the world", is very interesting and laudable, but I don't see exactly how a computer programming language can do that.
Cartainly, one can write computer programs to solve science or engineering problems, but is this learning science and engineering, or computer programming?
Now, I have nothing against learning computer programming, but if a problem with science education is that it is "... primarily about memorization", then how is typing a bunch of formulas into a computer any better than memorizing them? In either case, the student has no direct personal experience with the principles involved.
Nor am I very enthusiastic about conducting experiments or research on a computer. Simply seeing something happen on a computer is no evidence things really work that way. -
Interesting... but how?
2006-03-13 23:41:23 JohnSellers [View]
I like another responder, worked on PLATO in the 1970's. I worked and played on that system for over 10,000 hours. I've also been a Smalltalk consultant in Silicon Valley. Last, in Arizona, when its population was 1.25 million about 40 years ago, I placed first in the state in the state math contest which all high school math students in the state took.
My take is a little different from Alan's, but he got most of the important parts right, but he is still going have to do more to win the ball game.
Smalltalk is too difficult. A typical system has 1500 classes and when used on a project, the number of classes tend to bloom. Coming into a new Smalltalk environment can be intimidating. It is like coming into a large city, and as you know, anyone coming into a large city usually concerns him/her self with a very small part of it. I am no dumb bunny, but I would hate to tell you the number of hours I have spent roaming around chasing my tail in Smalltalk environments trying to find out this fact or that relationship. I, and a lot of other people who try, don't have full access or a full grasp to those top notch Smalltalk experts...and I wonder sometimes if they don't fake it some.
Alan is right that we need play for understanding, but we also need discipline, and well managed computer aided discipline and structure in the right context. This can take us far beyond where we usually go in this day and age. What we can achieve in education, industry, and life can be much more than it is today.
I went to India when I was 15, about 45 years ago. And at that time I met kids who were studying Calculus in the 8th grade. Forty years later we are seeing the result.
I am convinced that by carefully taking the right path, that there is no reason we can not reach that level and beyond well beyond by using computers. But certainly not the way we our society is trying to do it now. Why? Because it won't work. I know what testing is about, because I was one of the best. It is not the answer and is a way of doing thing which is stuck in a traditional and limiting past.
Like I said, I agree with Alan about play, but again that is not the whole story. There has to be a sharper focus on where we are going. We must not use computers as we have taught in the classroom, but must make a definite and clear cut departure from the traditional in order to take full advantage of computers. After all, class room teaching developed and is stable in a way which does not take into account the possibilities of computers. How can it possibly be the best way without a complete understanding of this revolutionary consideration?
We must blend what we are good at with what computers are good at. A computer can do things which are extremely difficult for us to do. I have no doubt that a day will come when a computer will keep track of every one of our belongings, and to find that book you misplaced 20 years ago, all you will have to do is ask the computer. We can eventually arrange things so that it can help us track our own educational development, so that if you want to master a new set of skills, it is just a matter of conveniently conveying the information to the computer and immediately having everything you need to do the necessary hard work right at hand, all personally organized for your consideration, with infinite remediation right down to “1 + 1 equals 2” if that is what you lack. To become a master of any intellectual skill, in order to be maximally effective, it must be simple as sitting down and pressing next to begin, with everything including play, exploration ,and the opportunities for initiative right there in front of you ready to go. -
Interesting... but how?
2004-02-13 22:50:03 mhamrick23 [View]
My father told me once about a chemistry experiment when he was in college. I can't remember the exact details, but it involved naptha, an explosion, a fire, a cut hand, and very nearly got him expelled from school.
When I was a kid, we visited the CS labs at UIUC where I got to see PLATO in action. The demonstration I saw involved a simulated a bunsen burner, and a flask filled with naptha. The idea was to melt the naptha without causing it to explode. I spent about thirty minutes playing with it, causing about 50 virtual explosions before figuring out how to avoid them.
I guess my point here is that there are several real world experiences that are instructive, but carry significant risk. Modeling them digitally is a great way to introduce concepts with less risk.
Also as a teen, I got to go see several presentations by Papert, and eventually got a LOGO system myself. In retrospect, I think what I learned from both LOGO and Smalltalk was a mode of asking questions about real world object's behaviors.
One project I worked on in high school was to use LOGO to model an atom. It's one thing to sit in class and listen to lectures, and even to do experiments, but it wasn't until I tried to model a Hydrogen atom in LOGO that I learned how much I didn't know about chemistry, physics, and math. That investigation led me to pursue independent research on the subject in an effort to refine my model. I don't think I would have been motivated to do the extra research were it not for the habit of inquiry I developed with using LOGO (and later Smalltalk.)
I guess I owe a debt of gratitude to my parents who introduced me to GOOD computing projects at a young age. -
Interesting... but how?
2003-04-05 11:39:43 anonymous2 [View]
Previous poster wrote:
> how is typing a bunch of formulas into a computer any
> better than memorizing them? In either case, the student
> has no direct personal experience with the principles involved.
This is exactly the point Kay's work has addressed over the past thirty years. Writing a program is not a means to some other, pre-defined end, in exactly the same way that writing a piece of music is not a means to an end. Writing the program, like composing the music, like any other sophisticated, structured creative activity, is about exploring the world and how we can know it. Kay's work points out that computing is a way of knowing the world in the same way that music is a wayt of knowing the world. Forget the means-ends trap and you begin to see what he's been on about all this time.
-
Interesting... but how?
2003-04-05 19:25:30 anonymous2 [View]
Play with Squeak (or with the stuff at Squeakland) and you'll soon get the idea. I'm a hopeless programmer, but Squeak has been the only language (or maybe I should say the only dialect) that I've really enjoyed and made useful stuff with.
The music analogy is pretty apt: last time I heard, AK was constructing some kind of pipe organ...... -
Interesting... but how?
2003-04-05 09:32:24 anonymous2 [View]
If you find it interesting, I recommend "The Childrens machine" by Papert. It describes the kinds of ways that kids explore various notions with Logo.
Squeakland represents the same kind of effort - give kids a tool through which to explore mathematics and modeling, and they'll learn about the world through it. -
Interesting... but how?
2003-04-04 13:23:01 Daniel H. Steinberg |
[View]
Thank you for your feedback. I have a couple of replies that will possibly spark further discussion.
(1) I may not have made it clear, but Dr. Kay certainly believes that children should explore and interact with their environment directly as well. A computer isn't (as he pointed out) a very good way to learn how to play baseball.
(2) Most computer languages and software does not encourage playing and exploration. I was a math teacher 20 years ago when PC's were being introduced to schools. We watched students play with LOGO and used it to encourage exploration in geometry. At the time, other math software for these grade levels seemed to be little more than high tech flash cards.
Best,
Daniel -
Interesting... but how?
2003-04-05 10:25:10 anonymous2 [View]
I think your point number is fundimental. I would
add that environments built in themselves from
the simplest possible components (like the
world we live in) are the most interesting for
learning for both children and adults.


In his 








http://www.fsf.org/licensing/licenses/index_html#NonFreeSoftwareLicense
(search for Squeak to find it).
It would be nice if Alan Kay could learn a bit about freedom from Richard Stallman, then we would have an impresive really free as in freedom platform: Squeak.