I was lucky enough to see a talk by Barbara Liskov, the grande
dame of computer science. The talk was titled “The Power of
Abstraction,” and it covered Liskov’s work on programming
languages in the 1970s and 1980s, primarily a language called
CLU. Update 1/14/2010: Video of the same talk is available here:
OOPSLA Keynote: The Power Of Abstraction CLU had a number of
interesting features that were ahead of its time — heap-based
garbage collection, typed exceptions, and iterators. Many of
these features made their way into object-oriented languages
such as Java. But CLU itself is not object-oriented. Object-
oriented languages, Liskov said, tend to conflate the concrete
representation of a type with the interface used to access it.
Think of a classic Java class in an introductory OOP text. The
class contains both instance fields and methods to manipulate
them. Even though the fields are private, the interface is tied
to a specific implementation. You can’t substitute a different
implementation, not even by subcl