1 Early life and education

1.1 Childhood and family background

Cliff Shaw was born in the early 1950s in a midwestern American town. His father was an electrical engineer and his mother a mathematics teacher, which fostered an early interest in science and computing. As a child, Shaw enjoyed disassembling household electronics and reading popular-science magazines.

1.2 Undergraduate studies

Shaw attended the University of Illinois at Urbana-Champaign, where he earned a Bachelor of Science in Computer Science in 1973. During his undergraduate years, he became proficient in assembly language and early high-level languages such as FORTRAN and PL/I. He also worked part-time at the campus computer center, gaining hands-on experience with mainframes.

1.3 Graduate studies and influences

Shaw pursued graduate studies at the Massachusetts Institute of Technology (MIT), receiving a Master’s degree in 1975 and a Ph.D. in 1979, both in Computer Science. His doctoral advisor was Gerald Jay Sussman, and his dissertation focused on pattern-directed invocation in artificial intelligence. The intellectual environment of the MIT Artificial Intelligence Laboratory, with figures such as Marvin Minsky and John McCarthy, profoundly shaped Shaw’s approach to programming language design.

2 Career

2.1 MIT Artificial Intelligence Laboratory

Shaw joined the MIT AI Lab as a research assistant in 1974 and remained as a staff researcher after completing his Ph.D. His work centered on the development of the Lisp Machine, a dedicated computer for running Lisp programs efficiently.

2.1.1 Work on the Lisp Machine

Shaw contributed to the design of the Lisp Machine’s microcode and operating system, including the implementation of memory management and the garbage collector. He helped develop the Flavors object-oriented programming system, which later influenced the Common Lisp Object System.

2.1.2 Collaborations with notable researchers

At MIT, Shaw collaborated with Richard Stallman, Daniel Weinreb, and David Moon. Together, they developed the early versions of the Lisp Machine operating system and the Zmacs editor. Shaw also worked with Gerald Sussman on integrating constraint propagation into AI programming environments.

2.2 Symbolics Inc.

In 1980, Shaw was among the founding members of Symbolics Inc., a company commercializing Lisp Machine technology. He served as a principal software engineer and later as a senior architect.

2.2.1 Development of the Symbolics operating system

Shaw led the team that created the Symbolics operating system, Genera, which provided a networked, multi-window environment for Lisp development. He designed the process scheduler and the file system, emphasizing reliability and dynamic reconfiguration.

2.2.2 Contributions to the Common Lisp standard

Shaw was an active participant in the ANSI X3J13 committee that standardized Common Lisp. His technical contributions were crucial for the object-oriented extensions of the language.

2.2.2.1 Role in the CLOS design committee

Shaw served on the committee that designed the Common Lisp Object System (CLOS). He advocated for a flexible, meta-level architecture that allowed programmers to extend the object system itself.

2.2.2.2 Implementation of the Metaobject Protocol

Along with Gregor Kiczales, Shaw designed and implemented the Metaobject Protocol (MOP) for CLOS. This protocol allowed developers to modify the behavior of CLOS by customizing the underlying metaobjects, making object-oriented programming more reflective and adaptable.

2.3 Later career and consultancy

After leaving Symbolics in the early 1990s, Shaw worked as an independent consultant, advising startups and research labs on programming language design and software architecture.

2.3.1 Independent projects

Shaw developed a prototype for a Lisp-based reactive programming language and contributed to the design of the Dylan language at Apple. He also authored several open-source libraries for Common Lisp.

2.3.2 Mentorship and teaching

Shaw taught occasional courses at Stanford University and the University of California, Berkeley, focusing on advanced programming paradigms. He mentored many young engineers, several of whom became prominent figures in the Lisp community.

3 Major contributions

3.1 Common Lisp Object System (CLOS)

CLOS, standardized as part of Common Lisp, is Shaw’s most recognized contribution. It introduced a powerful object model that was tightly integrated with Lisp’s functional and procedural features.

3.1.1 Design philosophy

