A to Z of programming languages: Smalltalk-80

We talk to Alan Kay, co-inventor of the Smalltalk family of languages, and a hero of personal computing in many respects

Smalltalk-80 co-creator, Alan Kay

Smalltalk-80 co-creator, Alan Kay

Computerworld Australia is undertaking a series of investigations into the most widely-used programming languages. We most recently spoke to Brad Cox, the man behind everyone's favourite Apple-flavoured language – Objective-C. Make sure to check out The A to Z of programming languages index to find them all.

This week, we take a look at the pre-cursor to Objective-C and the foundation of much of modern programming today: Smalltalk-80. One of the men behind the language, Alan Kay, is credited not only with helping to develop the language, but also the invention of object-oriented programming as a concept, and even inventing a personal computer concept that has eerie similarities to the iPad.

Smalltalk-80 was one of several Smalltalk languages Kay helped to shape while at Xerox's Palo Alto Research Centre, now known simply as PARC. The languages focussed on personal computing – a topic Kay still feels strongly about – and here he expands on how the work came about, the state of innovation in the modern era and the love for education he continues to hold.

Alan, you're credited with inventing the phrase "object-oriented programming (OOP)". Did the concept exist at all at the time?

I did make up this term (and it was a bad choice because it under-emphasized the more important idea of message sending). Part of the idea existed (in several systems). I could see that a more comprehensive basis could be made by going all the way to thinking of efficient whole virtual machines communicating only by messages. This would provide scaling, be a virtual version of what my research community, ARPA-IPTO [The Information Processing Techniques Office at the US Department of Defense's research facility] was starting to do with large scale networking, and also would have some powerful “algebraic” properties (like polymorphism).

Why do you think messaging was more important than object-oriented programming in Smalltalk-80?

[Marshall] McLuhan said that most people can only experience the present in terms of the past. So “new” gets turned into “news”. If it can’t, for most people, “new” is rejected unless there is no other way. Otherwise the new is filtered down into news. One of the pieces of news in OOP is that you can simulate data (in what are called “abstract data types”), and this is sometimes useful to do, but it is not the essence in any way of object oriented design.

C++ was very popular because it had a familiar (bad) syntax, and you didn’t have to learn to do OOP in order to feel au courant.

Real OOP design is very different than the previous “data-structure-and-procedure” style. And it is also true that none of the Smalltalks were really great for this either, though it was at least possible to think it and do it.

Do you think "real OOP design" was ever achieved? Is it entirely necessary anymore?

I think “real design” in terms of protected and interchangeable modules to make highly scalable systems has not been achieved yet, and is desperately needed. However, Smalltalk at its best was only a partial solution. For example, by the end of the 70s I was writing papers about why we should be “pulling” rather than “pushing”, and this was a return to some of the pattern directed stuff I had liked from Carl Hewitt in the 60s.

The difference was that I thought of the “pulling” as a kind of universal retrieval mechanism or “call by need”. This was influenced by forward inferencing (in PLANNER and OPS5), by the recent invention of spreadsheets (which I really loved), and a little later by Gelernter’s invention of LINDA. All of these provided ways of asking/telling the environment of a module what external resources it needed to do its job. I wrote about this in the September 1984 issue of Scientific American and in other papers at the time.

Tags smalltalkARPA IPTOXerox PARCDynabookSmalltalk-80Alan Kay

More about AppleARCIntelinventorMotorola AustraliaOGOXerox

2 Comments

Ian Joyner

1

A great interview with Alan Kay. However, your introduction is a little misleading in that you say Alan is credited with 'the invention of object-oriented programming as a concept'. No – as he said – he coined the term and did a lot to further the concept.

However, the credit for invention of OO must be given to Dahl and Nygaard who invented Simula as a class-based extension to ALGOL.

http://en.wikipedia.org/wiki/Kristen_Nygaard
http://en.wikipedia.org/wiki/Ole-Johan_Dahl
http://en.wikipedia.org/wiki/Simula

If my history is correct (and I may be corrected by Alan), Alan was, as a graduate student, given the task (maybe by Bob Barton) of installing a new ALGOL compiler on a Burroughs machine. This new ALGOL compiler turned out to be Simula and this inspired the young Kay.

On the interview, I particularly like Alan's take on agile programming 'people not projects, milestones rather than deadlines, visions rather than goals'. How wrong the management of most companies/projects is.

I also like the idea that we should be more into the meta than the concrete. I'd like to know more about his definition of meta, and how it relates to abstraction.

Ian Joyner

2

I'm just wondering if the RCATWD relates to the ideas Alan Kay recognized in the Burroughs B220 file system:

http://www.pcmag.com/article2/0,2817,32905,00.asp

I've also just written an article on complexity in computing which relates to these thoughts, and how computers could be better designed to avoid today's common problems:

http://www.ianjoyner.name/Ian_Joyner/Complexity.html

Comments are now closed

Can 'Gundam' fans build a six-story walking robot?

READ THIS ARTICLE
DO NOT SHOW THIS BOX AGAIN [ x ]