James Gosling on Java, Early Computing, Emacs, and the Philosophy of Programming
Summary
This episode features James Gosling, the creator of the Java programming language, discussing his journey through computing, from early machines to the philosophical underpinnings of software design. Lex Fridman opens by sharing his personal connection to Java, highlighting its role in his understanding of object-oriented programming and concurrent computing, which he found as mind-expanding as any recreational drug. Gosling delves into his early fascination with mathematics, particularly the philosophical implications of irrational numbers like the square root of two, which challenged the Pythagorean belief in perfect, rational numbers, drawing parallels to Gödel's incompleteness theorems and the concept of a three-state logic (true, false, maybe) in complex systems.\n\nGosling describes programming as an exercise in logical structure and pattern recognition, akin to finding efficient paths through a graph of possibilities. He reveals his unique cognitive approach to programming, identifying as a visual thinker who translates code into mental pictures of machinery, explaining his preference for dense code to visualize entire functions at once. He reminisces about his first programming experiences on a PDP-8 mini-computer with 4K of RAM and a teletype interface, where he programmed in assembly code and early languages like Focal Five. He emphasizes that his love was never for a specific language's syntax, but for the act of building complex things without physical materials or money, a sentiment that drove him to scavenge parts for relay-based tic-tac-toe machines.\n\nThe conversation touches upon the evolution of programming languages, from Lisp (which he appreciates for its structure despite the parentheses) to Simula, which he credits as the first object-oriented language and the origin of co-routines, an early form of parallelism. Gosling recounts his impactful work on an Emacs implementation for Unix at CMU in the mid-80s, detailing the editor's philosophical shift from text-based mental models (like Teco) to visual editing. He then provides a fascinating glimpse into the early days of the Arpanet, noting how social life quickly centered around email and chat-like messaging, predicting the rise of social media long before the internet's explosion in scale.\n\nFinally, Gosling discusses the significant resistance the internet faced from established industries like cable TV and phone companies in the early 90s. He explains that while employees often saw their role as delivering content, the higher echelons viewed their business as selling "eyeballs to advertisers," making the internet a direct competitor that threatened their revenue models. He highlights a proposal from Sun Microsystems in the early 90s envisioning a world where anyone could be a content publisher, a concept vehemently rejected by these incumbents. This serves as a powerful lesson on disruptive innovation and the challenges large, profitable companies face in adapting to new paradigms, often choosing to protect existing revenue streams rather than embracing transformative change.
Key Quotes
"java is the language with which i first learned object oriented programming and with it the art and science of software engineering"
"the idea that we could create an abstraction of parallelism where you could do many things at the same time while still guaranteeing stability and correctness was beautiful"
"the pathagorians they they believed that all numbers were perfect and you could represent anything as as a as a rational number and in that in that time period the this proof came out that there was no rational fraction whose value was equal to the square root of two and that that means nothing in this world is perfect"
"the lesson i take from girdle's theorem is not that you know there are things you can't know which is fundamentally what it says but if you if you allow a three-state logic that is true false or maybe then then life's good"
"programming is all about logical structure understanding the the patterns that come out of computation understanding sort of i mean it's often like you know the path through the graph of possibilities to find a short a short route meaning like find a short program that gets the job done"
"i don't think very well verbally i am just naturally a slow reader i'm what most people would call a visual thinker so when you think about a program what do you what do you see I see pictures"
"i guess i never really thought of any particular language as being like beautiful because it was never really about the language for me it was about what you could do with it"
"the thing about co routines is that they don't have true concurrency so you can get away without really complex locking"
"pretty much everything from you know arranging lunch to going out on dates you know it was all like driven by social media so you know right in the in the in the 80s"
"at the deepest fibers of their being they hated the internet"
"anybody with internet technologies anybody can become provider of of content"
"the reason that you have you know cable tv is to capture eyeballs you know there they didn't see it that way well so so the people who the most the people who worked at the phone company are at the cable companies their view was that their their job was getting delightful content out to their customers and their customers would pay for them would pay for that higher up they viewed this as as a way of attracting eyeballs to them and and then what they were really doing was selling the eyeballs that were glued to their content to the advertising to the advertisers"
"if you're in a in a position where you're making truckloads of money off of a particular business model you you know the the the the whole thought of like you know leaping the chasm right you know you know you can see oh new models that are more effective are emerging right so like digital cameras versus film cameras i mean why take the leap why take the leap because you're making so much money off of film"
Concepts
Themes
- The evolution of computing and programming
- The philosophy of software design and beauty in function
- Disruptive innovation and industry resistance to change
- The interplay between mathematics, logic, and technology
- The early history and societal impact of the internet
- Cognitive approaches to problem-solving in engineering
- The personal journey of a pioneering technologist
Related to:
Similar Episodes
Richard Feynman, Stephen Wolfram, and the Nature of Computation, Intuition, and Emergent Complexity
Dan Reynolds on Creativity, Authenticity, Spirituality, and the Complexities of Life
Bjarne Stroustrup on the Indispensable Value of Learning Multiple Programming Languages and C++ Abstraction