January 31, 2006 — jao

Dan Ingalls is one of the fathers of Smalltalk. He worked at Xerox PARC with Alan Kay when the latter invented the language and the OO paradigm during the seventies. Dan was the author of virtually all Smalltalk implementations up to Smalltalk-80, including the first one, using, of all languages, BASIC. As Alan explains in his Early History of Smalltalk, the first proof of concept ST was the result of a bet:

One day, in a typical PARC hallway bullsession, Ted Kaeher, Dan Ingalls, and I were standing around talking about programming languages. The subject of power came up and the two of them wondered how large a language one would have to make to get great power. With as much panache as I could muster, I asserted that you could define the “most powerful language in the world” in “a page of code.” They said, “Put up or shut up.” […] For the next two weeks I got to PARC every morning at four o’clock and worked on the problem until eight […]

After Alan showed up his newly designed language, he was about to turn back to real work, but:

Much to my surprise, only a few days later, Dan Ingalls showed me the scheme working on the NOVA. He had coded it up (in BASIC!), added a lot of details, such as a token scanner, a list maker, etc., and there it was–running. As he liked to say: “You just do it and it’s done.”

Over the next ten years, Dan made (with some help) at least 80 major releases of various flavors of Smalltalk. (in the meantime, he found time for many other things; for instance, inventing BitBLT.)

By 1989, Dan Ingalls was working at Apple (applying Smalltalk to things as nifty as Fabrik), and he recorded this video on Object-Oriented Programming. During about an hour, the basic ideas of OO are reviewed, including some clues on how one implements a single-inheritance classes. Like all great ideas, it is surprisingly simple. The guys at PARC did not stop implementing the language, but went on to developing a complete operating system and environment based on it: Ingalls’ take on OO stresses those aspects, explaining how they were trying to tame complexity and how, for instance, garbage collection (which is really orthogonal to OO) was needed. The video contains a coda consisting in a little question and answer session, where typical objections to OO are reviewed. While not earth-saking, it makes for a funny view, and a review of the basics.

Fast forward to last October 25, when Dan gave a talk entitled Seven (give or take) Smalltalk implementations like www.crosscountrymovingcompanies.biz/at Standford. He’s not the only who has gained a fresh new look: his Smalltalk is now Squeak (Dan has been deeply involved in its design and implementation), which he uses to give the talk and demonstrate the joys of an integrated programming ambient. Besides, Dan reviews the motivations and influences leading to Smalltalk, in a guided tour through its many incarnations over the years. There are lots of reminiscences of the Xerox days and his interactions with Alan Kay (including the bet i mentioned above).

Addendum

Talking about Smalltalk’s early influences, they include, of course Lisp and Simula. But not only them. A delicious piece of trivia that Alan explains in his Early History is his first encounter with an object-oriented design. As it happens, the precursor of OO was an anonymous programmer working for the Air Force around 1960. This unsung hero solved the problem of transporting data files by …

… taking each file and dividing it into three parts. The third part was all of the actual data records of arbitrary size and format. The second part contained the B220 procedures that knew how to get at records and fields to copy and update the third part. And the first part was an array or relative pointers into entry points of the procedures in the second part (the initial pointers were in a standard order representing standard meanings).

From here, Alan took the idea of having procedures attached to objects, without the system needing to know them in advance. Needless to say, Alan thought that was a pretty good idea and, as the saying goes, the rest is history.

But these are only teasers. You should really watch Ingalls’ videos (specially the last one) and read Kay’s article. You will have a great time.

Tags: apple, programming, smalltalk, squeak