January 19, 2009
Alan Kay is one of my computing heroes. All this stuff we do every day as programmers? Kay had a hand in inventing a huge swath of it:
Computer scientist Kay was the leader of the group that invented object-oriented programming, the graphical user interface, 3D computer graphics, and ARPANET, the predecessor of the Internet
So as you might imagine, I was pretty thrilled to see he was
dabbling a little in Stack Overflow. It's difficult to fathom the participation of a legend like Alan in a site for regular programmers. Maybe we should add a Turing Award badge. At least people can't complain that it is unobtainable.
Jeff Moser, an avid Stack Overflow user with a an
outstanding blog of his own, had the opportunity to meet Alan recently and ask him about it. Jeff gave me permission to reprint his field report here.
Since I knew I'd be seeing Alan Kay at
Rebooting Computing, I decided to verify his Stack Overflow usage in person. According to Alan, he found the original question using an automated search alert just like Atwood had guessed.
We then proceeded to discuss how it's sad that identity is still hard online. For example, it's hard to prove if I'm telling the truth here. As for that, the best I can offer is to look at my picture on
my blog and compare with this picture from the Summit:
(Alan is on my right)
Alan is a great person to talk to because of his huge experience in the computing field.
He's currently working at the
Viewpoints Research Institute where they're doing some classic PARC style research of trying to do for software what Moore's Law did for hardware. A decent explanation by Alan Kay himself is available here (wmv). For specifics, you might want to check out the recent PhD thesis of Alessandro Warth, one of Alan's students.
One of the greatest lessons I've personally learned from Alan is just how important computing history is in order to understand the context of inventions. One of Alan's greatest heroes is J.C.R. Licklider (a.k.a. "Lick"). Our discussions a few months ago led me to read "The Dream Machine" and
write a post about it.
A consequence of studying history well is that you'll notice that a ton of the really cool and interesting stuff was developed in the ARPA->
PARC days and it's slowed down since. I'd assume that's why he's curious about anything post-PARC's peak days (e.g. 1980+).
I'd say that Alan firmly believes that the "Computer Revolution Hasn't Happened Yet" (still) even though he's been talking about it for decades.
Speculating from discussions, I'd say that the problem he sees is that computers should help us become better thinkers rather than "distracting/entertaining ourselves to death." Alan likes to use the example that our "pop culture" is more concerned with "air guitar" and "Guitar Hero" rather than appreciating genuine beauty and expressiveness of real instruments (even though it takes a bit longer to master). Check out 1:03:40 of
this video from program for the Future. In effect, we're selling our potential short.
I think that's my biggest take away from Alan about computing: computers can do so much more than we're using them for now (e.g. provide "a teacher for every learner").
Hope this helps provide some context.
Indeed it does, Jeff. If you'd like to get a sense of what Alan is about and the things he's working on, I recommend this
Conversation with Alan Kay from the ACM.
It's not that people are completely stupid, but if there's a big idea and you have deadlines and you have expedience and you have competitors, very likely what you'll do is take a low-pass filter on that idea and implement one part of it and miss what has to be done next. This happens over and over again. If you're using early-binding languages as most people do, rather than late-binding languages, then you really start getting locked in to stuff that you've already done. You can't reformulate things that easily.
Let's say the adoption of programming languages has very often been somewhat accidental, and the emphasis has very often been on how easy it is to implement the programming language rather than on its actual merits and features. For instance, Basic would never have surfaced because there was always a language better than Basic for that purpose. That language was Joss, which predated Basic and was beautiful. But Basic happened to be on a GE timesharing system that was done by Dartmouth, and when GE decided to franchise that,
it started spreading Basic around just because it was there, not because it had any intrinsic merits whatsoever.
This happens over and over again. The languages of Niklaus Wirth have spread wildly and widely because he has been one of the most conscientious documenters of languages and one of the earlier ones to do algorithmic languages using p-codes (pseudocodes) -- the same kinds of things that we use. The idea of using those things has a common origin in the hardware of a machine called the Burroughs B5000 from the early 1960s, which the establishment hated.
Any similarity between the above and PHP is, I'm sure,
completely coincidental. That sound you're hearing is just a little bit of history repeating.
To me, the quintessential Alan Kay presentation is
Doing with Images Makes Symbols: Communicating With Computers.
As the video illustrates, computers are almost secondary to most of Alan's work; that's the true brilliance of it. The real goal is
teaching and learning. I'm reminded of a comment Andrew Stuart, a veteran software development recruiter, once sent me in email:
One subtle but interesting observation that I would make -
your article points out that "what software developers do best is - this is close to the mark, though I would rearrange the words slightly to learn" "what the best software developers do is Not all software developers learn, but the best ones certainly do.
And this, I think, lies at the heart of everything Alan does -- computing not as an end in itself, but as a vehicle for
learning how to learn.
Posted by Jeff Atwood
Hey Jeff, enough with the PHP cheap shots. It's getting very tiresome.
I'm a professional PHP developer with a passion for the language and I actually produce functional, elegant code.
Throughout the years I've really really enjoyed your posts but... you are almost losing a reader here. I know one reader might not mean anything to you but it saddens me that I almost don't feel like reading your posts anymore.
I still say we strive to get Alan Kay on the podcast via Skype/Phone.
Frank - PHP is extremely versatile an deservedly successful, but it's still held together by string and chewing gum. He's not taking shots, just pointing out the lack of correlation between clean language/API design and popularity. Don't be such a fanboy.
so, in the photo which one's Jeff?
John - I can write some absolutely godawful code in Haskell :) Language has little to do with it
@Nasi - I'd argue that your comment is the exact type of fanboy mudslinging that I called Jeff on. I back up all my arguments with logic and references. If you want to explain *why* or *how* PHP is held together by string and chewing gum, I'm all ears. However if you're not prepared to make a reasoned argument, don't bother commenting.
Looks like a manakin. Is that PI on the right Vint?
PHP advocates are so sensitive...
I think PHP is great for web type stuff (for which it was clearly designed), but really isn't a great general purpose language. Put in that context, I think Jeff's points about PHP make a lot more sense.
It would be irresponsible to compare PHP to Pascal and somehow give it any sort of equal footing as a general purpose language. A well engineered general purpose language has many merits when you are solving general problems or if you only get to pick one language. On a slightly different tack, a special purpose language is generally better at solving special problems for which it was designed.
I think the disconnect is that language geeks are likely to rate a language by it's general purpose qualities instead of it's ability to solve problems in a very specific domain. For example, I don't think anyone would agree that lisp is the best programming language for writing html templates for a web site.
IMHO In today's world, being a single language fanboy will not work anymore. Most problems today are better served by embracing Polyglot programming and using the right tool for the job. Neal Ford has a pretty good talk on this subject if you ever have a chance to catch it at a No Fluff Just Stuff.
By the way, I listened to the linked video (discussion) at the Mother of All Demos conference (speakers: Alan Kay, Andy van Dam). There was a fair amount of teeth gnashing about what the early work of Engelbart, et al, has devolved to in the age of the Web. Somehow, when stuff scales to become available in some form to over a billion people, this kind of thing tends to happen.
However, there are efforts to claw back what was lost. At the end of discussion Kay specifically mentioned Sun Labs' Lively Kernel (
The next decade will be very interesting, if we manage to keep from sliding into a full-scale depression. (If we don't it will still be interesting, but not in a good way.)
Random note: I'm pretty sure that's Vint Cerf on Alan's right (far left of the photo, looking sharp as always).
Tim: you're right. Vint Cerf (father of IP) is on Alan's right and was also on the Rebooting Computing design team (which was huddled together for a quick meeting in this photo)
The body text typography on your site looks awful in Chrome.
Works On My Machine(tm)
99.9999999% of the time this is from Windows XP users who have ClearType disabled, and the C fonts (from Office 2007, usually) installed. Either enable ClearType or uninstall the C fonts, which are designed for ClearType.
It's funny that no matter how upscale or intelligent the general audience for anything is, there's almost always some idiot who has to say FIRST!
It's pretty awesome that one of the legends of programming has found his way to your little project, Jeff. That's gotta feel pretty cool.
Another great post. And nice to know there are people like Alan Kay using StackOverflow - just goes to show that the openness and, in some respects, anonymity of the web are great ways of uniting all, and perhaps getting to rub shoulders with some of your heros. What other medium allows you to do that?
The photo caption should have read, I'm on Alan's left. Alan Kay is a fairly Famous Guy, but who's ever seen Jeff Atwood's face?
You should be proud, Jeff!
s/Jeff Atwood/Jeff Moser/
Isn't it funny that we are starting to talk about learning in the context of computers, when most computers facilitate the opposite of learning.
Now that kids have calculators, they no longer need to learn times tables and maths. Just for kicks, go to a shop with 1 large note and some coins, and AFTER the shop attendand rings up your purchase (seeing the large note in your hand), also hand them the change so that you should get only notes back. e.g. $7 purchase, hand them $10 and then $2 in change. Watch the look of horror on their faces.
People (me included) don't learn to spell any more because that's what spell checkers are for.
My point is, the easier computers make our life the more they facilitate a non-learning ethos. The latest development tools are so easy, and programming so intuitive that I'm finding the reference books have to target lower and lower audiences, and are now filled with cartoon examples and basic programming tips.
That isn't to say that computers can't be used for learning, I'm just making an observation that they, like all technology, appear to be assisting in the dumbing down of our society (have you read any comments on youtube at all???).
Couldn't watch the video. It said it was currently not available.
My students often ask: Why do we study the history of computing? What do these old hackers have to do with anything happening today?
Thanks, Jeff Jeff, for helping answering that question, again and again.
Regarding computer usefulness versus entertainment.
The same happened with Music, and Story-telling, and Drawing, and Speaking, Sex, and whatever you might come up with. Humans are inherently a playful species, and we like to entertain our selves. Its our instinct, and there is nothing wrong with it.
Now of course some people like to imagine they aren't human, and that they are better pure learning,education creatures, but the reality of our genes has encoded us to be educated through play, not abstraction.
Though it could be easily argued what is the point in studying the history of computing because the past created what we are experiencing now and still we all argue about the respective beauty or not of a particular programming language. We have really not got anywhere, so in a sense history has failed us.
jlarson: I can see the text just fine in Chrome.
Jeff: Great post!
Speculating from discussions, I'd say that the problem he sees is that computers should help us become better thinkers rather than distracting/entertaining ourselves to death. Alan likes to use the example that our pop culture is more concerned with air guitar and Guitar Hero rather than appreciating genuine beauty and expressiveness of real instruments
I think Alan is trying to tell you something Jeff A. ;-)
I can't stand reading reprints.
Interesting to learn that Kay is respected musician having played Jazz guitar professionally in the past.
So many of the best minds I have met in computing have a love for music. Is it something to do with being able to see beauty in complex numerical systems?
Oh snap, did Kay just dis Rock Band? That's it - banned from the site!
You're wrong.. *Only the best at anything do anything at all.*
Let me coin a word for your content over the past two months...
Blegoat. Let the best of you decipher.
So the Turing Award badge... Is it platinum? Titanium?
So many of the best minds I have met in computing have a love for music.
Here's a stab: Music harnesses formal structure and command of detail, describing a process unfolding in time, to achieve expression, to elicit deep emotions, to move people, and to teach.
A meta-analogy: Instrumental musicians often say that their ideal is to emulate the suppleness and expressiveness of the human voice. To do so, they must slowly develop a specific body of detailed technique on their instrument, whereas, they suppose, vocalists have immediate command of their instrument. Of course, that isn't quite true; vocalists must come to see their voice objectively, and learn how to use it.
(Also see this review of Edward Rothstein's 'Emblems of Mind: The Inner Life of Music and Mathematics':
Yes. Simula introduced object oriented programming
SIMULA I (1962-65) and Simula 67 (1967) are the two first object-oriented languages. Simula 67 introduced most of the key concepts of object-oriented programming: both objects and classes, subclasses (usually referred to as inheritance) and virtual procedures, combined with safe referencing and mechanisms for bringing into a program collections of program structures described under a common class heading (prefixed blocks).
Computer scientist Kay was the leader of the group that invented
I don't believe that statement is precisely correct. As I understand it, they coined the phrase, but the ideas were there earlier (in Simula-67, for example)
It can be argued things like spelling are completely arbitrary, spelling is not about intelligence only memory. In English very few rules on how to spell apply globally there are almost always exceptions not even thinking about localization and slang. Surely the computer is freeing our brains for more important things.
The only problem is not learning but also continuity. Nowadays not many people have the skills and resources for creating a product and then starting to mass produce it. For example think corporations that produce laptops. Those corporations have maybe thousands of employees and many factories with lots of subcontractors and their workforce involved. Sure you can help children to learn. But the truth is, that still workforce is needed and continuity. What I mean with continuity is that not much can be done easily from scratch. You need to be part of bigger system that develops over time.
Also, there is no point to produce eg. new super cars, if people are not buying them. People might have some reasons for not buying, like the super cars are too expensive, people want greener cars, people like to use trains more etc. What ever the reasons, in the end, everything is connected now and over time.
If you need it spelled out to you why PHP is not a good language, perhaps you'd best stick with it. Yeah, I'm looking at you.
No doubt Alan Kay is one of the 'hall of fame' computer scientists, but the granddaddy of them all, imho, is Douglas Englebart. Most of the PARC stuff derived from Englebart's work.
Btw, Alan has an interesting comment on users of Guitar Hero, however Guitar Hero has spawned a huge interest in people wanting to learn *real* guitar. Many of my guitar-teacher buddies are overwhelmed by the number of students they now have, mostly kids who got the guitar itch from the video game.
Sounds like a great guy... certainly has a lot of great achievements that have benefited many of us. I'm curious though how exactly someone can invent 3d computer graphics or GUI though. Both are implicitly required by the nature of the universe... e.g. GUI existed when the first computer was switched on. It had to output to be useful, and thats a crude GUI. as for 3d graphics, that has been around for over 2000 years (the theory behind the implementation), whilst implementing it isn't exactly rocket science either (a rotating wireframe cube was one of my earliest BASIC programs, and I intuited the whole thing with less than high school education [yes even the perspective transformation, no i didn't use rotation matrices]).
I'm not trying to say I'm special, just that this stuff is stupidly easy compared to some of the other things mentioned, e.g. implementing an OO language (I assume this is what is meant as the basic idea itself is, again, trivial).
I would agree that most of our software is not that great, but I think the real impediment is that the average user does not code... my ability to code increases my productivity in my regular deskjob by a lot...
Throughout the years I've really really enjoyed your posts but... you are almost losing a reader here
aww... suck it up kitten.
I guess lots of people are getting army-itch from WW2-games and such...
@Jeff: You really should stop blaming the tools, which include programming languages, for horrid code and shoddy application design.
PHP didn't write that code. PHP didn't design those applications. PHP does not act on it's own. PHP is not a person.
People are the only ones to blame for bad code and people will *always* find a way to write bad code in *any* language.
Jeff, I enjoy your probably. I have been a professional developer for less than 5 years, and am still (and hopefully always will be) hungry to increase my skill and understanding. Many of your posts have been thought provoking and informative. I know you sometimes get a lot of flack, but I appreciate what you have done. This was a good post. Thank you.
On the topic of programming languages...
One of the main threads in Alan Kay's work is that computers be thoroughly user-programmable. We have really moved away from that in the past few decades, though there are some aspects which still or until recently remained user programmable (shell languages, AppleScript and HyperCard [r.i.p.], macro languages in apps like Office, embedded scripting languages in some games, lots of stuff on the web.)
I'd love to see a ground-up redesign of a PC that simplifies the OS to a large degree, and in which users can really directly manipulate how the software works, through easy to learn programming/scripting languages, or something like visual programming, or a combination of these things.
(The Xo/OLPC is in many ways this thing, no surprise it's built around Alan Kay's Squeak environment.)
Atwood complains about PHP, but then builds sites in ultra-bloated ASP.net.
PHP : ASP.Net ~= Building a house out of raw materials : Having someone deposit a hundred thousand homes on a lot and then chiseling away at them until you create a single structure capable of being called a house
We are without doubt standing on the shoulders of giants. Those who compile today might well wonder if they were also capable of writing a usable compiler. If they pass that point, they may also wonder if they were capable of inventing the idea of compilation. I suspect the honest answers are as you would expect.
Mike Swaine published a wonderful interview with the late Bob Bemer in DDJ about eleven years ago. Bemer invented ASCII, and maybe typecasting and probably a bunch of IBM mainframe-specific stuff.
Where would you be without ASCII, or typecasting?
A technical biography of Bemer, Hopper, Brooks, and the other IBM'ers of that era would be most welcome.
Thanks for another great post.
Thanks also for turning me on to Jeff Moser's blog -- yet another repository of fine reading material to fill my busy workday ;-)
JEFF: Just a note-- The body text typography on your site looks awful in Chrome. You may want to chose a different font face.
99.9999999% of the time this is from Windows XP users who have ClearType disabled
By gum, you're right. I don't recall disabling it though... ever.
I learned something today.
I learned how a cheap shot attack on dead horse issue like PHP can ruin an otherwise enjoyable post. But it really doesn't matter.
Regarding computer usefulness versus entertainment - I believe the inventors of television had a similar complaint. The TV was envisioned as a great tool for long-distance learning, but devolved into mainly an entertainment box. In many ways the computer has had a similar de-evolution.
I agree with Reed Hedges and Alan Kay that computers need to be redesigned from the ground up to support user programming. That was the essence of HyperCard, and of HyperLook, which it inspired. I described HyperLook and other related ideas on the OLPC mailing list here:
The OLPC includes Alan Kay's Smalltalk/Squeak/eToys environment, but it is not built around it. Rather, it's built around Python. eToys is there to inspire people to do the same thing with Python as has been done with Smalltalk. Smalltalk is not the official programming language of the OLPC -- Python is.
You can read some interesting discissions I've had with Alan Kay about programming languages on my web site:
What's wrong with taking cheap shots at PHP? It deserves it. The fan boys should stop wasting their time apologizing for it, and learn a better language. PHP's own designer, Rasmus Lerdorf, admits he had absolutely no idea how to write a programming language -- what better reason could there be not to use PHP??!
Here is why PHP Will Ruin You Mind:
And if you're still not convinced the design of PHP is deeply flawed, because language design is HARD and should only be attempted on purpose by experienced people, here's what the Father of PHP Rasmus Lerdorf himself said in an ITConversations interview [itconversations.com], quoted in Why PHP sucks, Part III [dasgenie.com]:
I don't know how to stop it, there was never any intend to write a programming language [...] I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way.