Alan Kay (VPRI Co-founder) – The Computer Revolution Hasn’t Happened Yet OOPSLA 97 Keynote (VPRI 0719) (Oct 1997)


Chapters

00:00:41 Small Talk at 25
00:05:07 OOP: From Simple Mechanisms to Complex Architectures
00:15:55 The Evolution of Computing Paradigms
00:29:57 Complexity and Speed in Living Systems and Computers
00:35:47 Biological Metaphor for Building Complex Systems
00:44:33 Metaprogramming and Interoperability in Object-Oriented Languages
00:58:44 Bootstrapping Better Systems

Abstract

Updated Article: The Evolution of Programming: Reflections from Kay to Dijkstra and the Future of Computing

The Inception of Smalltalk and the Cultural Divide in Computing

In the realm of computing, the development of Smalltalk stands out as a pivotal event, sparking significant debates and discussions. During the celebration of Smalltalk’s 25th anniversary at Xerox PARC, Alan Kay offered a nostalgic look back by sharing images and a historical clip that captured the early interactions of children with Smalltalk. His presentation also acknowledged the contributions of those involved in the Xerox PARC Smalltalk experience. Meanwhile, Edsger Dijkstra’s paper highlighted a contrasting cultural approach to computing between Europe and the United States. Europe’s emphasis on mathematical rigor sharply contrasted with the U.S.’s practical and experimental orientation, setting the groundwork for diverse computing philosophies.

Kay’s Rebuttal: A New Kind of Mathematics

Alan Kay responded to this cultural divide by proposing that computers introduced a novel form of mathematics. He criticized the tendency to evaluate computers using classical mathematical standards and underscored the importance of balancing large-scale structures with practical concerns of correctness and completeness. This balance, according to Kay, is pivotal for understanding both the evolution of programming languages and their future applications.

The Beauty and Practicality of Object-Oriented Programming (OOP)

Alan Kay offered deep insights into Object-Oriented Programming (OOP), advocating for a blend of beauty and practicality. He criticized the tendency to prioritize one aspect over the other, emphasizing that this balance is crucial for developing robust and efficient software systems.

Early OOP and the Fallacy of Scaling Simple Structures

Kay reminisced about the early days of OOP, which were characterized by simplicity, akin to interlocking gears. He used the metaphor of scaling a doghouse to a cathedral to demonstrate the error in assuming that simple structures could be easily scaled up without considering their structural integrity and complexity. This metaphor underscored the importance of architecture in software development.

Responses to Structural Failures and Key Points in Kay’s Philosophy

In response to the collapse of simple structures upon scaling, two approaches emerged: disguising the failure or developing new concepts. Kay strongly advocated for the latter, emphasizing the significance of architecture over material and the necessity of creative, “blue ideas” for problem-solving. He touched upon the early forms of data abstraction in the Air Force, critiqued the limitations of HTML in managing complexity, and underscored the importance of Simula’s object-oriented concepts, drawing parallels to biology and morphogenesis.

Complexity of E. coli Bacterium:

The E. coli bacterium is a model of complexity, comprising 120 million components that interact informationally. Each component is informationally dense, akin to Ops 5 pattern matching, and the computational state involved in their interaction is about 100 gigabytes, equivalent to 100 modern desktops.

Speed of Computation:

Living organisms, including bacteria, exhibit astonishing computational speeds, rivaling that of computers, especially in parallel processing. For example, a protein molecule, comparable in size to a Volkswagen, can move its own length in just two nanoseconds, a speed four times that of light at our scale. Moreover, the internal thermal agitation in these organisms is incredibly intense, posing challenges to observation.

Cell Division and Reproduction:

The replication capabilities of bacteria are remarkable, with a bacterium capable of duplicating itself in 15 to 18 minutes. In comparison, human cells, which are 1,500 times larger than bacteria, contain about 60 billion informational components. A human body, comprising 10^12 to 10^13 cells, undergoes only 50 cell divisions during a nine-month pregnancy. This process involves over-proliferation, testing, and trimming to create a viable organism, demonstrating the complexity of embryological development.

Comparison with Computers:

In the eyes of a biologist, computers may appear slow and simplistic compared to the complexity and speed of living organisms. The challenge lies in enabling computers to realize their full potential and match the capabilities of biological systems.

Encapsulation, Abstraction, and the Internet

Kay drew parallels between the principles of encapsulation and abstraction in OOP and biological systems, highlighting their scalability and adaptability. He proposed that every internet object should have its own unique identifier, akin to a server, reflecting a vision for a more interconnected and efficient internet.

The Biological Metaphor:

The shift from mechanical to biological metaphors in computing is attributed to the scalability and adaptability of biological systems. Cells, unlike mechanical objects, can scale enormously because they encapsulate their processes and maintain a selective interface with their environment.

The Ma Concept:

The Japanese term “ma,” which refers to the space or processes between objects, illustrates the challenge Western languages face in expressing the process-oriented nature of systems, focusing primarily on nouns and verbs.

Encapsulation and Abstraction:

Encapsulation, by defining a clear interface between the inside and outside of an object, enables an object to function in various capacities. This form of abstraction is powerful, facilitating the creation of virtual machines and operating systems that offer consistent and isolated environments for users.