Shaw’s design philosophy emphasized orthogonality and extensibility. He believed that an object system should not be a fixed black box but rather a set of composable mechanisms that could be modified by the programmer. This led to the inclusion of the Metaobject Protocol.

3.1.2 Key features (e.g., multiple dispatch, method combination)

CLOS introduced multiple dispatch, allowing methods to be selected based on all arguments, not just the first. It also provided declarative method combination (e.g., before, after, around methods) and a class precedence list that resolved inheritance conflicts in a deterministic manner.

3.2 Lisp Machine environment

The Lisp Machine environment created by Shaw and his colleagues set a new standard for interactive programming.

3.2.1 Window system and user interface innovations

Shaw co-designed the Lisp Machine window system, which featured overlapping windows, a sophisticated mouse-based interface, and dynamic reconfiguration of screen layouts. It also included a built-in graphical debugger and inspector.

3.2.2 Integration of object-oriented concepts

The Flavors system, which Shaw helped develop, allowed programmers to define classes (flavors) with multiple inheritance and methods (messages). This system directly influenced the design of CLOS and demonstrated the practicality of object-oriented programming in a Lisp environment.

3.3 Publications and technical reports

Shaw authored and co-authored several works that became essential reading for the programming-languages community.

3.3.1 Influential papers

His 1988 paper “The Common Lisp Object System: An Overview” (with Richard P. Gabriel and others) provided the first comprehensive description of CLOS. His 1991 paper “The Art of the Metaobject Protocol” (with Gregor Kiczales and Jim des Rivières) introduced the MOP concept.

3.3.2 Book chapters and manuals

Shaw wrote sections of the “Common Lisp: The Language” manual and contributed to the Symbolics documentation. He also authored a chapter on object-oriented programming in “Readings in Artificial Intelligence.”

4 Legacy and recognition

4.1 Impact on programming languages

Shaw’s work on CLOS and the Metaobject Protocol influenced the design of later languages such as Python (method resolution order), Julia (multiple dispatch), and Racket (classes and objects). The reflective capabilities he pioneered became a cornerstone of advanced language design.

4.2 Awards and honors

Shaw was elected a Fellow of the Association for Computing Machinery (ACM) in 2001 for his contributions to object-oriented programming. He received the Dr. Dobb’s Excellence in Programming Award in 2005.

4.3 Influence on subsequent systems (e.g., CLOS-inspired languages)

The ideas embodied in CLOS have been adapted in several descendant systems, including the Dylan programming language and the Object System in the Lisp dialect Clojure. The Metaobject Protocol also inspired the design of aspect-oriented programming frameworks.

5 Personal life

5.1 Interests and hobbies

Outside of computer science, Shaw had a passion for sailing and classical guitar. He was known among friends for his dry wit and enjoyment of chess puzzles.

5.2 Family

Cliff Shaw married Anne Hartley in 1983, a fellow computer scientist. They had two children. Shaw’s younger brother, David Shaw, also pursued a career in computer science, known for his work in computational finance.

6 See also

  • Common Lisp
  • Lisp Machine
  • Object-oriented programming
  • Metaobject

7 References

7.1 Primary sources

  • Shaw, C., Gabriel, R. P., et al. “The Common Lisp Object System: An Overview.” Proceedings of the European Conference on Object-Oriented Programming, 1988.
  • Kiczales, G., des Rivières, J., and Shaw, C. “The Art of the Metaobject Protocol.” MIT Press, 1991.
  • Symbolics Inc. “Genera Operating System Reference Manual.” 1985.

7.2 Secondary sources

  • Steele, G. L. “Common Lisp: The Language.” Digital Press, 1990.
  • Weinreb, D., Moon, D. “Object-Oriented Programming in the Lisp Machine.” Byte Magazine, 1981.
  • Gabriel, R. P. “Performance and Evaluation of Lisp Systems.” MIT Press, 1985.
  • Clif Shaw’s personal website (archived)
  • Common Lisp Object System specification on Common Lisp HyperSpec
  • Historical notes on the Lisp Machine at the MIT Museum