Barbara Liskov muses about the creative process of problem solving, finding the perfect design point, and pursuing a research path.
Barbara Lisk-
THe Greatest Joy ov has experienced in her distinguished career has not been the results of her influential work but the creative
process itself. “It’s incredibly exciting,” she says, “to be thinking about a problem and suddenly see a way to solve it that you hadn’t thought of before, and that makes a lot of other problems go away.” Creative activity is what makes research so interesting, she says, and “is not dissimilar” to what artists of all types experience during their work process. “It just happened to show up for me while thinking through solutions to problems,” she says.
Among the contributions for which Liskov received the ACM A.M. Turing Award is using data abstraction to organize software systems. This new way of thinking resulted in a paradigm shift that had immense practical consequences; it made systems much easier to build and more likely to operate correctly. It involved creating modules with an interface consisting of many operations that provided more flexibility for users than previous techniques and also allowed more details of the implementation to be hidden.
The work that led to this insight began in 1971 when Liskov was at Mitre Corporation building VENUS, a small, interactive timesharing system. She left to join Massachusetts Institute of Technology, and during the transition began reflecting on what she had accomplished with VENUS. “I stood back and thought about programming methodology and what I did in organizing the system. I saw there was this different technique being used,” she says.
PhO TOGRAPh BY JARED LEEDS
This major discovery was the basis of a sequence of advances that refined and extended these ideas, Liskov says. First she saw that multi-operation modules could be naturally linked to programming languages as a way to define new data types. Working with
her research team, she built on this insight to design the programming language CLU. She decided to design a programming language because she wanted everything to be well-defined and such precision is necessary for programming languages because they are mathematical artifacts. Liskov also thought presenting the idea of data abstraction in the context of a programming language would make it easier to communicate to programmers. Additionally, Liskov firmed up the separation between how a data abstraction was implemented in a programming language and how it was described in a specification. Later, she developed the Liskov substitution principle, which explains how hierarchies of data types should be organized.
During the early 1980s, Liskov became interested in the ARPANET, the precursor to the Internet. Only a few major universities and a small group of people were using it for email and file transfers, but computer scientists dreamed of building programs that worked on a collection of ARPANET-connected machines. No one knew how to do that, so Liskov decided to
tackle the problem. While working on CLU, she consciously had limited her work to sequential programs as opposed to concurrent ones with many parts running in parallel. “We had enough problems without thinking about concurrency,” she explains, “but I had always planned as a next step to return to concurrency.” The result was the language Argus, which enables coders to write programs with components on different computers that communicated remotely through the fledgling Internet.
A stream of related work followed. Liskov delved into other aspects of distributed computing, particularly how to store files online instead of on an individual’s machines. That, in turn raised questions about crashes and losing information. Liskov worked on highly reliable storage on remote machines, which piqued her interest in replication algorithms. “To solve the problem, you must have more than one machine to store data,” says Liskov, “Then you need a protocol that enables machines to keep data in synch so you always get the most recent copy. That was the precursor to my fault tolerance work. Not yet Byzantine failures—just plain old crashes.”
Asked what it was like to develop a computer language, Liskov says, “You’re trying to create something simple and yet expressive. You’re looking for the perfect design point where the mechanisms that you put into the language are powerful enough to allow people to do the things they need to do in a fairly straightforward way, and yet syntax and semantics remain simple enough that the complexity of language isn’t overwhelming. It’s very hard work to find that design point, but it’s very satisfying. It’s a lot like mathematics because you’re looking for the elegant solution.”
Reflecting on the progress of computer science in general during her career, Liskov says people were naïve
References:
Archives