Joey Reid
Programmers risk blinding themselves to revolutionary computing models because mistaking conventional sequential text files for settled science halts creative progress.
AI-assisted summary of Bret Victor The Future of Programming — original source. Check the original for full context.
Source published:
Key ideas
- Presenting from the persona of a 1973 engineer, Bret Victor argues that while computer hardware advances exponentially, human adoption of fundamentally new paradigms is severely hindered by cognitive inertia and dogma. (0:20)
- The presentation surveys four foundational alternative paradigms from the 1960s and 1970s: direct manipulation of data, goal-directed declarative programming, spatial information display, and natively concurrent Actor-based systems. (5:26)
- Victor warns that the software industry's greatest danger is intellectual dogma—mistaking narrow, settled procedural conventions for finished science rather than recognizing that programming and computing remain fundamentally unsolved. (29:38)
Detailed notes
## Background Published on YouTube by Joey Reid on July 31, 2013, this video captures Bret Victor's presentation delivered at Dropbox's DBX conference on July 9, 2013. According to the description, Victor adopts the persona of a 1973 IBM systems engineer using an overhead projector to revisit the fertile, dogma-free era of early computer science, arguing that believing you know what you are doing blinds you to alternative ways of thinking.
## TL;DR Speaking from the fictional vantage point of 1973, Bret Victor looks forty years ahead to imagine the year 2013 through four revolutionary paradigms emerging from 1960s and 1970s research: direct data manipulation, goal-directed declarative programming, spatial two-dimensional representations, and massively parallel computing models. He contrasts these breakthroughs with the historical resistance faced by assembly language and Fortran, demonstrating how easily human minds cling to familiar sequential text conventions. Through ironic prophecies dismissing brittle modern staples like text-based code files, fixed APIs, and thread-and-lock concurrency, Victor reveals how the software industry has largely stalled into dogma. He concludes that true creative freedom requires admitting that we still do not fundamentally know what programming or computing is.
## Atmosphere & style The presentation is executed as an elaborate, dryly comedic conceptual performance, complete with retro overhead transparency slides and earnest deadpan projections that satirize contemporary computing practices. A warm, professorial delivery keeps the audience laughing at Victor's knowing dramatic irony while quietly delivering a stinging critique of modern software stagnation. The emotional arc transitions from historical nostalgia to a sobering philosophical warning, leaving viewers with an inspiring, perspective-shattering call to intellectual humility.
## Bulletin - [00:20](https://www.youtube.com/watch?v=8pTEmbeENF4&t=20s) Presenting from the persona of a 1973 engineer, Bret Victor argues that while computer hardware advances exponentially, human adoption of fundamentally new paradigms is severely hindered by cognitive inertia and dogma. - [05:26](https://www.youtube.com/watch?v=8pTEmbeENF4&t=326s) The presentation surveys four foundational alternative paradigms from the 1960s and 1970s: direct manipulation of data, goal-directed declarative programming, spatial information display, and natively concurrent Actor-based systems. - [29:38](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1778s) Victor warns that the software industry's greatest danger is intellectual dogma—mistaking narrow, settled procedural conventions for finished science rather than recognizing that programming and computing remain fundamentally unsolved.
## Key takeaways - [00:20](https://www.youtube.com/watch?v=8pTEmbeENF4&t=20s) Hardware advances predictably and exponentially via Moore's law, but intellectual and conceptual progress requires deliberate unlearning and is met with severe human resistance. - [02:32](https://www.youtube.com/watch?v=8pTEmbeENF4&t=152s) Historical breakthroughs like assembly language (SOAP) and Fortran were initially met with dismissive hostility from established programmers and figures like John von Neumann, who insisted raw machine binary was sufficient. - [06:42](https://www.youtube.com/watch?v=8pTEmbeENF4&t=402s) Ivan Sutherland's 1963 Sketchpad demonstrated direct manipulation and dynamic constraint relaxation, building complex parametric behaviors without procedural code. - [09:41](https://www.youtube.com/watch?v=8pTEmbeENF4&t=581s) Declarative, goal-directed systems—such as Carl Hewitt's Planner, Prolog, and regular expressions—allow developers to specify what they want while leaving the execution path to the machine. - [12:50](https://www.youtube.com/watch?v=8pTEmbeENF4&t=770s) Distributed networks cannot scale if systems rely on brittle, manually hardcoded APIs; autonomous programs must instead negotiate dynamic goals and shared semantic protocols directly. - [16:29](https://www.youtube.com/watch?v=8pTEmbeENF4&t=989s) Systems like Douglas Engelbart's NLS, RAND's GRAIL, and Xerox PARC's Smalltalk showed that two-dimensional visual displays should replace linear, one-dimensional text files inherited from punched cards and teletypes. - [20:44](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1244s) Early interactive environments demonstrated that sub-second, tactile responsiveness was achievable even on minicomputers, underscoring that user interface latency is an architectural failure rather than an unavoidable physical reality. - [21:57](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1317s) The von Neumann architecture leaves the vast majority of silicon memory idle and forces software into a sequential bottleneck that does not reflect physical silicon reality. - [25:28](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1528s) Managing hardware concurrency through threads and mutual exclusion locks is a fundamentally broken dead end; software requires natively concurrent paradigms like Hewitt's Actor model, Hoare's CSP, and Kahn process networks. - [29:38](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1778s) The 1960s and early 1970s fostered tremendous innovation because practitioners recognized they did not yet know what computing was, leaving them free from dogma and authority. - [30:50](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1850s) The most dangerous thought for a creative person is believing they already know what they are doing, because premature certainty blinds practitioners to superior alternative models.
## Detailed walkthrough ### [00:20](https://www.youtube.com/watch?v=8pTEmbeENF4&t=20s) Looking Forty Years Ahead: The Nature of Adopting Ideas
Speaking warmly to an audience of fellow programmers of “automatic computing machines,” Bret Victor sets the stage in the persona of an engineer speaking from the vantage point of 1973. He observes how rapidly computing is altering society, noting that there are now literally thousands of computers operating worldwide across business accounting, scientific experimentation, and emerging frontiers. Machines that once occupied entire halls have shrunk to remarkably compact proportions while steadily dropping in cost. Because computing is undergoing such swift transformation, Victor proposes looking ahead forty years to consider what programming might look like around the year 2013, guided by pioneering research conducted over the previous ten years.
Before unveiling the four primary breakthroughs from this research, Victor pauses to examine how human beings adopt new ideas. The central tension of progress is that while technology evolves at an exponential clip, the human mind adapts at a much slower pace, making it easy to adopt novel machinery but excruciatingly difficult to embrace fundamentally new ways of thinking. He highlights Gordon Moore at Intel, who nearly a decade earlier noted the exponential growth of computing capacity over time. That hardware trajectory has remained completely on target, meaning that speed and capacity can largely be taken for granted simply by waiting. In contrast, conceptual shifts will never happen automatically through the passage of time.
```mermaid flowchart LR accTitle: Technology Versus Human Paradigm Shift accDescr: Comparison between exponential hardware progress and human cognitive friction in adopting new paradigms. subgraph TechProgress["Hardware Evolution"] M["Moore's Law"] -->|"Passive passage of time"| S["Faster, smaller, cheaper computers"] end subgraph HumanAdoption["Paradigm Shifts"] O["Familiar Dogma"] -->|"Cognitive inertia & resistance"| U["Unlearning & new mental models"] end ```
- Computing hardware has transitioned from room-sized installations to compact enclosures, with thousands deployed across commercial and scientific domains. - Gordon Moore's empirical rule demonstrates that computing power expands exponentially, assuring continued technological gains without active philosophical effort. - Victor notes the fundamental asymmetry between machinery and mindset: “Technology changes quickly, people's minds change slowly.”
[02:32](https://www.youtube.com/watch?v=8pTEmbeENF4&t=152s) The History of Resistance: Binary, Assembly, and Fortran
To illustrate human reluctance toward intellectual shifts, Victor revisits early programming history using the IBM 650—IBM's first mass-produced, general-purpose machine that many in the room cut their teeth on. In the earliest days, programming meant writing absolute binary, painstakingly authoring raw numeric operation codes instruction by instruction. When Stan Poley subsequently created the Symbolic Optimal Assembly Program (SOAP), introducing mnemonics like `ADD` and symbolic variable names rather than hardcoded memory addresses, productivity rose and errors plummeted. Yet the original binary practitioners were utterly unmoved, completely failing to see any value in assembly.
This skepticism often hardened into outright hostility among senior authorities. Even the legendary John von Neumann insisted that raw machine code was entirely sufficient and became furious when one of his students wrote an assembler, berating him for squandering valuable machine time on clerical tasks that humans ought to perform manually. The identical pattern repeated shortly thereafter when John Backus and his team developed Fortran, allowing algorithms to be written using mathematical formulas and loop structures. Rather than welcoming the leap, seasoned assembly programmers dismissed it out of hand because it violated their conception of the craft.
- The IBM 650 initially required programmers to memorize and input numeric machine codes directly for memory locations and machine instructions. - Stan Poley introduced SOAP (Symbolic Optimal Assembly Program), establishing symbolic labels and mnemonic operational words. - When confronted with assembly, absolute binary coders exhibited complete disinterest: “They just weren't interested at all, they just didn't get it, they didn't see any value in doing this stuff.” - John von Neumann actively opposed symbolic abstraction, asserting: “I don't see why anybody would need anything other than machine code.” - Fortran encountered the exact same institutional resistance from assembly coders who could not imagine abandoning low-level machine registers for algebraic notation.
[05:26](https://www.youtube.com/watch?v=8pTEmbeENF4&t=326s) Four Big Ideas: An Overview of Recent Paradigms
Victor urges the audience to keep this historical blindness in mind as he introduces four transformative ideas emerging from recent lab work. When an engineering culture believes it already understands what programming is, practitioners instinctively dismiss anything outside that boundary as illegitimate. Today's conventional programming revolves around typing procedural lists of instructions as lines of text inside files, executed sequentially on a single central processing unit. The experimental frontier, however, is dismantling every one of these baseline assumptions.
The four paradigms emerging from current research challenge the core mechanics of authoring software: 1. **Direct Manipulation of Data:** Rather than drafting abstract lists of commands in source code, programmers manipulate visual and structural representations of data directly, allowing the underlying program to build itself implicitly. 2. **Goal-Directed Programming:** Instead of detailing explicit, imperative operational procedures step-by-step, the programmer states desired outcomes, leaving the machine's internal solver to determine the operational steps. 3. **Spatial Representations on Video Displays:** Abandoning linear text streams in favor of two-dimensional CRT displays, leveraging human spatial cognition to arrange and understand computational relationships. 4. **Massively Parallel Models:** Moving beyond single-threaded, sequential instruction dispatch to accommodate hardware architectures featuring widespread concurrency.
- Current programming orthodoxy remains tethered to sequential imperative instructions written as plain lines of alphanumeric text. - Emerging hardware advances will inevitably require parallel programming semantics rather than sequential execution loops. - Victor warns of the cognitive trap that stalls adoption: “People over here, they think they know what they're doing, they think they know what programming is: this is programming, that's not programming, and so there's going to be a lot of resistance to adopting new ideas.”
[06:42](https://www.youtube.com/watch?v=8pTEmbeENF4&t=402s) Direct Manipulation: Ivan Sutherland and Sketchpad
Victor delves into the first idea—direct manipulation—by demonstrating Ivan Sutherland’s 1963 MIT doctoral thesis project, Sketchpad. Using a CRT display and a light pen, Sutherland demonstrated how an operator could draw directly on the screen. Victor walks through Sutherland attempting to sketch a mechanical rivet: the initial strokes are crooked, misaligned, and distinctly sloppy. Sutherland then holds down an interface switch to signal a constraint, commanding the lines to become mutually perpendicular. Sketchpad’s built-in iterative relaxation solver immediately adjusts the geometry, rotating the strokes into a precise, clean rectangle.
The breakthrough is that Sketchpad possesses no intrinsic definition of a rectangle; the shape arises strictly because the user imposed geometric constraints directly on the drawn data. What turns this drawing into a true program rather than static artwork is that the relationships remain dynamically maintained. When Sutherland grabs a corner of the rivet with the light pen and drags it to resize the structure, the solver continuously runs in real time, recalculating vertices to ensure every perpendicular constraint remains satisfied. Sutherland extended this concept to sophisticated structural physics, building an interactive bridge simulation where hand-drawn trusses display numeric mechanical tension and deform under applied hanging loads without the core system knowing anything specifically about bridges.
With pointed historical irony, Victor projects how this technique will surely dominate the future. Looking four decades ahead, he speculates that if the world ever invents a universal document format distributed across an interconnected computer network, authors will naturally build those layouts through visual direct manipulation rather than raw text codes.
```mermaid flowchart TD accTitle: Sketchpad Constraint-Based Direct Manipulation accDescr: How direct visual manipulation and dynamic constraints yield procedural behavior without writing code. A["Operator draws sloppy strokes with light pen"] --> B["Operator selects lines & declares constraints"] B --> C["Iterative relaxation solver adjusts geometry"] C --> D["Parametric object formed (e.g. perfect rectangle)"] D --> E["User manipulates element dynamically"] E -->|"Constraints preserved continuously"| C ```
- Ivan Sutherland developed Sketchpad at MIT using a Lincoln TX-2 computer, pioneering interactive computer graphics via a light pen and CRT screen. - Sketchpad relied on an iterative numerical relaxation solver to balance simultaneous geometric constraints applied directly to lines and vertices. - Complex assemblies, including an animated truss bridge displaying real-time tension values under variable loads, were constructed without procedural structural programming. - Victor highlights the perceived absurdity of text-encoded markup for visual layouts: “I'm sure we're gonna be creating all those documents by direct manipulation; there won't be any markup languages or stylesheet languages, right? That would make no sense; Ivan Sutherland showed us how to do it back in 1962, so it's all gonna be direct manipulation in the future, and it's going to be fantastic.”
[09:41](https://www.youtube.com/watch?v=8pTEmbeENF4&t=581s) Goal-Directed Programming: Planner and Prolog
Victor transitions to the second paradigm: programming using goals rather than prescriptive procedures. Sketchpad provided an early glimpse of this philosophy because Sutherland never dictated the arithmetic steps for drawing a rectangle; he simply stated the desired geometric condition, leaving the constraint solver to calculate coordinate placements. Victor details how this declarative approach was formalized into general-purpose computation through Carl Hewitt’s recent creation of the Planner language.
Planner operates bidirectionally, capable of executing procedural steps forward while also reasoning backward from specified goals. If the system is given the assertion that an apple is red, it can deductively confirm an apple's color when asked; conversely, if commanded to find an object that is red, it searches backward through its knowledge base to propose an apple. While Planner allows developers to interleave procedural heuristics to optimize subgoals, later developments like Prolog distill this mechanism into pure backward-chaining logic programming. In this paradigm, developers articulate only the target state and semantic relations, delegating the search, resolution, and execution pathways entirely to the machine.
- Carl Hewitt designed Planner at MIT to unify procedural execution with goal-oriented backward reasoning. - Prolog stripped out procedural branching mechanisms to focus exclusively on backward deduction and automated resolution search. - The fundamental shift of logic programming lies in liberating the programmer from micro-managing execution paths. - Victor emphasizes the core philosophical breakthrough of the paradigm: “What's important is expressing your program as what you want, not a set of instructions on how to do it.”
[11:21](https://www.youtube.com/watch?v=8pTEmbeENF4&t=681s) Pattern Matching and Goal-Directed Systems
Continuing his survey of declarative approaches, Bret Victor highlights pattern matching as another prime manifestation of goal-directed programming. He reminds the audience of SNOBOL, the string manipulation language designed specifically so programmers could throw text at a script and let built-in matching facilities do the heavy lifting. More recently, Ken Thompson over at Bell Labs—working on an experimental operating system known as Unix (“I know, right? Unix,” Victor quips knowingly)—adopted Stephen Kleene’s concept of regular expressions for matching text. Instead of forcing a developer to hand-write a tedious, step-by-step procedural parser to chew through unstructured strings, regular expressions allow the programmer to simply supply a template describing the shape of the data they want, leaving the underlying engine to deduce how to execute the match.
Victor unifies these historical breakthroughs into a single philosophical throughline spanning Ivan Sutherland’s Sketchpad constraints, Carl Hewitt’s Planner, Prolog, and regular expressions. In every case, the paradigm shift is identical: humans specify high-level intents and outcomes, and the machine deduces the operational steps. While this philosophy is beginning to surface in optimizing compilers, Victor predicts it will dominate software development decades into the future. Describing this foundational mindset, Bret Victor states: “All these examples—Sketchpad's constraints, Planner, Prolog, pattern matching—again, they're all examples of giving the computer high-level goals, saying, 'Here's the sort of thing I'm looking for,' and letting the computer itself figure out how to do it.”
- **SNOBOL**: Designed with native, first-class pattern-matching capabilities for arbitrary text manipulation. - **Regular Expressions**: Conceptualized mathematically by Stephen Kleene and brought into Unix utilities by Ken Thompson to eliminate manual procedural parsing. - **Goal-Directed Synthesis**: Compilers and interpreters take over the procedural burden, letting programmers declare constraints, relationships, or target states.
---
[12:50](https://www.youtube.com/watch?v=8pTEmbeENF4&t=770s) The "Communicating with Aliens" Problem and the Impossibility of APIs
Victor connects goal-directed programming directly to the rise of computer networking, championed by J.C.R. Licklider at ARPA. Licklider envisioned connecting all the world’s computers into an “Intergalactic Computer Network”—deliberately aiming for the galaxy, Victor jokes, because engineers notoriously deliver the bare minimum and might therefore deliver a worldwide network instead. With ARPANET rapidly evolving into what people are starting to call an “internet,” Victor points out that distributed computing introduces an existential coordination dilemma. Quoting J.C.R. Licklider directly, Victor reads: “The problem is essentially the one discussed by science fiction writers: how do you get communication started among totally uncorrelated sapient beings?”
In this vast network, disparate programs will be authored at completely different times, by different people, in different languages, running disparate protocols. Eventually, one program will discover it requires a service provided by another remote program. Procedural programming cannot bridge this gap because human authors cannot foresee remote specifications across time and space. The only scalable solution is for autonomous programs to negotiate dynamically: probing one another, establishing a shared semantic language on the fly, and solving compatibility goals cooperatively.
Victor then contrasts this vision with an absurd counter-proposal, inventing a mock acronym to ridicule it: the "API" (Application Programming Interface). Under an API regime, human engineers would manually hard-code integrations against brittle, fixed external interfaces. Victor dismisses this as an unworkable disaster: it couples systems inextricably, breaks downstream clients whenever a remote provider alters a single endpoint, and forces human beings to act like low-level glue code. Projecting total confidence from his 1973 vantage point, Bret Victor argues: “I'm pretty confident this will never happen; we're not going to have APIs in the future, where we are going to have are programs that know how to figure out how to talk to each other, and that's going to require programming goals.”
```mermaid flowchart TD accTitle: Dynamic Goal Negotiation vs Fixed Brittle APIs accDescr: A comparison between autonomous goal negotiation across networks and the brittle API model.
subgraph Scalable ["Goal-Directed Intergalactic Model"] P1["Program A (Unknown Language)"] P2["Program B (Unknown Service)"] P1 <-->|"Dynamic semantic probe & negotiation"| P2 P1 -.->|"Discovers alternative services autonomously"| P3["Program C"] end
subgraph Brittle ["The Supposed 'API' Anti-Pattern"] H["Human Programmer"] -->|"Hand-codes low-level glue"| API["Rigid Remote Endpoint"] API -->|"Any remote change breaks client"| Broken["System Failure"] end ```
---
[16:29](https://www.youtube.com/watch?v=8pTEmbeENF4&t=989s) Spatial Representation of Information: NLS, GRAIL, and Smalltalk
Turning to his third major theme, Victor examines how programming representations must change as hardware evolves beyond paper tape, punched cards, and teletype printers. Linear strings of code made sense when physical media was linear, but the advent of interactive cathode-ray video terminals transforms the computer into a dynamic, two-dimensional sheet of paper. Victor points to Douglas Engelbart’s work at SRI and his NLS (oN-Line System), famously showcased five years earlier in 1968. NLS introduced not only the mouse—a curious rolling desktop artifact that allows users to point directly to items on screen to inspect deeper structures—but also dynamic re-views, where tabular lists of structured data flip effortlessly into two-dimensional spatial diagrams.
Victor shows an even more radical visual system: the GRAIL system developed at the RAND Corporation in 1968. Operating on a video display coupled to a RAND tablet and stylus, GRAIL allowed developers to program directly via flowchart diagrams. Victor narrates archival footage showing an engineer freehanding a rough box on the tablet. GRAIL instantly recognizes the geometry, snaps it into a clean flowchart symbol, reads the engineer's handwritten alphanumeric characters, renders them as crisp text labels, and accepts freehand scribble gestures to delete connecting lines. Stepping beyond purely graphical visual languages, Victor points to Xerox PARC, where researchers are developing Smalltalk. Smalltalk uses text, but eschews monolithic text files entirely; code is organized spatially through a multi-pane browser dividing classes, protocols, and methods into navigable, modular hierarchies. Rejecting the flat file format as an archaic relic of punched paper, Bret Victor declares: “I'm totally confident that in 40 years we won't be writing code in text files, right? We've been shown the way.”
- **Douglas Engelbart's NLS (SRI, 1968)**: Pioneered screen-based spatial information navigation, mouse-driven pointing, and real-time alternative data projections. - **RAND Corporation's GRAIL (1968)**: Supported direct-manipulation flowchart programming using stylus tablets, real-time geometric shape recognition, handwriting recognition, and gesture deletion. - **Xerox PARC's Smalltalk**: Replaced flat text files with structured system browsers, partitioning software into navigable visual panes of classes, method categories, and source routines.
---
[20:44](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1244s) Interactive Computing and the Myth of UI Lag
These spatial computing environments—NLS, GRAIL, Smalltalk, and the PLATO system at the University of Illinois—share a core breakthrough: real-time interactive computing. Unlike batch-processing mainframes, these systems were engineered from the hardware up to guarantee immediate feedback. The interface behaves like a tactile physical object: when a user manipulates an on-screen element, the response is instant and frictionless.
Victor uses this historical fact to make another wry, tongue-in-cheek prediction. Because researchers in the 1960s and early 1970s already proved that sub-second, zero-latency feedback is essential for human thought—and managed to achieve it on primitive, resource-constrained minicomputers—future systems will naturally eradicate delay altogether. Projecting forward to an era where processors will run millions of times faster, Bret Victor deadpans: “Obviously there's no reason to have any kind of delay or lag in the operating system in the user interface, so that's going to be really exciting.”
---
[21:57](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1317s) Parallel Programming and the Von Neumann Bottleneck
Victor introduces his fourth topic: parallel programming. Modern software remains overwhelmingly sequential—a rigid checklist where the machine executes instruction A, then B, then C. Victor explains that this conceptual bottleneck is not an intrinsic property of human logic or problem-solving, but an artifact of computer engineering history: the Von Neumann architecture.
Under the Von Neumann paradigm, a solitary central processing unit fetches instructions and words of data serially across a bus from a shared pool of memory. Because the hardware processor can only perform a single operation at any given instant, human programming languages adopted a matching step-by-step imperative syntax. Framing this mechanical constraint, Bret Victor notes: “So the sequential programming model makes sense when you just have one processor; the processor can only do one thing at a time, you give it a list of things for the processor to do, and it just kinda does each one of those.” Victor prepares to challenge whether software should stay tethered to this single-threaded assumption.
[22:47](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1367s) Silicon, Microprocessors, and the Inevitability of Massively Parallel Hardware
The fundamental weakness of the von Neumann architecture is that most of the computer’s memory sits completely idle almost all of the time. While a small processor is churning away as fast as it can, only a single word of memory is ever accessed at any given moment; the rest simply waits. In an era when processors were assembled from bulky, costly vacuum tubes or relays, and memory consisted of expensive magnetic core or rotating magnetic drums, this separation made economic and mechanical sense. However, the advent of the semiconductor integrated circuit completely shifts that balance. With Intel introducing the microprocessor—placing an entire processing unit onto a single silicon die—both processors and memory are reduced to identical building blocks: microscopic transistor patterns etched into silicon.
```mermaid flowchart TD accTitle: von Neumann Bottleneck vs Massively Parallel Silicon accDescr: Contrasting a single CPU with vast idle memory against an array of tiny interconnected processors on a single silicon die.
subgraph VN["Von Neumann Architecture"] direction TB CPU["Single Fast Processor<br>(transistor intensive)"] IdleMem["Vast Memory Array<br>(mostly idle transistors)"] CPU <-->|"one word at a time"| IdleMem end
subgraph MP["Massively Parallel Silicon Array"] direction TB P1["Node (CPU + State)"] <--> P2["Node (CPU + State)"] P3["Node (CPU + State)"] <--> P4["Node (CPU + State)"] P1 <--> P3 P2 <--> P4 end ```
When evaluated from the perspective of silicon real estate, the von Neumann design squanders vast numbers of transistors that do no computation whatsoever. To maximize the compute power achievable per unit area of silicon, hardware naturally wants to become an array of numerous tiny computers, each equipped with its own processor and local state, communicating directly with its neighbors. Such architectures scale effortlessly: as transistors shrink and silicon dies grow larger, designers simply pack more independent processing units onto the die. Victor delivers a dry, knowing quip to his audience: this massively parallel future will arrive inevitably, “unless, you know, unless Intel somehow gets a stranglehold on the microprocessor market and pushes this architecture forward thirty years, but that’s not gonna happen.”
- Microprocessors unify processing elements and memory into the exact same medium: transistors etched into silicon. - The von Neumann bottleneck wastes the vast majority of silicon real estate on passive, idle storage. - A cellular array of independent, communicating micro-nodes scales linearly with Moore's law improvements in die size and transistor density.
[25:28](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1528s) Concurrency Models: The Dead End of Threads and Locks vs. the Actor Model
Faced with hardware composed of massive arrays of independent processors, software requires a matching programming model. The contemporary convention of managing concurrency through sequential threads and mutual exclusion locks is fundamentally broken. Multiplexing a handful of sequential threads across a processor to simulate parallelism while forcing them to lock one another out of shared memory does not scale to thousands of nodes. Programmers cannot reasonably verify or debug hundreds of concurrent threads constantly colliding over a shared address space. Victor pulls no punches regarding this paradigm: “I think in forty years if we're still using threads and locks we should like pack up and go home, cuz we've clearly failed as an engineering field.”
Instead of brute-forcing sequential constructs into parallel contexts, alternative paradigms treat computation like physical systems. Carl Hewitt—who also created Planner—introduced the Actor model, drawing inspiration from physics where independent particles possess local state, execute autonomous actions, and interact solely by sending messages to their immediate surroundings. Similar mathematical foundations for concurrency are emerging simultaneously across Europe: Gilles Kahn’s Kahn process networks in France, Tony Hoare’s Communicating Sequential Processes (CSP), and upcoming work by Robin Milner. Victor tosses in a playful aside that it would be quite strange if Hewitt's Actor model ended up being picked up by a Swedish telephone company—an inside reference to Ericsson and Erlang. The critical takeaway is that massively parallel hardware demands an equally sound, message-driven parallel programming model rather than sequential illusions.
- Shared-memory threads and locks are a dead-end abstraction that cannot scale to massive hardware concurrency. - Carl Hewitt's Actor model models computation as asynchronous, independent processes managing their own internal state and exchanging discrete messages. - Contemporary theoretical work from the early 1970s—including Hoare’s CSP and Kahn’s process networks—provides rigorous foundations for distributed, lock-free computation.
[27:46](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1666s) The Four Paradigms of 1973
Victor pauses to tie together the four revolutionary technical directions explored throughout the presentation, each offering a radical departure from procedural code in linear text files:
```mermaid flowchart TD accTitle: The Four Computing Paradigms of 1973 accDescr: Summary of the four key computing ideas from the 1960s and early 1970s highlighted by Victor.
subgraph Paradigms["Four Alternative Computing Foundations"] direction TB P1["1. Direct Data Manipulation<br>(Sketchpad, interactive graphics)"] P2["2. Goals and Constraints<br>(Prolog, Planner, pattern solvers)"] P3["3. Spatial Representations<br>(2D visual displays over flat text)"] P4["4. Fundamentally Parallel Models<br>(Actors, CSP, message passing)"] end ```
First, direct manipulation of data, exemplified by Ivan Sutherland’s Sketchpad, where programmers draw and interact with dynamic structures directly rather than typing symbolic instructions. Second, declarative programming using goals and constraints—as seen in Sketchpad’s constraint satisfaction, Hewitt's Planner, Prolog, and regular expressions—where the programmer specifies what needs to be true and delegates the execution strategy to internal solvers. Third, spatial representations of information, leaving behind the one-dimensional legacy of punched cards and teletype text files to structure program logic across two-dimensional visual displays. Fourth, fundamentally parallel architectures and programming abstractions that abolish sequential execution and locking mechanisms.
Acknowledging the impossibility of predicting how technology will drift over four decades, Victor reflects on how ideas merge, diverge, and drift in and out of cultural fashion. Yet he emphasizes the intellectual loss if the software industry fails to build on these breakthroughs: “I think that would suggest we didn't learn anything from this really fertile period in computer science.” Failing to adopt these ideas would be a tragedy, but seeing future practitioners encounter them with genuine surprise would be even more disheartening.
- Direct manipulation replaces code authoring with direct, visual modification of underlying data models. - Constraint- and goal-based programming frees humans from micromanaging step-by-step sequential procedures. - Spatial layouts leverage modern graphical displays rather than preserving the flat formatting constraints of paper teletypes. - Native parallel models reflect the physical reality of silicon hardware far better than sequential control threads.
[29:38](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1778s) Dogma and the Real Tragedy: Forgetting How to Think
The gravest danger facing the future of software is not merely that superior paradigms might go unused or forgotten, but that developers might forget that alternative models of programming can exist at all. Victor charts out the worst-case generational trap: the next wave of engineers is raised on a single procedural, sequential framework. They polish its rough edges, implement every marginal optimization, and mistake that narrow framework for a finished science. They then pass this settled perspective on to the subsequent generation as dogma. That second generation matures under the illusion that the core questions of computing have been solved, completely losing the ability to imagine alternatives.
The extraordinary intellectual burst of the 1960s and early 1970s occurred because of a unique historical alignment: computing machinery had finally become fast and capable enough to build real interactive systems, yet remained young enough that no orthodoxy had crystallized. Pioneers possessed the freedom of knowing they did not know what programming was supposed to look like, prompting them to experiment wildly with whatever they could conceive.
```mermaid flowchart LR accTitle: The Cycle of Dogma versus Creative Openness accDescr: How assuming one knows what programming is breeds blindness, whereas acknowledging ignorance enables creative freedom.
subgraph Dogma["The Cycle of Dogma"] D1["Assume 'we know what we're doing'"] --> D2["Stop looking for other ways"] D2 --> D3["Blindness to new paradigms<br>(e.g., rejecting compilers for binary)"] end
subgraph Openness["The Cycle of Creative Freedom"] O1["Acknowledge total ignorance:<br>'We don't know what programming is'"] --> O2["Free to experiment and question basics"] O2 --> O3["Invent entirely new modes of thought"] end ```
Victor draws a direct comparison to early engineers who were so convinced that real programming meant toggling raw binary code that they dismissed assembly language and Fortran as frivolous or irrelevant. Certainty breeds blindness. Delivering the central moral of his retro-styled talk, Victor leaves the audience with a challenge:
> “The most dangerous thought that you can have as a creative person is to think that you know what you're doing. Because once you think you know what you're doing, you stop looking around for other ways of doing things and you stop being able to see other ways of doing things. You become blind.”
To retain the creative audacity of computing's early pioneers, engineers must dismantle their assumptions about the tools they use every day. Victor concludes: “We don't know what programming is. We don't know what computing is. We don't even know what a computer is. And once you truly understand that, and once you truly believe that, then you're free, and you can think anything.”
- The 1960s and 1970s flourished because technology was capable enough to build dynamic systems, but early enough that dogma had not set in. - Premature certainty closes minds to paradigm shifts, just as early binary programmers rejected high-level languages like Fortran. - True creative freedom in computer science begins with admitting that computing, programming, and hardware remain fundamentally unsolved concepts.
## Notable quotes > [29:38](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1778s) The most dangerous thought that you can have as a creative person is to think that you know what you're doing. — Bret Victor
> [25:28](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1528s) I think in forty years if we're still using threads and locks we should like pack up and go home, cuz we've clearly failed as an engineering field. — Bret Victor
> [00:20](https://www.youtube.com/watch?v=8pTEmbeENF4&t=20s) Technology changes quickly, people's minds change slowly. — Bret Victor
> [09:41](https://www.youtube.com/watch?v=8pTEmbeENF4&t=581s) What's important is expressing your program as what you want, not a set of instructions on how to do it. — Bret Victor
> [29:38](https://www.youtube.com/watch?v=8pTEmbeENF4&t=1778s) We don't know what programming is. We don't know what computing is. We don't even know what a computer is. And once you truly understand that, and once you truly believe that, then you're free, and you can think anything. — Bret Victor
## Mentioned ARPANET, Carl Hewitt, Communicating Sequential Processes (CSP), Douglas Engelbart, Ericsson, Erlang, Fortran, Gilles Kahn, Gordon Moore, GRAIL, IBM 650, Intel, Ivan Sutherland, J.C.R. Licklider, John Backus, John von Neumann, Ken Thompson, NLS (oN-Line System), Planner, PLATO, Prolog, RAND Corporation, Robin Milner, Sketchpad, Smalltalk, SNOBOL, Stan Poley, Stephen Kleene, Symbolic Optimal Assembly Program (SOAP), Tony Hoare, Unix, Xerox PARC
## Video description "The most dangerous thought you can have as a creative person is to think you know what you're doing." Presented at Dropbox's DBX conference on July 9, 2013. All of the slides are available at: http://worrydream.com/dbx/
For his recent DBX Conference talk, Victor took attendees back to the year 1973, donning the uniform of an IBM systems engineer of the times, delivering his presentation on an overhead projector. The '60s and early '70s were a fertile time for CS ideas, reminds Victor, but even more importantly, it was a time of unfettered thinking, unconstrained by programming dogma, authority, and tradition. 'The most dangerous thought that you can have as a creative person is to think that you know what you're doing,' explains Victor. 'Because once you think you know what you're doing you stop looking around for other ways of doing things and you stop being able to see other ways of doing things. You become blind.' He concludes, 'I think you have to say: "We don't know what programming is. We don't know what computing is. We don't even know what a computer is." And once you truly understand that, and once you truly believe that, then you're free, and you can think anything.'"
[Source](https://www.youtube.com/watch?v=8pTEmbeENF4)