newsfilter.io
Interview

James Gosling: Java, JVM, Emacs, and the Early Days of Computing | Lex Fridman Podcast #126

  • James Gosling, founder of Java, describes his early fascination with mathematics as a driving force for his approach to programming, noting the beauty of logical structure and algorithmic complexity.
  • Gosling recalls the historical significance of the square root of two, which "destroyed" the Pythagorean belief that all numbers could be represented as rational fractions, a realization he parallels with Gödel's incompleteness theorems and the necessity of "three-state logic" (true, false, maybe).
  • He characterizes his own cognitive style as strictly visual rather than verbal, stating he "sees pictures" of code as machinery with gears, which explains his preference for dense coding styles that minimize white space to fit entire functions on a single screen.
  • Gosling's first programming experience was on a PDP-8 at the University of Calgary, a machine with 4k RAM, a ~0.33 MHz clock rate, and a Model 33 teletype interface, where he initially wrote programs in FOCAL 5 to plot graphs.
  • He identifies the lack of a memory barrier and the prevalence of pointer-related bugs in C and C++ as the primary catalysts for creating Java, aiming to eliminate buffer overflows and improve developer velocity.
  • Gosling advocates for a strict methodology in object-oriented design where "back doors" to internal data structures are impossible, forcing developers to formally request interface changes rather than sneakily manipulating memory.
  • The Java Virtual Machine (JVM) was conceived to solve the problem of hardware fragmentation, allowing code to run on diverse architectures by translating an abstract instruction set to physical machine code.
  • A key inspiration for the JVM's design was a graduate school project where Gosling successfully ported UCSD Pascal P-code from a proprietary machine to a VAX by translating bytecode directly to assembly, achieving higher quality than the standard compiler.
  • Gosling argues that Java enforces IEEE 754 floating-point standards and two's complement arithmetic to ensure numerical consistency across different hardware platforms, a stance that historically caused friction with Intel.
  • He critiques major corporations (e.g., Kodak, cable companies) for failing to pivot to disruptive technologies like digital photography or the open internet because they were trapped by current revenue models and quarterly reporting cycles.
  • Gosling distinguishes between leadership that pushes teams to excel through vision and leadership that is "nasty," criticizing the Silicon Valley myth that "jerkiness" is a prerequisite for high achievement.
  • He describes working with Steve Jobs and Elon Musk as having a "strong vision" but notes that Jobs was often unnecessarily hard on people, whereas Google's leadership exemplifies high performance without toxic behavior.
  • Gosling recounts a personal decision to graduate from CMU rather than becoming the permanent "Mr. Emacs," choosing a path that allowed him to avoid financial instability and the limitations of maintaining a legacy text editor indefinitely.
  • He expresses skepticism toward the "open source religion" that views profit-making as unethical, arguing for a balance where support contracts and commercial models can sustain development without descending into rapacious capitalism.
  • Gosling acknowledges that the Android team, specifically Andy Rubin, crossed legal lines regarding Java usage, but maintains that the technology was destined to dominate mobile regardless of the legal friction.
  • He views the adoption of Java in billions of SIM cards and IoT devices (e.g., elevators, locomotives) as a fulfillment of the 1990s vision for a "write once, run anywhere" platform for embedded systems.
  • His legacy hope is to inspire others to "take a leap of faith," accepting that over half of his own projects have crashed and burned, but that the risks are necessary for innovation.
  • Gosling advises young engineers to accept that making "stupid mistakes" is permissible once or twice, but emphasizes that ethical choices must guide technical decisions, explicitly preferring a "Star Trek" future of discovery over a "Blade Runner" future of decay.