Scalability and the Unix Process Overhead:

The Unix process, with its overhead of 2,000 bytes, highlights the challenges in creating lightweight processes and underscores the need for scalable solutions in object-oriented systems.

The Promise of Genetic Engineering:

Genetic engineering, exemplified by techniques like modifying cold viruses to carry a defective gene, presents potential solutions for genetic diseases like cystic fibrosis. The ability to reprogram an organism’s DNA after birth is both powerful and complex.

Objects as Servers and Polymorphism:

In computing, objects can be conceptualized as servers, offering services to other objects. Polymorphism, or the use of generic procedures, enables the creation of classes of these servers, leading to flexible and reusable code.

Growing Systems:

Biological systems, in contrast to mechanical ones, have the ability to grow and adapt over time. The challenge of developing complex systems, such as aircraft, highlights the limitations of mechanical metaphors in computing.

Metaprogramming and the Future of the Internet

Metaprogramming, the capability of a system to modify its structure and behavior, is deemed essential for the future of the internet. Kay envisioned a world where objects could reference any other object globally, advocating for a universal interface language to enable deeper interoperability.

Challenges with Traditional Development Systems:

Kay critiqued the traditional cycle of compiling, reloading, and modifying code in system development, even with faster methods like virtual cafe, as a dead-end approach for complex systems. He stressed the importance of understanding interoperability with existing systems.

The Metamorphosis of the ARPANET:

Kay highlighted the ARPANET’s transformation into the internet, which expanded 100 million times while undergoing complete changes in its code and structure. This evolution serves as a metaphor for adaptable programming systems.

The Reflective Model of LISP and Java’s Shortcomings:

Kay praised the reflective model of LISP, captured in half a page of code, as a profound insight into metaprogramming. He expressed disappointment in Java’s lack of metaprogramming capabilities, viewing it as a missed opportunity for future adaptability.

Metaprogramming and the Tyranny of Single Implementation:

Kay supported metaprogramming as a way to free programmers from the constraints of single implementations. By enabling languages to recognize their own structures, metaprogramming allows for more flexible and adaptable systems.

The Inev itability of Semantic Interoperability:

Kay envisioned a future with multiple object systems, each with unique details but similar semantics. He believed that semantic interoperability could be achieved by internalizing pointers to any object, regardless of origin.

The Need for a Universal Interface Language:

Kay proposed developing a universal interface language to facilitate object interaction and information exchange. This language would enable objects to safely experiment and automate the discovery of interoperability possibilities.

Rewriting the Book on Object-Oriented Programming:

Kay praised a specific book on object-oriented programming but called for its rewrite to make it more accessible to the broader object-oriented community. He offered a “Limoges balloon” as an incentive for this endeavor.

Abstract Data Types and the Persistence of Assignment-Centered Thinking:

Kay critiqued the dominance of abstract data types, which maintain an assignment-centered approach, limiting the potential for more expressive and flexible programming paradigms.

The Folly of Short-Term Efficiency:

Kay warned against prioritizing short-term efficiency over long-term viability, citing an operating system project that, aiming for a two-year completion using C++, ended up taking a decade.

The Perils of Single Points of View:

Kay emphasized the risks of adhering to a single viewpoint, treating it as an unassailable truth. He used the example of Smalltalk and referenced Schopenhauer’s observation that ideas often go through stages of rejection, acceptance as obvious, and false claims of originality.

Rethinking Abstract Data Types and the Challenges of Single Points of View

Kay’s critique of abstract data types and the initial skepticism towards C++ underscored the dangers of rigid adherence to a single technological perspective. He cautioned against turning limited knowledge into dogma, stifling innovation and diversity.

Smalltalk’s Evolution and the Importance of Innovation

Kay took pride in Smalltalk’s evolution, emphasizing its role in fostering new advancements. He stressed the need for continuous innovation and exploring higher levels of abstraction.

Squeak: A Platform for Future Developments

Squeak, a free version of Smalltalk, served as Kay’s tool for bootstrapping the next generation of programming languages. It represented a step towards more advanced, adaptable, and efficient systems.

Embracing a Grand Vision in Systems Design

Kay likened his approach to systems design to playing an organ grandly. This metaphor highlights the need for an expansive, innovative mindset in computing, ensuring that future systems are not just functional but also adaptable, scalable, and reflective of the complexities they are designed to manage.

Alan Kay’s Critique of Smalltalk and His Vision for Squeak

Alan Kay expressed disappointment that, following its commercialization, Smalltalk did not undergo significant evolution, despite its development and multiple versions at Xerox PARC. He emphasized Smalltalk’s role as a bootstrapping tool for new systems, lamenting its underutilization by universities, commercial entities, and even the Smalltalk community. Kay highlighted the need for constant innovation in systems design, cautioning against rigid adherence to limited knowledge. Squeak, his project, aimed at creating a tool for surpassing Smalltalk, encouraging users to view it as a stepping stone towards future advancements. He shared a lesson from E. Power Biggs, a renowned organist, about the importance of embracing a grand approach, even on a smaller scale, serving as a metaphor for pushing the boundaries of what systems can achieve.


Notes by: Simurgh