Alan Kay (VPRI Co-founder) – Programming and Scaling (Jun 2015)


Chapters

00:00:42 Paradigms in Computing: From Object-Oriented Programming to Advanced Systems Design
00:08:32 Understanding the Complexity and Complication of Software Systems
00:13:49 Biological Approaches to Software Development
00:25:55 Outlook, Knowledge, and IQ in Computing
00:32:28 Destroying the Present to Create the Future
00:39:08 Concepts of Technology and Engineering
00:47:11 Abstraction and Optimization in Programming
00:52:39 Compiler-Compiler Techniques for Rapid Software Development

Abstract

Revolutionizing Software: From Barton’s Legacy to Alan Kay’s Vision of a New Programming Paradigm

The landscape of software development is on the cusp of a monumental shift, tracing its origins from the innovative Flex machine of Bob Barton to the modern complexities addressed by Alan Kay. Key concepts emerge as pivotal in this evolution: the transformation from a “make and fix” paradigm to one inspired by biological systems, the urgency to address the escalating costs and complexities of software maintenance, and the necessity of adopting diverse programming languages and perspectives for robust software architecture. This article delves into these critical themes, highlighting Alan Kay’s vision for a future where software systems are not only efficient and adaptable but also evolve to meet changing needs, much like living organisms.

The Foundations of Change in Software Development

1. Bob Barton’s Flex Machine: Barton’s Flex machine, an early higher-level machine, set the stage for modern software concepts with its resilience and built-in safety features.

2. Object-Oriented Programming: Coined by Alan Kay in 1961, this concept has evolved significantly from its original definition and now confronts issues like the over-reliance on setters.

3. The Make and Fix Paradigm: This traditional software development approach, starting with data structures and procedures, is now recognized as limited and often inefficient.

The Growing Complexity and the Internet Model

1. Software Complexity: With systems like Vista comprising 120 million lines of code, software complexity has outpaced functionality, leading to increased costs and decreased reliability.

2. Internet as a Model: In stark contrast to typical software systems, the Internet’s small and tidy codebase demonstrates the effectiveness of well-designed architectures.

Biological Inspiration and the High Cost of Maintenance

1. Biological Analogies: Drawing from the resilience and adaptability of biological systems, new programming paradigms are envisioned to enhance software robustness.

2. Maintenance Costs: Post-deployment costs in software are soaring, with a need for continuous life cycle changes and integration.

Beyond Objects: A Holistic View

1. Ecologies and Psychological Factors: The design of software systems now requires consideration of broader factors, including psychological aspects and dependency on operating systems.

2. The Scale of Living Things: The complexity of software systems is juxtaposed with the intricacy of living organisms, hinting at the potential for creating more powerful software.

Alan Kay’s Vision and the Role of Knowledge and Outlook

1. Kay’s Paradigm Shift: Alan Kay emphasizes the need for a fundamental change in software development, drawing on biological inspirations for adaptable, evolving systems.

2. Knowledge and Outlook: The importance of a powerful outlook and knowledge acquisition is highlighted, with IQ seen as less critical for innovation. IQ alone does not guarantee success or innovation. Knowledge can often trump IQ, especially when it comes to leveraging the work of geniuses who invent new ways of looking at things. Calculus, for example, allows those with average IQs to understand and apply complex mathematical concepts.

3. The State of Computer Science: The current state of education in this field is critiqued for its focus on modern tools at the expense of fundamental learning. While the absolute number of highly intelligent individuals in the field has increased, the relative number has decreased due to the overall growth of the field. The general knowledge of computer science practitioners has only increased slightly despite the vast amount of knowledge available. The number of powerful outlooks in programming has increased, but the general outlook has not improved significantly.

4. The Gully Analogy and Linguistic Diversity: The importance of exploring multiple programming languages is stressed, akin to the formation of diverse patterns in nature.

Technology as Human Creation and the Art of Tinkering

1. The Broad Spectrum of Technology: Technology is viewed as an extension of human creativity, encompassing everything from art to digital devices.

2. Engineering and Tinkering: The role of tinkering in the evolution of technology is emphasized, showing a preference for empirical methods over purely mathematical or scientific ones.

Kay’s Contributions to Efficient Coding and DSLs

1. Lisp Interpreter and Personal Computing: Kay’s focus on code efficiency and the potential for minimal code to capture complex functionalities is highlighted. He questions the efficiency of personal computing, emphasizing the need to minimize code complexity. He suggests that the empire state building worth of code from Microsoft should be condensed into a few t-shirts worth of code.

2. Domain-Specific Language: The development of languages that closely resemble mathematical language is noted for reducing code complexity. To make the graphics language operational, Kay introduced the concept of compiler-compiler languages. These languages allow for the creation of domain-specific languages (DSLs) with ease. Kay achieved a remarkable feat, developing a graphics language in just under 400 lines of code. This is a significant reduction compared to the millions of lines of code typically required for graphics engines like Cairo.

Embracing Change and Continuous Learning

Alan Kay’s vision for software development is not just a technical roadmap; it’s a call to embrace change, continuously learn, and seek new perspectives. This paradigm shift, inspired by everything from Barton’s Flex machine to biological systems, promises a future where software is not just a tool, but a living, evolving entity capable of adapting to our ever-changing world.


Notes by: TransistorZero