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.