Note on ECOOP banquet talk

The ECOOP banquet talk was delivered during dessert on the lawn of a nice Italian villa on the hill overlooking Genova. When I started the talk I was wearing this dark Zegna suit I got to wear at the IPO of my company. Unfortunately I never got to wear the suit for that event.

You have to realize that banquet talks are about entertainment, not technical details. Everybody was full of good food and wine.

About halfway through the talk I took off my coat. Then my tie. It was difficult because I was trying to talk at the same time and also holding a microphone. Then I took off my shirt. This didn't seem too strange because it was a warm night. I had a "leave no trace" t-shirt on underneath.

Then I talked for a while more. They assumed I was done. But then.. yes... I undid my belt and dropped my pants, to started chuckles and giggles from the crowd. Fortunately I was wearing shorts underneath. I eventually managed to say something like "see, now I'm an academic" as I stood in my shorts and t-shirt. I was trying to illustrate how difficult the transition from industry to academia is... but at least I got a laugh out of them, even if the point wasn't clear.

Guy Steele loves tail calls

My recent essay seems to be causing a big stir. I am pleased because I love it when my work has impact. The only funny thing about it is that I've known all this stuff for 20 years. I guess I just haven't communicated it clearly enough. And the essay is not an easy read, even still. Some people have suggested I need to write a book. We'll see.

Guy Steele pointed out that a pure OO approach to data only works if your language has tail call optimization. This is related to a comment I made in the essay about how objects use recursion everywhere (at both the type and value level).

samskivert gave a very condensed summary and some nice comments.

Andrew Black at Portland State (previously at OGI) said he used my slides in his class. One student found a bug in the essay: I say that ADTs are not possible without a static type system, but I also say that Smalltalk has some primitive ADTs for numbers. I should have said that without a static type system you cannot have the kind of user-defined ADTs that you find in CLU, ML or Ada. There are two ways to get ADTs in a dynamic language: one is with some kind of dynamic sealing (or encryption) and the other is to build them into the language runtime. The basic ADTs using in Smalltalk are built into the runtime.

And Jonathan Aldrich at CMU listed the essay as one of his select "classic papers" on object-oriented programming, saying "This is a (very!) recent paper, not a traditional classic, but it is the best summary I know of what makes objects unique."