The Power of Abstraction
Introduction
Barbara Liskov, Turing Award winner and Institute Professor at MIT ECS Department.
Key contributions to object-oriented programming (OOP).
Developed programming languages CLU and Argus, leading to modern OOP languages.
First woman to receive a PhD in computer science.
Topic of discussion: The power of abstraction.
Early Career and Transition to Systems
Liskov reflects on her achievements leading up to the Turing Award.
Started academic career focusing on AI (PhD thesis on chess endgames).
Transitioned to systems and worked on Venus machine architecture alongside MITRE Corporation.
Venus machine aimed to create usable instruction sets from low-level instructions using microprogramming (akin to RISC architecture).
Development of Venus Machine
Inada 3: Developed first projects using this architecture.
Instruction set featured basic operations and was used to design a more functional instruction set.
Significant work on operating system architecture; developed the Venus operating system (supporting 16 concurrent users).
Introduction of semaphores from Dijkstra's work into hardware design.
The Software Crisis
During the late 1960s, Liskov observed a mounting software crisis due to complexity of systems
Project demands surpassed capabilities; software wasn't well understood.
Concerns arose regarding underpowered machines and inefficient resource allocation to software development.
Programming Methodology Research
Liskov began research on programming methodology in response to the software crisis.
Focused on how to design programs and structure software effectively.
Analysis of existing literature and papers from notable figures in programming to inform her methodologies.
Influential Literature
Dijkstra's "Goto Statement Considered Harmful": Advocated for structured programming to improve debugging and reasoning about code.
Wirth's "Program Development by Stepwise Refinement": Introduced top-down design methodology for program structuring.
Parnas's Modules and Interactions: Emphasized the importance of modularity and understanding module connections.
Introduction of Abstract Data Types
Liskov's insights from her reading and previous projects led her to abstract data types (ADTs).
Definition: ADTs encapsulate data and operations that can interact with the data, promoting modular design.
Wrote a paper on ADTs in 1972 after synthesizing foundational concepts from her work and academic literature.
Development of CLU Programming Language
Liskov initiated the design of CLU as an exploration of abstraction based on findings from previous work.
Key Design Principles:
Focus on readability and usability for programmers.
Emphasis on encapsulation and eliminating unnecessary features.
No concurrency or inheritance in initial design to focus on data and abstraction mechanisms.
Unique parameter passing mechanism: developed 'call by object' style, similar to Java.
Core Features of CLU
Clusters: Mechanism to implement ADTs with strict encapsulation of data and operations.
Polymorphism: Facilitated through parameterized clusters allowing for functions that adapt based on input types.
Exception Handling: Developed a mechanism that allowed distinguishing between handled exceptions and broader failure situations; aimed to simplify understanding of exceptions.
Iterators: Introduced iterators for collection types, emphasizing simplicity while allowing efficient traversal of collections.
Contributions and Further Work
Following CLU development, Liskov contributed to distributed computing with Argus language.
Continued involvement in programming language design and evolution, offering insights into various languages and methodologies.
Emphasized the importance of specifications in programming to improve correctness.
Reflection on Modern Programming Languages
Liskov observed a gap where many modern programming languages lack strong design principles.
Expressed concerns regarding security in coding practices (e.g., use of global variables).
Advocated for improved software methodologies and ongoing research in programming language design to address existing challenges.