Q&A with Guido van Rossum, Inventor of Python

Q&A with Guido van Rossum, Inventor of Python — Microsoft Reactor

Microsoft Reactor

AI-assisted summary of Q&A with Guido van Rossum, Inventor of Python — original source. Check the original for full context.

Source published:

Key ideas

  • Guido van Rossum joined Microsoft as a Distinguished Engineer to lead a dedicated performance team alongside Mark Shannon and Eric Snow, aiming to deliver substantial speed improvements starting in Python 3.11. (43:36)
  • The Python core team has largely abandoned the concept of a disruptive 'Python 4.0' release, committing instead to an annual release cadence (3.10, 3.11, etc.) after the challenging multi-year Python 2 to 3 migration. (47:03)
  • Rather than attempting full GIL removal across the interpreter, core development efforts are focusing on isolated sub-interpreters with per-interpreter GILs within a single operating system process. (49:37)
  • Browser and mobile environments remain structurally ill-suited for standard CPython due to 30 years of desktop/server architectural baggage, battery constraints, and synchronous execution assumptions. (18:56)

Detailed notes

## Background Published by Microsoft Reactor on YouTube on May 14, 2021, this Q&A session features Python creator Guido van Rossum. According to the page description, the event covers how PyCon was born and Guido's journey as the language's former "Benevolent Dictator for Life" (BDFL) through an open community Ask Me Anything.

## TL;DR Guido van Rossum reflects on the early history of Python, from its origins at CWI as an alternative to C and shell scripts to its unexpected rise as the premier language for artificial intelligence and data science. He explains key language design choices, including functional programming features, typing influences from TypeScript, and the painful lessons learned from the Python 2 to 3 transition. Guido also discusses modern runtime challenges across web and mobile platforms, clarifying why a disruptive "Python 4" is unlikely and detailing his new work at Microsoft alongside Mark Shannon and Eric Snow to speed up CPython starting in Python 3.11.

## Atmosphere & style The session feels warm, unpretentious, and reflective, driven by Guido's candid modesty and dry humor. Rather than adopting the persona of an untouchable software pioneer, Guido speaks like a pragmatic veteran engineer who openly acknowledges past miscalculations, accidental successes, and community disagreements. The conversational exchange with the host flows naturally from technical deep dives into interpreter architecture to relaxed personal anecdotes about his family, cycling, and pop culture tastes.

## Bulletin - [43:36](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2616s) Guido van Rossum joined Microsoft as a Distinguished Engineer to lead a dedicated performance team alongside Mark Shannon and Eric Snow, aiming to deliver substantial speed improvements starting in Python 3.11. - [47:03](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2823s) The Python core team has largely abandoned the concept of a disruptive 'Python 4.0' release, committing instead to an annual release cadence (3.10, 3.11, etc.) after the challenging multi-year Python 2 to 3 migration. - [49:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2977s) Rather than attempting full GIL removal across the interpreter, core development efforts are focusing on isolated sub-interpreters with per-interpreter GILs within a single operating system process. - [18:56](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1136s) Browser and mobile environments remain structurally ill-suited for standard CPython due to 30 years of desktop/server architectural baggage, battery constraints, and synchronous execution assumptions.

## Key takeaways - [01:28](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=88s) Python originated over a Christmas holiday at CWI as a high-level scripting alternative to C and shell scripts for the Amoeba distributed operating system, heavily influenced by the lessons of ABC. - [07:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=457s) Python's eventual dominance in AI and machine learning was completely unforeseen, as the language was created during an 'AI winter' when artificial intelligence research was widely regarded as stagnant. - [09:26](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=566s) Functional constructs like lambda, map, and filter were early community additions, while reduce was intentionally removed from built-ins due to poor readability in favor of list comprehensions. - [13:05](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=785s) Running CPython in web browsers faces structural hurdles; browser sandboxes lack synchronous blocking I/O, while WebAssembly ports produce impractically large bundles compared to server-hosted setups. - [18:56](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1136s) Mobile platforms clash with CPython's architecture because of high battery and memory usage, as well as OS differences like Android blocking fork(), suggesting a need for lighter runtimes. - [26:49](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1609s) Python's typing Special Interest Group regularly consults TypeScript's typing design decisions and real-world outcomes when evolving Python's optional static type system. - [29:21](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1761s) The protracted friction of the Python 2 to 3 migration stemmed from core developers underestimating how deeply embedded Python had become in enterprise workflows and non-specialist automation. - [32:39](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1959s) Virtual environments remain essential for isolating project dependencies, though complex machine learning stacks still run unavoidable risks of transitive dependency conflicts. - [34:43](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2083s) The name 'Python' was chosen in 1989 as a nod to Monty Python's Flying Circus, CWI lab naming traditions, and a deliberate rejection of classical naming conventions like Pascal or Ada. - [38:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2317s) Guido ended his brief retirement during the COVID-19 pandemic out of boredom, choosing to focus his engineering efforts at Microsoft on core interpreter performance rather than machine learning. - [43:36](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2616s) Microsoft's Faster CPython initiative targets iterative runtime speed improvements, aligning with broader industry performance projects from Meta, Piston, and Pyjion. - [49:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2977s) A breaking C API overhaul would be the only realistic technical justification for a Python 4.0, but maintainers strongly favor backward-compatible deprecation cycles to avoid disrupting core packages like NumPy.

## Detailed walkthrough ### [00:00](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=0s) Introduction and Guido van Rossum's Journey

Dion opens the Microsoft Reactor session by welcoming attendees to the Q&A with Python's creator, directing viewers to check in online using event ID 13426, submit questions in the live chat, and look out for future community meetups. She then hands the floor to Francesca, who introduces Guido van Rossum. Francesca highlights Guido’s educational background in the Netherlands, where he received a master's degree in mathematics and computer science from the University of Amsterdam before creating Python. She traces his subsequent career trajectory to the United States, including his stints at Google starting in 2005, Dropbox in 2013, and his current role as a Distinguished Engineer at Microsoft.

- **Check-in Details:** Hosted via `aka.ms/reactorcheckin` under event ID `13426`. - **Career Highlights:** Master's degree from the University of Amsterdam; worked at Google (2005), Dropbox (2013), and Microsoft (Distinguished Engineer).

---

[01:28](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=88s) The Origins of Python: From ABC and Amoeba to Usenet

When asked how and why Python began as a side project, Guido jokingly wonders how much time they have before diving into his early days at Centrum Wiskunde & Informatica (CWI) in the Netherlands. His first major project there lasted three and a half years, focusing on implementing a programming language called ABC. While ABC boasted a clean, elegant design and taught him an immense amount, it was a commercial failure. The lab had no viable distribution channels or promotion strategies, leading to the project’s cancellation. Guido moved on to Amoeba, a research-oriented distributed operating system featuring a microkernel built by PhD students. As an application programmer tasked with building practical tools—such as backup utilities and mail readers—Guido felt trapped between writing slow, laborious low-level code in C or hacking brittle shell scripts together.

Remembering the elegance of ABC, Guido realized how much easier his life would be if he had a high-level language available for Amoeba. An ideal opportunity arose when his project lead left for a sabbatical in Silicon Valley, leaving the programming team largely unsupervised. As Guido playfully admitted: “I had no social life, so I decided over the Christmas holidays actually that it would probably take me about three months to design and implement a new programming language based on many of the ideas from ABC but also ideas I had myself and I had certain some criticism on parts of ABC.” He rationalized to himself that after those initial three months, team productivity would skyrocket to make up for lost time, though he conceded this was mostly an excuse to avoid cranking out boring backup tools. Within three months, he had a demoable prototype. Roughly a year later, after seeing colleagues and summer interns successfully build tools with it, they released Python to the world via Usenet. Guido's inbox was immediately inundated with fan mail, bug reports, and patches, marking an overnight open-source success.

```mermaid flowchart TD accTitle: Origin of Python accDescr: Progression from the ABC language failure to the Amoeba project and Python's release on Usenet.

subgraph Background ["CWI Background"] ABC["ABC Language Project<br/>(Flopped; lacked distribution)"] Amoeba["Amoeba Distributed OS<br/>(Needed utilities & tools)"] end

subgraph Implementation ["Birth of Python"] Dilemma["Stuck choosing between<br/>tedious C or brittle shell scripts"] Vacation["Lead on sabbatical + Christmas break:<br/>3-month prototype goal"] Demo["Working demo prototype &<br/>internal adoption by interns"] end

subgraph Launch ["Open Source Launch"] Usenet["Published to Usenet"] Community["Inbox filled with fan mail,<br/>bug reports, and patches"] end

ABC -.->|"Influenced design of"| Vacation Amoeba --> Dilemma Dilemma --> Vacation Vacation --> Demo Demo --> Usenet Usenet --> Community ```

- **Early Influences:** Built upon ABC’s ergonomics while addressing its flaws and limitations. - **Amoeba Development Environment:** Constrained by only having a C compiler, which made writing everyday utilities exhausting. - **Timeline:** Conceived over the Christmas holidays; working prototype completed in three months; released onto Usenet after about a year of internal use.

---

[07:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=457s) Unforeseen Dominance in AI and Machine Learning

Francesca asks whether Guido ever foresaw Python becoming the dominant lingua franca of the artificial intelligence and machine learning ecosystems. Guido reacts with immediate astonishment, explaining that around 1990, the field was mired in a severe "AI winter." At the time, AI carried a tarnished reputation because decades of grand promises from the 1960s and 1970s had failed to materialize, leading the broader computing community to view artificial intelligence as practically dead or centuries away from reality.

He explains that Python was never aimed at sci-fi applications back then, but rather designed strictly as a practical everyday utility for serious developers who were tired of the extremes of C, C++, and shell scripts. As Guido recalled: “And so everybody thought that that was a dead field that we wouldn't get to any of that science fiction for another century or so.” The language's eventual explosion across modern deep learning libraries and data science ecosystems was completely unexpected from its original vantage point.

- **Historical Context (circa 1990):** Industry-wide skepticism toward AI following unfulfilled promises from the 1960s and 1970s. - **Intended Target Audience:** General software engineers seeking higher productivity than C/C++ without the limitations of shell scripting.

---

[09:26](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=566s) Functional Programming: Lambdas, the Demise of Reduce, and Comprehensions

Addressing an audience question about his past writings on Python’s functional features, Guido reflects on how tools like `lambda`, `map`, `filter`, and `reduce` made their way into the runtime during the mid-1990s. At that stage, he had only surface-level exposure to academic talks on functional programming and had never actively written functional code. In the language's formative period, community contributions were accepted much more casually: if a contributed pull request looked neat and felt acceptable after a few moments of contemplation, he would simply merge it and cut a release.

Guido notes that while `lambda` found great success despite its intentionally restricted syntax, it caused frequent semantic misunderstandings in the community. He recalls almost getting into a drunken shouting match with an engineer who incorrectly insisted that only `lambda` expressions possessed closure semantics while standard nested functions did not. Turning to built-in functions, Guido explains that while `map` and `filter` were intuitive, `reduce` consistently made code difficult to read and comprehend, prompting him to eventually strip it from the built-in namespace. Noting persistent community complaints, Guido bluntly defended his prerogative as creator: “There are still people on Hacker News who are mad at me for that. But eh, it's my language, not theirs; you can design your own language.”

The eventual replacement came when Tim Peters suggested list comprehensions, a construct Guido immediately appreciated because its syntax mirrored standard mathematical set notation learned in school (e.g., $\{x \mid x > 5\}$). This design later expanded naturally from list comprehensions into generator expressions, followed by set and dictionary comprehensions contributed by Barry Warsaw.

- **Functional Additions:** `lambda`, `map`, `filter`, and `reduce` arrived via community mail submissions during the early-to-mid 1990s. - **Removal of `reduce`:** Excluded from standard built-ins because it produced unreadable code, provoking ongoing gripes on forums like Hacker News. - **Comprehension Lineage:** Suggested by Tim Peters based on mathematical set-builder notation; later broadened into generator expressions as well as set and dictionary comprehensions (championed by Barry Warsaw).

[13:05](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=785s) Python on the Web: Backend Dominance vs. Browser Limitations

When asked about Python’s place in web and mobile app development, Guido notes that these are two fundamentally different questions. Web development splits cleanly into front end and back end (though back-end developers often contend with a multi-layered stack that has its own internal fronts and backs). On the server side, Python has long been a powerhouse: Guido worked on Python-based systems during his time at Google, and Dropbox built its entire back-end server architecture in Python.

```mermaid flowchart TD accTitle: Python in Web Development accDescr: Shows Python dominating the server backend while encountering severe constraints inside the browser frontend.

subgraph Backend["Web Server / Backend"] BE["Python Stack"] -->|"Production Proven"| DB["Dropbox & Google Services"] end

subgraph Frontend["Web Browser / Client"] JS["JavaScript Engine"] WAS["WebAssembly / CPython"] -.->|"Large payloads & slow startup"| JS Trans["Transpilers (e.g. Brython)"] -.->|"Limited IO / no browser vendor buy-in"| JS end ```

By contrast, the browser frontend is strictly the domain of JavaScript: unless code compiles or translates into JavaScript, it simply cannot execute there. Guido recalls early mid-1990s efforts (around 1995 or 1996) involving browser applets and dynamic extensions. A browser could dynamically load an extension that opened a fixed-size square box on screen where an embedded language like Python could draw. However, users were required to download and install extensions before visiting a webpage, which caused constant failures and user resistance:

> “Plus, most users weren't so keen on downloading and installing stuff before they could sort of run a website that they were planning to visit for about 5 seconds.”

Java pursued the same applet route and failed just as definitively. Modern efforts to run Python in the browser generally adopt two approaches:

- **Transpilers / JS interpreters:** Tools like Brython transpile Python to JavaScript or implement a Python interpreter in JavaScript. While functional, they receive zero direct support from browser vendors, are alienated from typical Python community practices, and must navigate browser constraints where synchronous blocking I/O (such as opening and reading a local file) does not exist. - **WebAssembly (WASM):** Developers have executed heroic efforts using experimental GCC backends to compile all of CPython and the scientific computing stack (NumPy, SciPy) to WebAssembly. Although WebAssembly is technically impressive, the resulting bundles are huge downloads that still fall short of the functionality and performance of running a Jupyter notebook locally or hosting it on a remote server with a proper web UI.

Guido concludes that Python should stick to its core strengths rather than forcing itself into the browser, pointing out that nobody demands Rust run natively as an interactive browser UI language. Java gave up on the browser without dying, and Python can comfortably focus on server-side web development and scientific data pipelines wrapping libraries like TensorFlow, PyTorch, and NumPy.

[18:56](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1136s) The Mobile App Conundrum: Battery, Memory, and OS Mismatches

Mobile app development remains a much more frustrating, unresolved topic for Python. Guido admits that while it would be fantastic to write native mobile apps in Python, the core implementation has three decades of architectural baggage:

> “CPython is sort of has 30 years of history where it's being built for for an environment that is a workstation, a desktop or a server and sort of it it it expects that kind of environment and the users also expect that kind of environment.”

When developers cross-compile CPython for iOS or Android tablets, it quickly clashes with mobile hardware constraints:

- **Resource & Battery Drain:** CPython is comparatively bloated and heavy for mobile operating systems, rapidly depleting device battery and exhausting memory. - **Educational Drawbacks:** In developing countries, budget phones or tablets paired with external keyboards often serve as the sole computational device for students learning to code. Running full-fledged CPython on these underpowered devices is far from seamless. - **OS Kernel Quirks:** Android presents itself as a Linux environment, yet it prohibits calling `fork()`. As a result, standard libraries like `multiprocessing`—which assume any Linux platform can safely fork child processes—break down completely unless custom mobile process-spawning workarounds are engineered.

Because retrofitting desktop CPython into mobile sandboxes is so clumsy, Guido speculates that the ideal path forward for mobile Python might be adapting a lighter runtime like MicroPython, or creating an intermediate "medium Python"—an engine designed to utilize a proper operating system and moderate memory pools without demanding the full desktop legacy of CPython.

[22:29](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1349s) Perspective on Newer Languages: Rust, Go, Julia, and TypeScript

Guido shares his general enthusiasm for language design, noting that while he loves reading language tutorials, he rarely builds major projects in new languages because reaching for Python is always faster. Examining modern programming languages, he highlights their varying strengths:

- **Rust:** Guido has not written Rust himself, but he praises its architectural guarantees after talking with developers building production software in it. Rust fundamentally improves upon C++ by eliminating compiler-check bypasses and cleanly solving memory management without garbage collection. While engineers building complex systems occasionally have to drop into `unsafe` code, Rust makes verification far more reliable than C++ ever could. - **Go:** Among modern systems languages, Guido considers Go uniquely approachable: “Of all the new languages, Go is probably the most Pythonic or at least the sort of the general purpose new languages.” - **Julia:** While Julia appears superficially similar to Python, syntax shifts create severe friction. Guido jokes: “when you realize oh but all the indexing is one-based and ranges are inclusive instead of exclusive you think ah nobody should ever try to code in Julia and in Python on the same day.” Julia serves its specific numerical computing niche brilliantly through aggressive compiler optimizations that Python will likely never match, but Guido doubts anyone will ever write a general-purpose production web server in Julia—joking that someone on Hacker News will probably post a counterexample within five minutes of his talk. - **TypeScript:** Turning to TypeScript, Guido acknowledges it as an outstanding language. He connects it to Python’s work over the previous six or seven years adding optional static typing (gradual typing). While Python's type-hinting initiative was not originally inspired by TypeScript—Guido was not even aware of TypeScript when Python began formulating its type system—TypeScript effectively rode the massive JavaScript wave and benefited from the language design leadership of Anders Hejlsberg.

[26:49](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1609s) Cross-Pollination Between TypeScript and Python

Guido discusses the mutual influence between Python and TypeScript, speaking warmly of his Microsoft colleague Anders Hejlsberg. Guido notes that TypeScript solved several design challenges earlier than Python, and Python’s typing Special Interest Group (typing SIG) frequently looks to TypeScript when considering extensions to Python's typing syntax and semantics. When Python developers evaluate adding a new typing feature, they often find that TypeScript was initially missing that exact capability, added it following strong developer demand, and saw great success with it.

Because JavaScript and Python share a fundamental structural simplicity, their respective type systems have much more in common with one another than Python's type system has with static, compiled languages like C++, Rust, or Java. Guido notes that the learning goes both ways: through his discussions with Anders Hejlsberg, TypeScript occasionally borrows concepts from Python, mirroring the historical ways in which JavaScript itself has adapted ideas from Python over time.

- The typing SIG regularly debates type-system extensions by reviewing TypeScript's real-world outcomes. - TypeScript and Python type systems align much more closely with each other than with C++, Rust, or Java.

[28:20](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1700s) Teaching Python First in University Curricula

Asked whether universities should teach Python before moving to lower-level languages like C++, Guido responds emphatically in favor. He points out that this shift is already a done deal across computer science education. He cites an article published in *Communications of the ACM* that surveyed top academic institutions and documented a widespread transition to Python as the standard introductory language. Even MIT, which spent decades teaching its foundational curriculum around a famous Scheme-based course, now introduces the vast majority of its students to coding via a robotics course taught in Python.

Guido delivers his view on early computer science education without hesitation:

> “There's no doubt about that that there there a few years ago there was an interesting article published in uh communications of the ACM about sort of surveys of uh major universities that had all switched to uh Python as their sort of intro to coding uh classes.”

[29:21](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1761s) The Hard Lessons of the Python 2 to Python 3 Migration

When reflecting on the transition from Python 2 to Python 3, Guido identifies the migration friction as a fundamental miscalculation stemming from Python's runaway success. The core developers assumed the transition would be straightforward because they were deeply fluent in language internals. Guido candidly admits, “In our own experience, we we thought that that transition would be relatively simple because we were all like the Einsteins of Python programming, of course, and we could translate uh code from Python 2 to Python 3 in our sleep.” They wrote code that was already clean and easy to port, mistakenly believing the entire community consisted of power users just like them who would eagerly adopt the cleaner architecture of Python 3.

```mermaid flowchart TD accTitle: Python 2 to Python 3 Transition Misalignment accDescr: Diagram illustrating the gap between core developer expectations and real-world business maintenance realities. subgraph CoreDevs["Core Developer Assumptions"] A["Core Devs: 'Python Einsteins'"] --> B["Idiomatic Python 2 code"] B --> C["Translates effortlessly to Python 3"] C --> D["Belief: Community upgrades immediately"] end

subgraph RealWorld["Enterprise Realities"] E["Domain Specialists & Non-Programmers"] --> F["Custom automation & business apps"] F --> G["Runs indefinitely without supervision like Excel"] G --> H["Breaks instantly upon Python binary upgrades"] end

D -.->|"Disconnect"| H ```

In reality, Python had quietly become essential to massive cohorts of non-traditional programmers and commercial enterprises. Businesses relied on custom applications built to solve internal needs that were handed off and left running unsupervised on servers for years—analogous to legacy Excel spreadsheets that persist across corporate reorganizations. While these applications survived company shakeups, they broke when updating the underlying Python runtime. Reflecting on this misjudgment, Guido explains that future major updates will handle compatibility completely differently:

> “So certainly if there ever is going to be a Python 4, uh well if you if you've seen my Twitter stream, if you look me up on Twitter, I pin a tweet that is like a twoline FAQ about Python 4, which is basically the transition to Python 4 will not be anything like the transition to Python 3 was because we've learned our lesson.”

[32:39](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1959s) Package Management, Dependency Hell, and Virtual Environments

Addressing modern packaging tooling such as pip 21 and its newer dependency resolver, Guido clarifies that package resolution exists outside Python the language itself. Pip is only one of several package managers, and no resolver is immune to conflict. He stresses that developers should always isolate every project using dedicated virtual environments to shield themselves from version conflicts, formerly known as "DLL hell."

However, Guido cautions that dependency hell cannot be completely eliminated, especially in fields like machine learning and data science. In those ecosystems, applications stack immense hierarchies of third-party libraries. Individual open-source communities often maintain conflicting version requirements for lower-level dependencies, making runtime errors and dependency collisions inevitable whenever an engineer attempts to import heavy stacks like pandas, PyTorch, and TensorFlow into a single project.

- Virtual environments remain the best defense against version hell. - Stacking complex ML frameworks (pandas, PyTorch, TensorFlow) frequently surfaces unresolvable transitive dependency mismatches.

[34:43](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2083s) Why Python Is Named Python: Monty Python and Pop Culture Defiance

Asked about the origin of the name "Python," Guido shares three separate influences that shaped his decision in 1989. First and foremost, he was a massive fan of *Monty Python's Flying Circus*, which he discovered when it was broadcast on Dutch television in the early 1970s; the show captivated him and helped him learn English. Because of this connection, he spent years resisting snake imagery in Python logos. When designing an icon for an early Mac OS 8 port, his limited graphic skills and a strict 16×16 pixel canvas led him to draw a Monty Python-inspired 16-ton weight instead of a reptile.

Second, the naming fit an internal tradition at CWI during the development of the Amoeba distributed operating system, where a tiny team of three or four engineers named utilities and subsystems after popular television shows. Third, Guido felt a rebellious urge against the dominant convention in computer science of naming languages after historical figures in science, mathematics, and philosophy—such as Pascal, Ada, and Eiffel:

> “And I sort of I was in a rebellious mood and I thought I don't want it to sort of be named after a Greek god or uh an important figure from the Renaissance and I didn't know those names that well either although I had learned a few of them in school and so sort of choosing references to pop culture was was my way of sort of going against that.”

[37:46](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2266s) Quantum Computing and MicroPython's Memory Constraints

When an attendee asks about the prospects of Python in quantum computing, Guido offers a skeptical, practical appraisal of hardware constraints. He jokes that even MicroPython, an ultra-compact implementation designed for microcontrollers, requires significantly more working memory than real quantum hardware currently provides. While Microsoft and other vendors distribute quantum simulation packages implemented in Python, Guido emphasizes that using Python on a classical computer to simulate quantum mechanics is not the same thing as running native Python code on quantum hardware.

[38:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2317s) Ending Retirement and Joining Microsoft

Guido details the events that led him out of retirement and into Microsoft’s Developer Division. After retiring from Dropbox in late 2019, his plans to spend his time traveling with his wife, cycling, and socializing with friends were abruptly derailed by the COVID-19 pandemic. Feeling trapped at home and bored, he returned to writing Python code, but quickly found himself frustrated by circular, gridlocked design debates surrounding a language enhancement he was trying to advance.

Seeking a structured outlet and a new challenge, he decided to re-enter the workforce on a part-time basis. After inquiring around the industry, he secured an interview process at Microsoft that proved surprisingly senior. Guido recalls with amusement that an administrative mix-up must have occurred, as he suddenly found himself placed into high-level interviews with corporate vice presidents—including an interview with Microsoft's Chief Technology Officer, Kevin Scott, whose executive title Guido had momentarily forgotten while they were happily chatting about technology.

[40:35](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2435s) Joining Microsoft and Seeking a Technical Focus

Guido van Rossum discusses his employment at Microsoft, expressing amusement that they decided to bring him on board given that he is an individual contributor rather than an executive or director. For the first three to four months, he spent his time simply orienting himself within the company. He took meetings with people across Microsoft who were doing interesting things with Python, ranging from machine learning to Azure Notebooks and Excel.

Despite the lack of managerial pressure telling him to start writing code, Guido realized he did not return to the workforce just to spend three days a week sitting in meetings all day long. Having been granted complete freedom regarding his focus, he set out to find a concrete project where he could get his hands dirty coding. He initially evaluated machine learning and notebooks, acknowledging the massive symbiotic success between Python and ML:

> “That field has become more successful because of Python and Python has become more popular because that field has taken off.”

However, Guido recognized that machine learning was outside his personal wheelhouse. While he knows exactly how to build web servers, web clients, database systems, or user interfaces in Python, he felt entirely out of depth when trying to write ML frameworks or simple ML applications. Despite consulting smart ML researchers across Microsoft and attempting to follow tutorials, he concluded that trying to contribute meaningfully there would be a misstep:

> “And I realized it would be a mistake to try and sort of contribute to that field because it takes like you got to spend three or four years on a PhD in the field and then maybe you can contribute something useful.”

[43:36](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2616s) The Microsoft Faster CPython Initiative and the Ecosystem

Stepping away from machine learning, Guido chose to return to his roots by building a team focused directly on speeding up Python. At the Python Language Summit, he publicly announced an initiative alongside fellow core developers Eric Snow and Mark Shannon—a longtime expert in faster Python virtual machines. Employed as Microsoft staff and contractors, the team is working directly on CPython performance. While they landed a few minor contributions into Python 3.10 right before its beta release, the team now views the coming year as their runway to meaningfully move the needle on performance for Python 3.11.

Guido notes that this performance push aligns with renewed interest across the tech industry: - **Facebook / Meta:** An internal team recently open-sourced their performance work focused primarily on Python 3.8. - **Piston:** Built by former Dropbox engineers, Piston v1 originated as an open-source Dropbox project, while Piston v2 was recently open-sourced, targeting Python 3.8. - **Pyjion:** Maintained by Microsoft Developer Advocate Anthony Shaw after publishing his book on CPython internals, Pyjion implements a JIT compiler for Python based on the.NET framework.

```mermaid flowchart TD accTitle: Python Performance Initiatives Overview accDescr: Diagram showing Microsoft's CPython team and other notable industry projects aimed at speeding up Python.

subgraph MSFT["Microsoft CPython Team"] GVR["Guido van Rossum"] MS["Mark Shannon"] ES["Eric Snow"] Target["Target: Python 3.11"] GVR --- MS --- ES --> Target end

subgraph Industry["Industry Projects"] FB["Facebook Team (Python 3.8)"] Piston["Piston v2 (ex-Dropbox, Python 3.8)"] Pyjion["Pyjion (Anthony Shaw /.NET JIT)"] end ```

[47:03](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2823s) Why Python 4 Is Treated as an In-House Joke

When asked whether the community should expect a "Python 4," Guido explains that the core development team treats the phrase as an internal joke born out of the painful migration from Python 2 to Python 3:

> “And so it's it's almost taboo to talk about a Python 4 in a serious sense. And most of the time, uh, when people say, 'Oh, we'll do that in Python 4,' everyone is in on the joke. And, uh, it's just a funny way of saying that will never happen.”

Python has shifted to a strict annual release cadence. Following Python 3.9, version 3.10 entered beta with a scheduled final release for October. Releases will proceed predictably with 3.11, 3.12, and onward. Guido quips that they can easily keep incrementing up to 3.99 before having to add another digit, noting that moving from one digit to two (3.9 to 3.10) was far less traumatic than the jump between 2 and 3. Speed improvements will roll out incrementally across these releases rather than through a single disruptive milestone.

[49:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2977s) Potential Breaking Changes: C APIs, Reference Counting, and the GIL

Guido reflects on what severe technical requirements could theoretically force the core team to increment the major version to 4.0. The primary trigger would not be surface language syntax, but breaking backwards compatibility for C extensions:

- **Memory Management & Garbage Collection:** Python currently relies on reference counting, and the internal machinery is directly exposed to third-party C extensions. This tight coupling makes it exceptionally difficult to refactor interpreter memory management. - **The Global Interpreter Lock (GIL):** Larry Hastings' prior "Gilectomy" project attempted to excise the lock entirely, though Hastings appears to have moved on to other hobbies after encountering steep headwinds. - **Sub-Interpreters as an Alternative:** Guido and Eric Snow favor a different architectural path: per-interpreter GILs via multiple sub-interpreters sharing a single operating system process without shared mutable state. Guido notes this concurrency model is cleaner and more effective for multi-core scaling than the shared-everything threading typical of Java or C++.

```mermaid flowchart LR accTitle: Sub-interpreter Concurrency Model accDescr: Diagram contrasting shared-everything threading with isolated sub-interpreters inside a single process.

subgraph Process["Single OS Process"] subgraph Sub1["Sub-Interpreter 1"] GIL1["Own GIL"] State1["Isolated Memory"] end subgraph Sub2["Sub-Interpreter 2"] GIL2["Own GIL"] State2["Isolated Memory"] end Switch["Fast Context Switching / Message Passing"] Sub1 <--> Switch <--> Sub2 end ```

Because sub-interpreters can avoid broad breakage, Guido believes major C API overhauls can be carried out gradually with deprecation cycles to protect critical third-party libraries such as NumPy, PyTorch, TensorFlow, and pandas. As a result, a 4.0 release remains undesirable:

> “I'm I'm not thrilled about the idea of of Python 4 and nobody in the core dev team really is. So probably there never will be a 4.0 and will just keep numbering uh until 3.33 at least.”

[53:51](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=3231s) Transition to Personal Interests

As the session nears its end, the host pivots from technical and organizational roadmaps to human-interest questions, asking Guido about what hobbies he pursues outside the Python programming ecosystem. Guido begins answering by noting that he enjoys reading.

[54:24](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=3264s) Personal Life, Family, and Outdoor Hobbies

Reflecting on his personal life away from programming, Guido van Rossum describes himself with characteristic modesty, declaring: “I'm a very boring person.” He shares that he prioritizes his family, though his approach to privacy has changed significantly over time. When his son was born nineteen years earlier, he casually sent out a birth announcement to the entire Python mailing list. Looking back, he notes that he would never do that today, as his family prefers to keep their lives much more private. He enjoys reading science fiction and fantasy, as well as watching shows in those genres, often spending time watching them with his nineteen-year-old son, Orla. Guido admits with a laugh that Orla aspires to be a bass player in a metal band, observing that it is about as far removed from his parents' tech-oriented careers as possible—a classic adolescent path that Guido fully embraces and supports.

Beyond his indoor interests, Guido enjoys spending time outdoors hiking and biking, emphasizing that he keeps his physical activities relaxed rather than extreme. Contrasting himself with a friend who occasionally bicycles all the way across the United States, Guido insists that kind of feat is entirely beyond him. Instead, his ideal outing involves taking a casual two-hour ride to refresh himself mentally before loading his bicycle onto the back of the car and heading home. The host remarks on how pleasant that lifestyle sounds in California's sunny climate, prompting Guido to agree wholeheartedly that he and his family love living there and are very happy.

- When his son was born 19 years ago, Guido shared the news directly via the Python mailing list, a public move he would not repeat now. - Guido's son, Orla, wants to pursue a career as a bass player in a metal band, representing a sharp contrast to his parents' professional backgrounds. - Unlike friends who participate in extreme cross-country endurance cycling, Guido prefers low-intensity two-hour bike rides that boost his mood.

[56:10](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=3370s) Session Conclusion and Final Farewells

As the live session hits its scheduled time limit, the host draws the interview to a close, expressing personal gratitude for the opportunity to speak with Guido and learn more about both the history of Python and his personal background. Guido responds warmly, offering praise to the host: “You've been a very good interviewer.” The host extends thanks to the audience watching the stream, expressing excitement to stay in touch and track Guido's ongoing Python-related engineering initiatives at Microsoft. After brief closing remarks and mutual expressions of appreciation, Guido and the host say their goodbyes to the viewers, bringing the broadcast to an end.

## Notable quotes > [22:29](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1349s) Of all the new languages, Go is probably the most Pythonic — Guido van Rossum

> [09:26](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=566s) it's my language, not theirs; you can design your own language. — Guido van Rossum

## Mentioned Guido van Rossum, Francesca, Dion, Tim Peters, Barry Warsaw, Anders Hejlsberg, Kevin Scott, Eric Snow, Mark Shannon, Anthony Shaw, Larry Hastings, Orla van Rossum, Python, ABC, Amoeba, C, C++, JavaScript, WebAssembly, Brython, Rust, Go, Julia, TypeScript, Scheme, Pascal, Ada, Eiffel, MicroPython, pip, pandas, PyTorch, TensorFlow, NumPy, SciPy, Piston, Pyjion, Centrum Wiskunde & Informatica (CWI), University of Amsterdam, Google, Dropbox, Microsoft, Microsoft Reactor, Meta, Facebook, MIT, Monty Python's Flying Circus, Communications of the ACM, Usenet, Hacker News

## Video description Guido van Rossum is a Dutch programmer best known as the creator of the Python programming language, for which he was the "Benevolent dictator for life" (BDFL) . Come join us for an open Q/A "Ask me Anything" to get to know how PyCon was born and Guido's amazing journey

For more on Python, click here: https://developer.microsoft.com/reactor/topic/2/?wt.mc_id=youtube_0_video_reactor

For more community and learning events from Microsoft Reactor, click here: https://developer.microsoft.com/reactor//?wt.mc_id=youtube_0_video_reactor

[eventID:13426]

[Source](https://www.youtube.com/watch?v=aYbNh3NS7jA)

中文简报

对话Python之父Guido van Rossum Guido van Rossum回顾了Python的早期历史,从其在CWI作为C语言和Shell脚本替代品的起源,到出人意料地崛起为人工智能和数据科学的首选语言。他解释了关键的语言设计决策,包括函数式编程特性、受TypeScript影响的类型系统,以及从Python 2向Python 3过渡中汲取的惨痛教训。Guido还探讨了Web和移动平台上现代运行时所面临的挑战,阐明了为何不太可能出现颠覆性的“Python 4”,并详细介绍了他在微软与Mark Shannon和Eric Snow共同开展的新工作——从Python 3.11开始提升CPython的运行速度。 Guido van Rossum以杰出工程师身份加入微软,与Mark Shannon和Eric Snow共同领导一支专属性能团队,目标是从Python 3.11开始带来大幅度的速度提升。 (43:36) 在经历了耗时多年的Python 2至3的痛苦迁移后,Python核心团队已基本放弃推出颠覆性“Python 4.0”版本的想法,转而致力于每年发布一个版本的节奏(3.10、3.11等)。 (47:03) 核心开发工作并非试图在整个解释器中彻底移除GIL,而是专注于在单个操作系统进程内实现拥有独立GIL的隔离子解释器。 (49:37) 由于30年来累积的桌面和服务器架构包袱、电池电量限制以及同步执行假设,浏览器和移动环境在结构上仍然极不适合运行标准CPython。 (18:56)

Detailed notes — zh

## Background 该视频由 Microsoft Reactor 频道于 2021 年 5 月 14 日发布在 YouTube 平台。内容为 Python 语言创始人 Guido van Rossum 的线上公开问答直播(AMA),由 Microsoft Reactor 团队主持,围绕 Python 的诞生历史、PyCon 的起源以及 Guido 的个人技术与职业生涯展开交流。 ## TL;DR 在本次问答中,Guido van Rossum 回顾了在 CWI 开发 Amoeba 期间利用圣诞假期创造 Python 的始末,并探讨了函数式特性、类型系统演进以及 Python 在 AI 与 Web/移动端生态中的角色。他深入剖析了从 Python 2 迁移至 Python 3 的惨痛教训,阐明核心团队绝不会轻率推出 Python 4,而是坚持渐进式兼容升级。此外,Guido 分享了自己因退休无聊加入微软后的工作规划,透露正组建专项团队重点提速 CPython(目标在 Python 3.11 取得显著突破),最后还轻松聊到了家庭生活、儿子对重金属音乐的热爱以及自己的加州骑行日常。 ## Atmosphere & style 整场对话气氛轻松、真诚且充满技术极客特有的自嘲与幽默。Guido 毫不避讳早期的设计得失与社区争议,面对 Python 2 到 3 的迁移失误坦率认错,讲述入职微软误撞 CTO 面试以及和人争论 Lambda 的趣事时更是妙趣横生。主持人节奏把控亲切自然,与观众共同营造出一种与技术泰斗围炉夜话般温暖而平实的访谈氛围。 ## Bulletin - [43:36](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2616s) Guido van Rossum 宣布重返职场加入微软,并与 Mark Shannon 及 Eric Snow 组建团队,全职向官方 CPython 贡献性能优化,重点目标是在 Python 3.11 中实现大幅提速。 - [47:32](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2852s) 针对社区关于 Python 4 的传闻,Guido 明确表示团队内部仅将其视作玩笑,核心团队深刻吸取了 Python 2 迁移至 3 的惨痛教训,未来将长期维持在 3.x 系列(可能一路延续至 3.33 或更高),绝不轻易推出破坏兼容性的主版本。 - [47:32](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2852s) 对于全局解释器锁(GIL)与多核性能问题,团队正优先推进 Eric Snow 主导的“多子解释器(Multiple Sub-interpreters)”方案,通过同进程独立 GIL 实现高效隔离并行,避免直接破坏 C 扩展 API 兼容性。 - [26:49](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1609s) Python 类型系统(Typing SIG)正在深度借鉴 TypeScript 的渐进式类型经验,两者由于底层同属动态语言,在类型语法演进上呈现高度相似性并保持双向借鉴。 ## Key takeaways - [01:28](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=88s) Python 最初诞生于 Amoeba 操作系统项目期间,Guido 为摆脱纯 C 语言开发系统工具效率低下的痛点,借鉴失败项目 ABC 语言的设计并在圣诞假期启动了这一原型项目。 - [07:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=457s) 1990 年 Python 创立之初正值 AI 寒冬,Guido 从未预料到 Python 会成为机器学习的核心语言,其最初设计目标只是替代 C、C++ 和 Shell 的通用开发工具。 - [09:26](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=566s) Python 早期通过社区贡献引入了 Lambda、Map、Filter 与 Reduce,其中 Reduce 因极难阅读在 Python 3 中被移出内置作用域,而列表与集合推导式则凭借贴合数学集合论的优雅表达大获成功。 - [13:05](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=785s) Guido 强调 Python 在 Web 领域应专注于强项(后端与科学数据处理),浏览器端已被 JavaScript 牢牢统治,即使借助 WebAssembly(WASM)或转译方案,也因体积庞大和缺乏阻塞式 I/O 支持而难以在前端替代 JS。 - [18:56](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1136s) CPython 因过去 30 年面向桌面与服务器的设计假设,在移动端存在耗电快、内存大以及缺乏标准 Linux fork 支持等阻碍,未来移动开发可能需要基于 MicroPython 衍生出一种“中型 Python”。 - [22:29](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1349s) Guido 评价 Rust 近乎完美地解决了 C++ 的内存分配与编译检查难题;认为 Go 语法极具 Python 风格;而 Julia 的 1-based 索引与闭区间切片则与 Python 习惯严重冲突。 - [26:49](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1609s) Python 核心团队设立 Typing SIG 密切跟踪 TypeScript 的演进,两者在为动态脚本语言引入渐进式静态类型方面相互启发与借鉴。 - [28:20](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1700s) 高校编程教育应首选 Python 作为入门语言,北美顶尖高校早已完成从经典 Scheme/SICP 或 C++ 转向 Python 的教育变革。 - [29:21](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1761s) 从 Python 2 到 3 的迁移是一次重大失误,核心团队以自身极客水平误判了真实世界中大量非专业程序员维护的脆弱业务生态,Guido 承诺绝不重蹈覆辙。 - [32:39](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1959s) 依赖冲突防范的黄金法则为独立应用配置独立的虚拟环境,但在拼装大型机器学习框架时,各开源库版本步调不一仍会导致现代“版本地狱”。 - [34:43](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2083s) 语言命名源自 Guido 热爱的英国超现实幽默喜剧《蒙提·派森的飞行马戏团》,旨在用大众流行文化幽默反叛传统以历史科学家命名的正统学术范式。 - [37:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2257s) 由于量子比特与硬件内存极度匮乏,直接在量子计算机上运行 Python(包括 MicroPython)是不切实际的,目前相关项目仅是宿主机上的模拟器或 SDK。 - [38:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2317s) Guido 因退休生活无聊及疫情限制而选择在微软再就业,在探索机器学习领域后认定该方向需数年科研门槛,最终决定重回底层核心加速老本行。 - [43:36](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2616s) 微软提速专项团队计划在 Python 3.11 中实现重大运行速度跃升,与 Facebook 优化版、Piston 2.0 及 Pyjion 共同掀起业界对 Python 性能的关注高潮。 - [47:32](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2852s) 为保障 NumPy、PyTorch 等核心科学库的平稳运行,核心团队坚决避免破坏性 C API 改造,通过渐进式演进与多子解释器替代粗暴移除 GIL,避免倒逼 Python 4.0 的出现。 ## Detailed walkthrough ### [00:00](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=0s) 活动开场与 Guido van Rossum 简介 活动由 Microsoft Reactor 的 Dion 主持开场,他首先提醒与会者通过活动 ID(13426)在指定页面完成签到,并告知大家可在实时聊天区提问,团队会尽力答疑;随后他将主持棒交给了 Francesca。Francesca 隆重介绍了本场嘉宾——Python 编程语言之父 Guido van Rossum。Guido 在荷兰长大,毕业于阿姆斯特丹大学,获数学与计算机科学硕士学位。毕业后他创造了 Python,之后移居美国,先后于 2005 年加入 Google、2013 年加入 Dropbox,目前是微软的杰出工程师(Distinguished Engineer)。 - 活动签到链接为 `aka.msreactorcheckin`,活动 ID 为 `13426`。 - 本场活动录制并归档发布于 Microsoft Reactor 官方 YouTube 频道。 ### [01:28](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=88s) Python 的诞生:从 ABC 的遗憾到 Amoeba 上的摸鱼创新 Francesca 提出了第一个宏观背景问题:Python 最初作为业余项目(side project)诞生的始末是什么?Guido 幽默地反问“你留了多少时间?那段故事我能讲上很久”,随后回顾了这段技术往事。大学毕业后,Guido 进入了荷兰的国家数学与计算机科学研究中心(CWI)。他的首个项目耗时三年半,负责实现一门名为 ABC 的编程语言。ABC 设计精妙优雅,让 Guido 学到了很多,但商业与推广上却“彻底失败(totally flopped)”——缺乏分发渠道和推广途径导致几乎找不到任何用户,项目最终被腰斩。 随后 Guido 转入一个名为 Amoeba 的分布式操作系统项目。Amoeba 是一个高度偏向学术研究的系统,微内核由几个博士生开发,Guido 则作为全职程序员负责补充上层应用工具,如备份工具、邮件阅读器等。然而,当时系统上唯一的编译器是 C 语言编译器,编写任何工具只能要么硬着头皮纯用 C 从零手写,要么用 Shell 脚本东拼西凑。Shell 脚本能力有限且难以编写复杂工具,而用 C 语言开发极其缓慢低效。当时项目负责人正巧去往硅谷休学术年假(sabbatical),程序员小团队基本处于无人监管的放养状态。再加上 Guido 自嘲“那时候完全没有社交生活”,于是在圣诞假期期间,他萌生了一个念头:花大约 3 个月时间,借鉴 ABC 的设计思想,融合自己的新想法并改进 ABC 的不足,打造一门全新的编程语言。 ```mermaid flowchart TD accTitle: Python origin history accDescr: Python from ABC failure to Amoeba project utilities and open-source release on Usenet subgraph CWI_History["CWI 研究院早期背景"] ABC["ABC 语言开发 (3.5年)<br/>设计优美但缺乏渠道推广失败"] Amoeba["Amoeba 分布式操作系统<br/>微内核由博士生维护"] end subgraph The_Bottleneck["开发痛点"] Tools["为 Amoeba 编写实用工具"] Choice{"开发工具选择困境"} OptC["C 语言: 开发极慢、生产力低下"] OptShell["Shell: 难以胜任复杂逻辑"] end subgraph Python_Birth["Python 的诞生与迭代"] Holiday["圣诞假期发起项目<br/>预计 3 个月完成原型以提效"] Demo["3 个月后交付可演示版本"] Usenet["经 Usenet 邮件列表向全球开源发布"] end ABC -.->|"借鉴优秀设计并修正缺陷"| Holiday Amoeba --> Tools Tools --> Choice Choice --> OptC Choice --> OptShell OptC --> Holiday Holiday --> Demo Demo -->|"团队实际使用并引入实习生验证"| Usenet ``` 按照他当时对生产力的“如意算盘”,虽然开发这门语言需要 3 个月,但之后全团队编写 Amoeba 工具的效率都会大幅跃升,半年左右就能把工时补齐,长期看总产出将稳赚不赔。不过 Guido 坦承,关于生产力的说辞很大程度上只是个借口:“这只是找个借口去做一些我认为比硬敲实用工具和批量做备份程序更有趣的事情。”三个月后他确实交出了可运行的 Python Demo,并在团队内推广使用;第一年夏天他们甚至让一名实习生用 Python 做了些不可思议的项目。一年多后,Guido 通过 Usenet(主要集中在美国并分支到欧洲及全球的网络新闻组)正式开源了 Python。Python 迅速引发轰动,Guido 的邮箱立刻被粉丝来信、Bug 报告、功能建议以及各类补丁塞满。 - ABC 语言虽然技术架构优雅,但由于当时完全没有成熟的推广分发渠道而告终。 - Amoeba 作为微内核系统,当时严重缺乏像样备份系统和邮件阅读器等基础应用,全靠 C 语言开发拖慢了整体进度。 - Guido 强调开源之后获得的社群反馈极大地满足了开发者心理并完善了软件本身:“所有那些能满足你虚荣心、并能让这个东西变得更好的好东西全来了。” ### [07:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=457s) Python 在机器学习与 AI 领域的意料之外 Francesca 提到如今众多深度学习和机器学习框架都以 Python 为核心,并在 Twitter 上收集了相关提问:Guido 在 1990 年创立该语言时,是否预料到它会在现代人工智能(AI)和机器学习领域扮演如此关键的角色? Guido 毫不犹豫地给出了彻底否定的答案:“天哪,完全没有,我当时根本一无所知。”他解释道,1990 年正值学术界和工业界所谓的“AI 寒冬(AI winter)”。在 1960 和 1970 年代,早期人工智能研究开出了海量空头支票,最终几乎全部落空,导致当时 AI 成为了一个严重不受人待见且被轻视的领域。主流观点普遍悲观地认为该领域已经死亡,那些科幻小说里的场景在接下来的一百年内都不可能实现。Guido 明确指出:“Python 当时的真正目标,只是成为专业程序员和严谨软件开发者工具箱里的另一件工具,用来替代他们平时可能不得不用 C、C++ 或者 Shell 脚本编写的代码。” ### [09:26](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=566s) 函数式编程特性的演进:Lambda、Map、Filter 与 Reduce 的命运 Francesca 接着抛出了一位观众的提问:观众读过 Guido 曾经撰写的关于 Python 函数式特性起源的博客文章,想知道在 2021 年的当下,Guido 对这些特性的最新看法是什么。 Guido 回忆道,那篇博文时间久远,具体细节记不太清,但核心事实是:在 1990 年代初期(也可能是中期),有人直接给他发来了一份包含 `lambda`、`map`、`filter` 和 `reduce` 的完整功能实现。当时的 Guido 对学术界的函数式编程仅停留在听过讲座、觉得很神奇的程度,自己从未深入理解,也未曾上手使用过任何函数式语言。在 Python 开源初期,他的合并准则是:“抓抓脑袋想个几秒钟,觉得挺顺眼的就说:好,加进去发个新版吧。” 谈到各个特性的具体表现时,Guido 做出了细致的评价与复盘: - **Lambda 表达式**:尽管为了语法一致性被特意简化(只允许单行表达式),但依然取得了巨大的成功。然而它一直饱受误解。Guido 笑着回忆称,自己甚至曾因为 Lambda 和别人差点在酒吧大打出手:“我记得曾经差点和一个人当场吵起来,对方坚信只有 lambda 才拥有闭包的语义,而普通的嵌套函数则没有。”最终因为两人都喝了不少啤酒,争吵才和平收场。 - **Map 与 Filter**:它们在日常处理中表现得非常实用,得到了较好的保留。 - **Reduce**:Guido 直言自己一直无法直观理解使用 `reduce` 写出来的代码逻辑,无论是在 Python 还是其他语言中都极难阅读。因此在 Python 3 中,他坚决将其从内置函数(built-ins)中剔除(降格到 `functools` 模块)。面对社区至今仍存的微词,Guido 回应得十分洒脱:“直到现在 Hacker News 上都还有一帮人因为这事对我怀恨在心。但无所谓,这是我的语言,又不是他们的;他们大可以去设计他们自己的语言。” - **推导式(Comprehensions)的引入**:在函数式特性逐步明确边界的同时,Tim Peters 向 Guido 建议了列表推导式的概念。这恰好击中了 Guido 的数学底色——他在中学或大学数学课上最熟悉的就是集合构建标记法(形如 $\{x \mid x > 5\}$)。随后推导式在 Python 中大放异彩,从列表推导式、生成器表达式逐步拓展到字典推导式与集合推导式(Guido 特别感谢了 Barry Warsaw 在扩展字典和集合推导式上的贡献)。 - 内置函数 `reduce` 被移出全局命名空间,转移到了标准库的 `functools` 模块下。 - 推导式语法凭借其与传统数学集合论表示法高度贴合的直观性,成为了 Pythonic 风格中处理数据过滤与映射的核心方式。 ### [13:05](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=785s) Python 在 Web 前端与后端的角色与局限 针对 Python 在 Web 开发与移动应用开发领域前景的提问,Guido van Rossum 明确指出这是两个截然不同的命题。谈到 Web 开发,他将技术架构清晰地划分为前端与后端。在后端服务器领域,Python 表现极为强劲且普及度很高。Guido 回顾了自己的职业经历,提到在 Google 工作时曾参与过基于 Python 的项目(尽管 Google 大部分基础设施并不依赖 Python),而在 Dropbox 工作期间,整个 Dropbox 服务器端系统完全是用 Python 构建的。 ```mermaid flowchart TD accTitle: Web开发分工与浏览器语言限制 accDescr: 展示服务端Python与浏览器端JavaScript的分野及WebAssembly现状 subgraph Server["后端 / 服务器端"] PythonBackend["Python 后端\n(Dropbox、部分 Google 项目)"] end subgraph Browser["前端 / 浏览器端"] JS["JavaScript (唯一原生运行语言)"] Transpile["代码转译 / JS 解释器\n(如 Brython 等项目)"] Wasm["WebAssembly\n(CPython + 科学计算栈打包)"] JS -->|执行环境限制| Limits["无阻塞 I/O\n无法直接读取本地文件\n资源包体积庞大"] Transpile -.-> JS Wasm -.-> JS end Server -->|"API / 数据传输"| Browser ``` 然而,浏览器端则完全属于 JavaScript 的天下。Guido 指出,任何代码除非被转译为 JavaScript,否则根本无法在浏览器中直接执行。他回忆起历史上的各种尝试,例如 Java Applet 时代,以及大约在 1995 或 1996 年的一项极客式黑客实验:当时某种浏览器可以通过动态加载扩展来运行任意语言,但其功能受到极其严格的限制,外部语言只能在屏幕上一块固定大小的方框内进行绘制。尽管当年成功让 Python 在该机制下跑了起来,但该方案最终以失败告终。因为普通用户为了访问一个只想停留 5 秒钟的网页,根本不可能愿意去经历繁琐且极易出错的扩展下载与安装过程;Java 类似尝试的溃败也是同理。 谈及现代在浏览器运行 Python 的方案,Guido 提到了将代码转译为 JavaScript 或在 JavaScript 中实现解释器的项目(如 Brython)。虽然这在理论上可以让访问者无感知运行,且转译方式偶尔有效,但它在工程上面临巨大阻力:缺乏浏览器厂商的支持、Python 社区鲜有人关注、且浏览器独特的 I/O 原语导致其无法支持阻塞式 I/O(例如传统的打开文件并读取)。对于近期利用实验性 GCC 后端将整个 CPython 及科学数据栈编译为 WebAssembly(WASM)的“壮举”,Guido 虽然赞叹 WebAssembly 本身令人惊艳,但指出这种产物下载包体积庞大,在性能与功能上依然远不及用户直接在本地笔记本(Jupyter Notebook)或通过带界面的远程服务器上运行。Guido 总结道: > “Python should focus on the targets, the application areas where it's good, and for the web that's the back end, and for scientific data processing that's pretty much everything as long as you can wrap something like TensorFlow or PyTorch or NumPy-based things in general.”(Guido van Rossum) - **后端成功案例**:Dropbox 的全套服务器代码基于 Python 开发;Google 内部也有部分项目采用。 - **历史浏览器集成尝试**:1995/1996 年曾通过浏览器插件实现限定尺寸矩形框内的 Python 绘制,但因用户安装成本过高而淘汰。 - **WebAssembly 方案瓶颈**:尽管能把 CPython 与数值计算库编译进 WASM,但庞大的静态资源体积与受限的运行时表现削弱了其实际价值。 --- ### [18:56](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1136s) 移动端开发的痛点与 MicroPython 的启示 谈到移动应用开发,Guido 直言“那确实是一个痛处”(a little bit of a sore point)。虽然业界一直希望能用 Python 开发移动应用,且有部分开发者正在进行相关探索,但 CPython 核心架构在过去 30 年中始终是面向工作站(Workstation)、桌面电脑(Desktop)或服务器(Server)环境设计的,无论是底层假设还是用户期望均契合传统计算设备。 当开发者尝试将 CPython 交叉编译到 Android 平板或 iOS 设备时,往往会面临严重的资源消耗问题。Guido 特别指出,在第三世界国家或教学课堂场景中,学生常常通过平板外接键盘来替代昂贵的 Chromebook 进行编程学习,手机和平板常常是他们唯一拥有的计算设备。然而,相较于移动操作系统的精细管控,CPython 显得又大又慢,会迅速耗尽设备的电池电量并耗光有限的内存。 此外,操作系统底层的语义差异构成了更棘手的工程阻碍。例如 Android 系统虽然表面上基于 Linux,但实际上不允许常规的 `fork` 进程调用。这导致依赖平台判断的 Python 核心库(如 `multiprocessing`)在识别到 Linux 系统后尝试调用 `fork` 时直接失效,使得多进程库必须为 Android 环境重新设计进程生成机制。鉴于这些沉重包袱,Guido 提出了一种思考方向: > “And I wonder if for mobile development it wouldn't be better to start with something like MicroPython or maybe a sort of the medium-medium Python which assumes there is an operating system and a fair amount of memory, but doesn't assume it's running in an environment like CPython.”(Guido van Rossum) - **硬件资源限制**:CPython 运行时在移动端存在内存开销过大、耗电过快(电量迅速枯竭)的问题。 - **系统层级冲突**:Android 缺乏标准 `fork` 系统调用,导致标准库 `multiprocessing` 无法直接按 Linux 逻辑工作。 - **轻量化构想**:移动端可能需要介于 MicroPython 与完整 CPython 之间的“中型 Python”,在承认操作系统与适度内存存在的同时剔除重型桌面级假设。 --- ### [22:29](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1349s) 对现代编程语言的看法:Rust、Go、Julia 与 TypeScript 在被问及如何看待 Rust、TypeScript 等新兴编程语言时,Guido 坦承自己在理论层面非常热爱各种语言,总是热衷于阅读各语言的教程,但在实际动手下载编译器并编写代码方面“非常不擅长”,因为遇到实际问题时,他往往觉得“用 Python 解决要快得多”,或者更倾向于直接为 Python 贡献代码。尽管未曾亲手编写 Rust,但他与许多使用 Rust 构建大型关键系统的资深开发者交流过,认为 Rust 在解决 C++ 长期痛点方面极其出色: > “Rust really sort of improves on C++ in one particular area: it sort of it makes it much harder to bypass the checks in the compiler, and it's of course it solves the memory allocation problem in a near-perfect way.”(Guido van Rossum) Guido 同时对其他现代语言给出了点评: 1. **Go**:在目前所有的通用新兴语言中,Go 可能是最具有“Python 风格”(Pythonic)的语言。 2. **Julia**:虽然表面语法有诸多细节酷似 Python,但其采用基于 1 的索引(1-based indexing)以及两端闭合的切片区间(inclusive ranges),这让 Guido 幽默地感叹“绝不应该有人在同一天里既写 Julia 又写 Python”。他认为 Julia 属于高度专业化的垂直领域语言,在特定数值利基市场中,其编译器能够实现 Python 永远无法达到的深度优化;但在编写 Web 服务器等通用任务上表现受限。Guido 还打趣说,自己这句话估计五分钟后就会引来 Hacker News 上贴出反例进行反驳。 3. **TypeScript**:Guido 对 TypeScript 给予了高度评价。他回顾了 Python 社区在过去六七年间引入渐进类型/可选静态类型(optional static typing / gradual typing)的历程,并澄清在项目立项之初自己并未意识到 TypeScript 的存在,因此 Python 最初的类型系统并非受其启发。他特别赞赏了 TypeScript 借助 JavaScript 生态潮流顺势而为的策略,并正准备进一步盛赞其架构师 Anders Hejlsberg 的卓越设计…… - **内存安全评价**:Rust 几乎完美地解决了内存分配难题,使开发者不必像写 C++ 那样时刻担忧内存管理错误。 - **语言设计冲突**:Julia 的 1-based 索引与闭区间切片与 Python 的 0-based 习惯天然冲突,容易造成心智负担。 - **类型系统交集**:Python 的渐进式类型注解虽然启动时未直接参考 TypeScript,但两者在给动态语言补充静态类型检查的演进路径上殊途同归。 ### [26:49](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1609s) 类型系统:Python 与 TypeScript 的互相借鉴 Guido 谈到了 TypeScript 及其创造者 Anders Hejlsberg,称赞他是一个极其聪明的人。在静态类型领域,TypeScript 探索并实现了一些 Python 仍在摸索的技术。如今,Python 核心团队非常关注 TypeScript 的设计经验;Python 内部设有一个 Typing SIG(类型特别兴趣小组),专门研讨扩展 Python 的类型语法、语义以及整体类型系统。很多时候,Python 提出的新特性正是因为看到 TypeScript 最初也缺少这些特性,后来顺应用户需求加入后大获成功。 这种互相借鉴之所以顺畅,是因为 JavaScript 和 Python 在语言层面都相对简单、动态,因此 TypeScript 与 Python 的类型系统呈现出相当高的相似度,这与 C++、Rust 或 Java 等静态语言截然不同。Guido 透露,从他与 Anders 的交流来看,不仅 Python 在向 TypeScript 学习,TypeScript 乃至 JavaScript 也在某些领域借鉴了 Python 的设计思路。 ### [28:20](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1700s) 编程教育:大学是否应以 Python 作为入门首选 现场一位大学教授提问:高校在教授 C++ 等语言之前,是否应该先教 Python?Guido 毫不犹豫地回答:“毫无疑问是这样的(there's no doubt about that)。”他援引了几年前发表在《ACM通讯》(Communications of the ACM)上的一篇调研文章,指出北美各大顶尖高校早已纷纷将计算机入门编程课程转向 Python。 即便是以经典 Scheme 课程(即著名的 SICP 体系)闻名数十年之久的麻省理工学院(MIT),虽然仍保留部分传统课程,但绝大多数新生如今也是通过一门结合机器人的课程首次接触并学习 Python。 ### [29:21](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1761s) Python 2 到 3 的教训:低估语言成功的代价与 Python 4 的承诺 谈及从 Python 2 迁移到 Python 3 这一段漫长而痛苦的历程,Guido 坦率地将其定义为一个“重大失误(mistake)”。究其根本,是因为 Python 的流行程度远远超出了核心开发者当年的认知。核心团队在设计 Python 3 时严重缺乏对平滑过渡的同理心与支持。Guido 带着自嘲调侃道:“在我们自己的经验中,我们认为这种过渡会相对简单,因为我们当然全都是 Python 编程界的爱因斯坦,在睡梦中都能把代码从 Python 2 翻译成 Python 3(we were all like the Einsteins of Python programming, of course, and we could translate code from Python 2 to Python 3 in our sleep)。” 核心开发者平时编写的代码风格严谨,本身就不太需要做大幅调整;然而现实中,Python 吸引了海量并不精通编程的普通用户和中小企业。无数定制化商业系统写好后便常年在服务器后台无人值守地运行,就像企业内部年代久远的 Excel 表格一样,哪怕公司经历多次人事重组,这些代码依然在稳定服役。这类脆弱的基础业务软件一旦遇到系统底层的 Python 运行时大版本升级便会彻底瘫痪。核心团队当时完全忽视了这种应用生态的存在,盲目认为只要聪明的极客认同 Python 3 比 Python 2 更好就会主动迁移。Guido 郑重承诺,如果未来真有 Python 4,迁移方式绝对不会重蹈 Python 3 的覆辙,他在个人 Twitter 上置顶的双行 FAQ 明确强调:团队已经彻底吸取了教训。 ```mermaid flowchart TD accTitle: Python 2 到 3 迁移认知偏差模型 accDescr: 核心团队对开发者能力与代码生态的乐观预估与现实产业环境的巨大落差对比 subgraph CoreAssumptions ["核心团队最初的设想"] A["高水平开发者(极客)"] B["自适应且规范的代码风格"] C["认为新版本更好,迁移理所当然"] end subgraph RealWorld ["产业现实情况"] D["非专业程序员与外包团队"] E["无人维护的旧版业务逻辑(类 Excel 遗留系统)"] F["二进制升级导致业务中断并停留在 Python 2"] end A -.->|"认知盲区"| D B -.->|"现实脱节"| E C -.->|"遭遇阻力"| F ``` ### [32:39](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1959s) 依赖解析与包管理:虚拟环境与“版本地狱” 针对 pip 21 引入的新版依赖解析器以及下一代 Python 在依赖管理上的规划,Guido 指出,依赖解析从根本上属于语言本体之外的问题,pip 也绝非唯一的包管理器。即便是升级后的 pip 21,也无法做到百分之百尽善尽美。 防范依赖冲突的唯一黄金法则,是为每一个独立应用划分专属的虚拟环境(virtual environments),以此最大程度避免早期 Windows 开发中所谓的“DLL 地狱”或“版本地狱(version hell)”。然而,在由层层依赖构建的现代应用体系中,版本地狱并无法完全根除。尤其在机器学习与数据科学领域,开发者常常需要将 pandas、PyTorch 和 TensorFlow 等大型框架拼接在一起,由于各个开源社区对底层依赖库的支持策略与版本步调并不一致,深度组合使用时极易陷入复杂的版本灾难。 ### [34:43](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2083s) 命名渊源:蒙提·派森、阿米巴系统与流行文化反叛 当一位刚入门的观众询问“Python”名字的由来源起时,Guido 分享了三个幕后维度的故事: 1. **蒙提·派森喜剧社**:Guido 自幼便是英国喜剧团体《蒙提·派森的飞行马戏团》(Monty Python's Flying Circus)的铁杆粉丝。上世纪 70 年代初该剧在荷兰电视台播出时,他被深深震撼,甚至部分英语都是靠看该剧学会的。为此,他曾长期抗拒在 Python 标识中使用真实的蛇类图案。早期在 Mac OS 8 时代,由于个人绘图技能有限且图标规格被严格限制在 16×16 像素,他亲手为 Python 设计的图标实际上是一个“16吨重物”(该剧经典的荒诞无厘头砸人意象)。 2. **阿米巴系统开发传统**:在阿姆斯特丹数学与计算机科学研究所(CWI)开发 Amoeba 分布式操作系统时,三四个程序员之间形成了一个团队内部笑话——习惯用当时流行的电视节目来命名系统各子模块。 3. **反抗正统学术范式**:计算机历史上的编程语言热衷于以数学、工程或科学界的历史巨擘命名(如 Pascal、Ada、Eiffel),或借用希腊神话与文艺复兴先贤之名。年轻叛逆的 Guido 刻意避开这些严肃厚重的符号,选择以大众流行文化(Pop Culture)来命名语言,作为一种幽默的反叛。 ### [37:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2257s) 量子计算与 Python 的边界 谈及量子计算领域是否会出现专属的 Python 版本,Guido 直言:“我认为哪怕是 MicroPython,所需要的内存也超过了目前量子计算机所拥有的容量(even MicroPython requires more memory than a quantum computer has)。” 虽然微软等机构推出了用 Python 编写的量子计算模拟器/SDK,但在 Guido 看来,在宿主机上模拟量子运算并不是真正的“在量子计算机上运行 Python”。受限于量子计算机本身的物理运行机制与极端有限的量子比特硬件环境,直接运行 Python 虚拟机是不切实际的。 ### [38:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2317s) 入职微软内幕:无聊促成的再就业与误打误撞的 VP 面试 主持人将话题转向 Guido 当下在微软开发者部门(Developer Division,负责 Visual Studio、VS Code 等生态)担任“杰出工程师”(Distinguished Engineer)的职务。Guido 透露,自己重返职场纯粹是因为退休后实在太无聊:大约一年半以前他从 Dropbox 退休,原本打算与妻子到处骑行旅游、会见各方好友,结果突如其来的全球疫情彻底打乱了所有生活计划。 居家隔离期间,他重新开始写代码,试图给 Python 增加某些改进特性。然而在开源社区推进过程中,无休止的意见拉扯与循环辩论令他倍感沮丧与疲惫,他心想:“也许我真该再去找一份正式工作。”于是他四处打听,得知微软允许他以兼职(part-time)形式工作。Guido 幽默地回忆道,流程中可能哪里出了纰漏,微软竟然直接安排了一群 VP 级别的高管来面试他;他甚至在毫不知情的情况下直接与微软全球首席技术官(CTO)Kevin Scott 进行了面试,直到面试进行到一半、两人相谈甚欢聊得极投机时,他才恍然意识到对方到底是谁。 ### [40:35](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2435s) 加入微软后的角色定位与项目探索 Guido van Rossum 谈到了自己在微软的工作角色与最初几个月的适应期。尽管公司规模庞大,他对于微软依然决定录用自己感到有些意外。他明确说明自己并不是总监(Director),而是一名独立贡献者(Individual Contributor, IC)。在入职的头三到四个月里,他主要是在公司内部熟悉环境,几乎随机地与全公司各部门在做 Python 相关有趣工作的人开会交流,涉及领域包括机器学习、Azure Notebooks、Excel 等。 在此期间,虽然没有人催促他去动手写代码,但 Guido 认为自己重返职场的初衷是希望能在一个专注的项目上进行深度编程,而不是每周三天整天参加各种会议。由于微软给予了他近乎完全的选题自由,他开始系统性地寻找适合自己的项目方向。在调研机器学习和交互式 Notebooks 时,他认识到机器学习是一个极其庞大的领域。尽管 Python 与该领域形成了良性共生——Python 因该领域的爆发而愈发流行,该领域也因 Python 而更加成功——但他自己此前其实一直忽视了这一方向。他擅长构建 Web 服务器、客户端、数据库应用或用户界面,却完全不知道如何从零编写一个机器学习框架,甚至连做一个简单的机器学习应用都毫无头绪。在尝试阅读教程并与微软内顶尖的专家交流后,他意识到:“It would be a mistake to try and sort of contribute to that field because it takes like you got to spend three or four years on a PhD in the field and then maybe you can contribute something useful.” 因此,他放弃了这个方向。 ### [43:36](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2616s) 重返初心:组建团队全面加速 CPython 在放弃机器学习领域后,Guido 决定回归自己的老本行,组建团队专注于提升 Python 的运行速度。就在本周早些时候的 Python 语言峰会(Python Language Summit)上,他正式公开宣布了这一计划:他将与另外两位核心开发者 Eric Snow 和 Mark Shannon 携手合作,其中 Mark Shannon 是长期深耕更快速 Python 虚拟机技术的专家。他们以核心开发者兼微软员工或承包商的身份,直接向官方 CPython 代码库贡献性能优化。 当时 Python 3.10 刚进入测试版(Beta)阶段,团队赶在发布前贡献了少许改动,随后正式启动该专项计划。团队给自己设定了大约一年的时间窗口,目标是在 Python 3.11 中显著提升性能,使其比 3.10 快得多。Guido 指出,提升 Python 速度目前已成为行业共同关注的焦点:Facebook 刚开源了主要基于 Python 3.8 的优化成果;前 Dropbox 工程师团队开源了基于 Python 3.8 的 Piston 2.0(早期的 Piston 1.0 曾是 Dropbox 的开源项目);此外,微软的开发者布道师 Anthony Shaw 在写完一本关于 CPython 内部实现的著作后,为了学习虚拟机和 JIT 编译器,重拾了名为 Pyjion 的项目,这是一个基于.NET 框架的 Python JIT 编译器。Guido 总结道,提升 Python 性能突然又重回行业热点新闻的前沿,而这正是他熟悉且能够真正做出贡献的领域。 - **核心成员**:Guido van Rossum、Eric Snow、Mark Shannon。 - **发布节奏**:Python 3.10 已进入 Beta 阶段;全面提速计划的主战场为 Python 3.11。 - **同业生态**:Facebook 内部优化方案、Piston 2.0、Anthony Shaw 开发的 Pyjion。 ### [47:32](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=2852s) 关于 Python 4 的传闻、版本节奏与 C API 兼容性难题 当被问及未来是否会有“Python 4”以及会有哪些重大改变时,Guido 直言,目前在核心开发团队内部,每当有人提到 Python 4,纯粹只是在开玩笑。团队从 Python 2 迁移到 Python 3 的惨痛经历中吸取了深刻教训,严肃探讨 Python 4 几乎成了一种禁忌。Guido 笑着表示,大家通常把“这事留到 Python 4 再做”作为一句调侃,其真实含义是“这绝不可能发生”:“Everyone is in on the joke. And, uh, it's just a funny way of saying that will never happen.” 目前 Python 遵循严格的年度发布周期,每年推出一个次版本(从 3.9、3.10 到 3.11、3.12 等),而性能提升也将是渐进式的,随着每个版本逐步累积。他打趣道,版本号一直排到 3.99 都无需变更新的主版本号,虽然版本号从个位数升至两位数(如从 3.9 到 3.10)带来了一些非平凡的兼容琐事,但依然远比跨入 4.0 轻松得多。 如果未来真有什么理由倒逼团队发布 Python 4.0,那必然是破坏性的 C 扩展 API/ABI 不兼容或彻底废除全局解释器锁(GIL): ```mermaid flowchart TD accTitle: Python 4 潜在触发条件与当前演进路径 accDescr: 对比导致 Python 4 的破坏性重构与当前采用的平滑过渡策略 subgraph Breaking["破坏性假设:被迫命名为 Python 4.0"] A["彻底重写内存管理与GC\n(破坏引用计数接口)"] --> C["破坏 C 扩展二进制与API兼容性"] B["硬性移除全局解释器锁 (GIL)\n(如历史上的 Gilectomy 尝试)"] --> C C --> D["被迫发布重大不兼容版本: Python 4.0"] end subgraph Incremental["当前实际路线:保留在 3.x 系列"] E["Eric Snow: 多子解释器项目\n(Multiple Sub-interpreters)"] --> F["同进程但无共享状态\n每个子解释器独占独立 GIL"] F --> G["多核并行Worker模型\n(无需破坏语言版本)"] H["C API 渐进式废弃与迁移"] --> I["保障 NumPy / PyTorch / pandas 平滑升级"] G --> J["版本长期维持 3.x\n持续迭代至 3.33 或更高"] I --> J end ``` Guido 分析道,Python 目前的垃圾回收主要依赖引用计数,而引用计数的底层实现直接暴露给了第三方 C 扩展,这使得内存管理的任何修改都寸步难行。过去 Larry Hastings 曾主导过试图移除 GIL 的 Gilectomy 项目,但如今几乎已停滞。不过,目前团队正在推进更具可行性的替代方案——由 Eric Snow 负责的“多子解释器(Multiple Sub-interpreters)”。该方案让多个子解释器运行在同一进程内,彼此之间完全不共享数据,能够高效切换,且每个子解释器拥有独立的 GIL。这种架构类似于多进程或独立 Worker 模型的轻量化实现,比 Java 或 C++ 的完全共享内存多线程更易维护,并且**完全不需要**对语言版本进行大版本重编号。 至于 C API 的其他问题,Guido 坚信可以通过循序渐进的方式逐步废弃旧接口,为 NumPy、PyTorch、TensorFlow 和 pandas 等核心科学计算库提供足够平缓的迁移路径。因此,核心团队没有人渴望 Python 4,未来版本号极大概率会一路延续到 3.33 甚至更高。 ### [53:51](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=3231s) 工作之外的个人爱好 访谈临近尾声,主持人转向了一个关于个人生活的轻松话题,询问 Guido 除了 Python 之外平日里都有哪些业余爱好。Guido 笑着将此称为“人性化兴趣问题(human interest question)”,并透露自己平时非常喜欢阅读,以此作为代码与技术讨论之外的休闲放松方式。 ### [054:24] 个人生活、家庭爱好与户外运动 Guido van Rossum 在谈及自己的业余生活时十分谦虚,笑称自己是个“非常无趣的人”(very boring person)。他非常珍视家庭生活,并回忆起 19 年前儿子出生时的趣事:当时他甚至直接在 Python 邮件列表(Python mailing list)上发布了儿子的出生喜讯。不过他笑着表示自己现在绝不会这么做了,因为随着时间推移,全家人在个人隐私方面变得更加低调内敛。在文化娱乐方面,Guido 喜爱阅读科幻与奇幻小说(science fiction and fantasy),也热衷于观看这类题材的影视作品,尤其是和正在长大的儿子一起欣赏。 提到如今已经 19 岁的儿子 Orla,Guido 透露儿子立志成为一名金属乐队(metal band)的贝斯手。Guido 坦言这大概是与父母所从事的行业差异最大的职业选择,但他觉得这在青少年成长过程中非常典型且自然,并且自己全心全意地支持儿子的音乐梦想:“So that's that's like the career choice that is sort of most different from what his parents are doing, which is very typical and I fully support him in that.” 谈及个人的休闲健身方式,Guido 表示自己喜欢徒步旅行和骑自行车,但他追求的是轻松适度的运动,绝非高强度的极限挑战。他提到自己有一位朋友偶尔会骑自行车横跨整个美国,这种壮举令他钦佩不已,但他自认绝对做不到。Guido 理想的运动节奏非常惬意:骑上两个小时的自行车,心情得到彻底放松与振奋,然后把自行车架在汽车后座的自行车架上开车回家。主持人感叹在加利福尼亚州宜人的气候下享受这种生活极为美妙,Guido 也热情回应他们一家非常热爱加州的生活,感到十分幸福满足。 - 儿子 Orla 现年 19 岁,热爱音乐并梦想成为金属乐队贝斯手,Guido 对其职业规划给予全力支持。 - 户外休闲以徒步和轻松的短途骑行为主(通常约 2 小时),享受加州良好的户外气候与自然环境。 ### [056:10] 活动结语与致谢 随着访谈接近尾声,主持人表示时间已经用尽,并由衷感慨自己在这场对话中收获颇丰,不仅深入了解了 Python 语言的发展,也更立体地认识了 Guido 本人。Guido 表达了真诚的感谢,并称赞主持人表现出色:“Thank you. You've been a very good interviewer.” 主持人随后向在线参与活动的观众表达了谢意,并期待未来能继续保持联系,跟踪 Guido 在微软主持开展的各项 Python 项目与最新动态。双方在亲切友好的告别声中圆满结束了本次问答交流。 ## Notable quotes > [07:37](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=457s) Python 当时的真正目标,只是成为专业程序员和严谨软件开发者工具箱里的另一件工具,用来替代他们平时可能不得不用 C、C++ 或者 Shell 脚本编写的代码。 — Guido van Rossum > [13:05](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=785s) Python should focus on the targets, the application areas where it's good, and for the web that's the back end, and for scientific data processing that's pretty much everything as long as you can wrap something like TensorFlow or PyTorch or NumPy-based things in general. — Guido van Rossum > [22:29](https://www.youtube.com/watch?v=aYbNh3NS7jA&t=1349s) Rust really sort of improves on C++ in one particular area: it sort of it makes it much harder to bypass the checks in the compiler, and it's of course it solves the memory allocation problem in a near-perfect way. — Guido van Rossum ## Mentioned Guido van Rossum, Francesca, Dion, Microsoft Reactor, Python, ABC, Amoeba, CWI, Google, Dropbox, Microsoft, Usenet, Tim Peters, Barry Warsaw, Brython, WebAssembly, MicroPython, Rust, Go, Julia, TypeScript, Anders Hejlsberg, MIT, Communications of the ACM, Monty Python's Flying Circus, Kevin Scott, Eric Snow, Mark Shannon, Piston, Pyjion, Anthony Shaw, Larry Hastings, NumPy, PyTorch, TensorFlow, pandas ## Video description Guido van Rossum is a Dutch programmer best known as the creator of the Python programming language, for which he was the "Benevolent dictator for life" (BDFL) . Come join us for an open Q/A "Ask me Anything" to get to know how PyCon was born and Guido's amazing journey For more on Python, click here: https://developer.microsoft.com/reactor/topic/2/?wt.mc_id=youtube_0_video_reactor For more community and learning events from Microsoft Reactor, click here: https://developer.microsoft.com/reactor//?wt.mc_id=youtube_0_video_reactor [eventID:13426] [Source](https://www.youtube.com/watch?v=aYbNh3NS7jA)

Source quotes

[7:37] Guido van Rossum: Python 当时的真正目标,只是成为专业程序员和严谨软件开发者工具箱里的另一件工具,用来替代他们平时可能不得不用 C、C++ 或者 Shell 脚本编写的代码。 [13:05] Guido van Rossum: Python should focus on the targets, the application areas where it's good, and for the web that's the back end, and for scientific data processing that's pretty much everything as long as you can wrap something like TensorFlow or PyTorch or NumPy-based things in general. [22:29] Guido van Rossum: Rust really sort of improves on C++ in one particular area: it sort of it makes it much harder to bypass the checks in the compiler, and it's of course it solves the memory allocation problem in a near-perfect way.

Source quotes

[22:29] Guido van Rossum: Of all the new languages, Go is probably the most Pythonic [9:26] Guido van Rossum: it's my language, not theirs; you can design your own language.

Original transcript

[0:00] Thank you all for joining us for the Q&A [0:03] with the inventor of Python. Before we [0:05] start, I have a few quick things to go [0:07] over. If you haven't yet, please check [0:10] in at aka.msreactorcheckin [0:13] using event ID13426. [0:18] You can use the live chat to ask [0:20] questions and we will try to answer as [0:22] many as we can. We will also be sharing [0:24] some links to the Reactor meetup page [0:26] and monthly newsletter if you are [0:28] interested in checking out what other [0:30] sessions we have coming up. And finally, [0:32] today's session is being recorded and [0:34] will be added to the Reactor YouTube [0:36] channel. I am now going to pass it over [0:38] to Francesca. [0:41] Thank you, Dion. Hi, everyone. So, today [0:44] it's really my pleasure uh to have this [0:46] conversation with Gido. Uh, Gidovan [0:50] Rossum is the creator of the Python [0:52] programming language and he grown up in [0:55] the Netherlands and studied at the [0:57] University of Amsterdam where he [0:59] graduated with a master's degree in [1:01] mathematics and computer science and [1:03] then after college he created Python and [1:06] today we're going to talk a lot about [1:08] it. He then moved to the United States. [1:10] I know that in 2005 he joined Google. In [1:14] 2013 he joined Dropbox and finally now [1:17] is a distinguished engineer at [1:20] Microsoft. So welcome Gido and thanks [1:23] for joining us today. [1:25] Happy to be here. Nice to meet you [1:26] Francesca. [1:28] So let's start with the first question [1:32] um that is more like a general question. [1:34] So um can you share a little bit more uh [1:37] about this story behind the Python's [1:39] start? So why and how did you decide to [1:42] develop it as a side project? [1:46] Well, how much time have you got? That's [1:48] that [1:49] I I have [1:51] of that story. I'll [1:52] I'll I'll I'll try to cut it down a bit. [1:55] Yeah. [1:55] Uh so after college, I uh joined a [2:01] research lab in the Netherlands called [2:03] CWI. [2:05] uh and my first project there that I [2:08] worked on for three and a half years uh [2:11] was the implementation of a programming [2:13] language. Uh the language was named ABC. [2:17] Uh it was a beautiful design. Uh I [2:20] really enjoyed working with that team. I [2:22] learned a lot. Uh and the language [2:26] totally flopped. There was like it was [2:29] impossible to find users. [2:32] uh we didn't have any distribution [2:35] channels, we didn't have any obvious [2:37] ways to promote our language [2:40] uh and so the project was cancelled. I [2:44] worked on other things including a [2:46] distributed operating system named AoE. [2:49] Uh [2:51] but at some point I think during the [2:54] development of Amoeba I was writing a [2:57] lot of application code because amoeba [2:59] was sort of this super researchy thing. [3:02] There was a micro kernel written by a [3:05] couple of PhD students. [3:07] uh and I was actually uh hired as a [3:11] programmer and our task was to sort of [3:14] fill out the operating system with [3:16] useful applications like there was a [3:18] shell, there was a compiler but there [3:21] were now like backup tools or mail [3:24] readers or any of those handy things. [3:28] Mhm. [3:28] So I was writing utilities and the only [3:31] since the only compiler we had was a C [3:33] compiler. Uh my choice for every utility [3:37] was write it from scratch in C [3:41] uh or cobble it together as a shell [3:43] script [3:45] and uh often the the sort of the purpose [3:50] of the tool was such that it wasn't so [3:52] easy to write it as a shell script. So I [3:55] would was writing stuff in C but of [3:58] course productivity in C is very slow [4:01] and I sort of at the same time I had in [4:05] the back of my mind this ABC language [4:09] was such a wonderful thing. [4:11] uh it's a shame that I couldn't write my [4:14] utilities for ammo in ABC [4:18] and I thought well [4:22] okay and now now now we get to the point [4:24] where it was good that uh the project [4:27] leader was on a sbatical in Silicon [4:30] Valley and uh left the the team of [4:33] programmers more or less to themselves [4:36] uh and I had no social life [4:40] Uh [4:43] so I I decided over the the Christmas [4:46] holidays actually [4:48] uh that it would probably take me about [4:51] 3 months to uh imp design and implement [4:54] a new programming language based on many [4:56] of the ideas from ABC but also ideas I [5:00] had myself and I had certain some [5:02] criticism on parts of ABC. [5:06] And then [5:08] after those three months, I would be [5:11] much more productive and everyone else [5:13] on the team would also be much more [5:15] productive in our creation of utilities [5:18] for Amoeba. And then within half a year [5:20] or so, we' we would be even and after [5:24] that it was was pure sort of [5:28] an increase in in total output of the [5:31] team. I did actually after three months [5:34] have a sort of a demoable version of [5:37] Python. [5:38] Wow. Okay. [5:39] Uh [5:40] but basically Python continued to [5:43] consume my life for much longer than I [5:46] had anticipated. I mean, if this I think [5:49] the story about productivity was more or [5:52] less an excuse to to do something I [5:55] thought was more fun than writing [5:57] utilities and crank cranking out uh [6:00] backup tools and and that kind of stuff. [6:04] Uh [6:07] so [6:08] uh I think in the in the end for the for [6:12] the ammo project project we probably [6:14] sort of was maybe a break even. Uh but [6:18] for myself it was obviously uh a big [6:21] success after a little more than a year. [6:24] Uh [6:27] several people who also really enjoyed [6:30] using Python because we were using it. [6:32] We even had like the first summer we had [6:34] we had an intern using Python for some [6:36] crazy stuff. [6:38] Uh so it it it was a useful tool. Uh we [6:41] decided to open source it [6:44] which at the time was a very different [6:46] process. Uh but this time uh I hooked [6:51] into something called Usenet [6:54] which was an online community mostly [6:57] focused on the US but sort of with [6:59] branches in Europe and other parts of [7:02] the world. Uh and sort of we promoted [7:06] Python there [7:08] and it was an instant success. my inbox [7:11] started filling up with sort of fan mail [7:15] and uh bug reports and [7:20] unsolicited sort of uh feature requests [7:23] and patches and all sorts of all all the [7:26] good stuff that that you sort of you [7:28] want that strokes your ego and that [7:30] helps [7:31] sort of that make the the thing a better [7:34] thing. [7:37] Well, that is a fantastic story and I [7:40] think that we are all very glad to hear [7:42] that you know you you decided to develop [7:45] this um programming language and uh [7:48] something that I'm curious um to hear [7:51] more about and uh we received this [7:53] question also um on Twitter. Uh I work [7:56] in the machine learning and AI space [7:58] right now. So, uh, did you predict [8:00] Python being used so much in the machine [8:03] learning and AI community when you [8:05] started the language? [8:07] Oh my gosh. No, no, no, not at all. I [8:10] had no idea. I mean, this that this was [8:14] like 1990. [8:16] I think it was still the the sort of the [8:19] the deep AI winter. AI was a very sort [8:22] of disrespected field because in the 60s [8:26] and 70s it had made so many promises and [8:29] none of those had really come true. And [8:33] so everybody thought that that was a [8:35] dead field that that we wouldn't we [8:37] wouldn't get to any of that science [8:38] fiction for another century or so. Well, [8:41] I'm sure clearly there were people who [8:43] who had other ideas, but that was sort [8:45] of the general feeling and sort of the [8:48] goal of Python really was to be another [8:50] tool in the toolbox of professional [8:52] programmers, soft serious software [8:54] developers [8:56] who would otherwise wise be writing code [9:00] in C or C++ maybe uh or [9:05] uh as shell scripts. [9:08] Yes. And you know right now there are so [9:11] many different frameworks that are used [9:14] for deep learning and machine learning. [9:16] So it's very interesting to see how you [9:18] know the evolution of of Python has [9:20] actually impacted the the machine [9:22] learning and AI uh field so much. So I I [9:26] got a another question uh from one of [9:29] the guest uh that says um I read your [9:32] blog post about the origins of the [9:35] functional features of Python. What can [9:37] you say as an update now in 2021? [9:43] Uh yeah, so I shouldn't repeat what I [9:46] wrote in that blog post. Actually, it's [9:48] a pretty old blog post. I don't even [9:50] remember exactly what I wrote at the [9:52] time, but I imagine that it described [9:55] how uh a a sort of fully featured [9:59] implementation of lambda map filter and [10:03] reduce appeared in my inbox in I think [10:06] in the the the early 90s actually it [10:09] might it might have been the mid 90s and [10:13] I didn't know much about functional [10:14] programming. I I had heard some talks [10:17] from some academics about [10:20] uh certain functional programming [10:23] languages and I thought it was [10:24] marvelous. Uh but I didn't really [10:27] understand it and I had never tried to [10:30] use a functional language myself. [10:32] Uh but at that time I was basically [10:36] taking every [10:38] new feature that that sort of [10:42] that felt okay to me. I would just sort [10:46] of [10:48] scratch my head for a few seconds and [10:50] say sure let's put that let's put that [10:51] in the language and and re release a new [10:54] version. And now we have these things. [10:57] Uh [11:01] I think uh [11:04] lambdas have been very successful [11:06] despite uh them being intentionally sort [11:10] of simplified. Uh they've also been [11:13] widely misunderstood. people have often [11:17] I I remember almost getting into a [11:19] shouting match uh with someone who [11:22] thought that only lambdas had the [11:24] semantics of uh closures and nested [11:29] functions did not. [11:31] There was like a huge misunderstanding [11:35] uh based on that. I think we both had a [11:37] little too much beer so it was fine in [11:39] the end. Uh so filter and map uh are [11:44] pretty useful things. Uh but I've never [11:49] been able to to sort of follow code that [11:52] was using reduce whether in Python or in [11:55] other languages. So eventually I decided [11:58] to sort of cut it out of the built-ins. [12:00] And there's there there are still people [12:02] on Hacker News uh who are mad at me for [12:05] that. But eh it's my language, not [12:08] theirs. you can design your own language [12:10] and and and they've done [12:13] for sure. [12:14] Uh so but what what happened instead was [12:18] that uh a guy named Tim Peters I think [12:21] whispered in my ears something about [12:23] comprehensions. [12:24] Now, that was something that I was [12:26] familiar with because like in college [12:29] and your first math class, they they [12:31] show or maybe even in in in high school, [12:34] they show you this set notation where [12:36] you say all the x vertical bar where x [12:40] is greater than five or something. [12:44] And that that sort of that made total [12:46] sense to me. And so the the specific [12:48] notation of comprehensions [12:51] which started out with list [12:52] comprehensions and uh generator [12:55] expressions and eventually was expanded [12:57] with set comprehensions and dictionary [12:59] comprehensions. [13:01] Uh thanks Barry for those. Uh that's [13:05] that's been like a real [13:08] uh gamecher for the language I would [13:10] say. [13:13] Very very interesting. And here I I got [13:17] a different question but still uh very [13:20] uh interesting that is a more um general [13:22] question about the scope of Python in [13:25] web development and mobile app [13:27] development. What's what's your take on [13:28] this? [13:30] Oh, those are those are two very [13:31] different questions. And take take web [13:34] development. Of course, web development [13:37] neatly separates in a front end and a [13:39] back end, except then that that people [13:41] who write the backend code [13:44] have a whole stack of layers where [13:47] there's still a front and a back. Uh but [13:52] if you have sort of the stuff that runs [13:54] on the browser versus the stuff that [13:56] runs on the server, all the stuff that [13:58] runs on the server, uh Python is a [14:01] pretty popular language there. Uh at [14:04] Google, I worked on projects that uh [14:07] were were sort of built on Python, [14:10] although most Google stuff wasn't. [14:13] uh at Dropbox uh the whole Dropbox [14:18] server is built in Python. [14:22] Uh on the other hand, if you look at [14:25] what runs in the browser, that's the [14:28] world of JavaScript. And uh unless it [14:31] translates to JavaScript, [14:33] uh you can't run it. And there have been [14:35] various experiments. I mean I remember [14:37] there was a time that people wrote [14:40] applets [14:42] uh and there was actually even in 95 or [14:45] 96 I believe there was uh [14:49] there was some crazy hack uh where web [14:53] browsers I mean I think there was only [14:55] one web browser and it could dynamically [14:57] load an extension and then you could use [15:00] an arbitrary language but it was very [15:02] limited. I think the other language then [15:05] would have like a square box on the [15:08] screen of fixed size where it could draw [15:10] what it wanted and that was about it. Uh [15:16] but we got that working for Python at [15:18] some point. But it wasn't successful [15:20] because users would have to download [15:22] that extension and install it in their [15:24] browser and there were a thousand things [15:27] that could go wrong. Plus, most users [15:29] weren't so keen on downloading and [15:33] installing stuff before they could sort [15:35] of run a website that they were planning [15:37] to visit for about 5 seconds. [15:40] Uh, [15:42] Java actually tried to do the same thing [15:44] and similarly failed. [15:47] Uh, so I'm I'm not particularly uh [15:51] worried that that that didn't work. Now [15:55] of course there are various people who [15:57] have different strategies for running [15:59] Python in the browser. Uh there are a [16:02] few projects the only name that I can [16:04] remember is Python but I think there are [16:06] a few others that somehow translate [16:10] Python to JavaScript or have a Python [16:13] interpreter written in JavaScript. [16:16] Uh [16:19] in theory you can you put that on your [16:21] website and your users will never have [16:23] to know. And some people do that [16:26] especially the translation approach [16:28] works can be pretty effective but it's [16:30] like you have no support from the [16:33] browser vendors. Uh nobody in the Python [16:36] community knows what you're doing. It's [16:39] very limited because the environment in [16:41] the browser has sort of very different [16:45] IO primitives. [16:47] Uh you you can't block for IO for [16:49] example. You can't open a file and read [16:51] a bunch of stuff from it. [16:54] really uh so that is still not very [16:57] popular. There's also web assembly [17:00] uh people have done sort of hero [17:04] projects where they translate all of C [17:07] Python into web assembly because there [17:10] apparently there are experimental GCC [17:13] backends that just produce web assembly [17:15] code instead of uh machine language. [17:20] And then sort of to make it useful, they [17:23] compile all of of uh the scientific data [17:27] stack and you can sort of do numeric [17:30] data processing and it it it it all [17:33] works and web assembly is amazing. Uh [17:36] but in the end [17:39] it sort of it's a big download [17:44] and uh you have something that comes [17:48] short of the performance and the [17:50] functionality of when you just ran the [17:53] whole thing in a notebook on your own [17:55] computer [17:56] or ran the whole thing on a server [18:00] uh with with a proper UI. So I don't [18:03] know if there's a future for that. Uh [18:07] I don't mind so much. Uh [18:10] different languages have have different [18:12] goals. I mean nobody's asking Rust when [18:15] uh you can write Rust in the browser. At [18:17] least [18:18] that wouldn't wouldn't seem seem a [18:22] useful sort of target for Rust either. [18:25] Yeah. [18:26] Uh I mean Java failed in that respect [18:28] and that they don't have any uh problem. [18:30] I mean, Python should should focus on on [18:34] the [18:36] the targets the the sort of the [18:38] application areas where it's good and [18:42] for the web that's the back end and for [18:44] scientific data processing that's pretty [18:46] much everything as long as you can wrap [18:49] something like TensorFlow or PyTorch or [18:53] uh NumPy in based things in general. So [18:56] coming back to mobile app development, [19:00] uh [19:02] that is a little bit of a sore point. It [19:04] would be nice if uh mobile apps could be [19:07] written in Python. Uh there are actually [19:11] a few people working on that. [19:14] Uh [19:15] but CPython is sort of has 30 years of [19:20] history where it's being built for for [19:24] an environment that is a workstation, a [19:28] desktop or [19:30] uh a server [19:32] and sort of [19:36] it it it expects that kind of [19:39] environment and the users also expect [19:42] that kind of environment. So if you the [19:45] people who who sort of have managed to [19:48] cross-co compile C Python to run on uh [19:52] say on an Android tablet or even on iOS [19:58] uh they find that it sort of it eats up [20:02] a lot of resources. Now, if you're sort [20:05] of if you're in a classroom situation [20:08] and you plug in your tablet and you [20:11] connect a keyboard to it and you want to [20:13] learn to code, well, maybe you have a [20:16] slightly cheaper [20:18] setup than if you use a Chromebook or [20:21] something like that. [20:23] Uh so especially in third world [20:26] countries uh [20:29] tablets or even phones are often the [20:32] only thing that people have. [20:35] Uh but running running CP Python in that [20:39] environment is uh sort of [20:43] it's not a great fit [20:46] because it sort of it's it's still rel [20:49] it compared to what the mobile operating [20:53] systems expect. Python is is big and [20:55] slow. [20:58] Uh and and and and sort of it it [21:01] basically uses a lot of [21:04] battery charge. So you can you can sort [21:07] of if you're coding in Python, you you [21:10] probably very quickly run down your [21:11] battery. You also probably quickly run [21:15] out of memory. [21:17] uh and sort of like Android is that [21:22] pretends to be a Linux system but you [21:25] can't actually fork a process. So that's [21:28] a problem because now Python code that [21:31] sort of Python important Python [21:32] libraries like multipprocessing [21:35] detect that they're on Linux and they [21:37] know they create to create a new process [21:39] you fork. Well that doesn't work. So now [21:42] does multipprocessing have to figure out [21:44] how to create another process on an [21:47] Android uh [21:51] device. So it's it's like it would be [21:56] nice if [21:58] if there was more, but it's it's not an [22:01] easy thing thing to introduce. And I I [22:04] wonder if for mobile development it [22:07] would wouldn't be better to start with [22:09] something like MicroPython [22:13] or maybe a sort of the medium medium [22:15] Python which [22:18] assumes there is an operating system and [22:21] a fair amount of memory but doesn't [22:23] assume [22:25] it's running in an environment like [22:27] CPython. [22:29] Mhm. And you mention um some of the [22:32] newer uh programming languages such as [22:35] Rust and uh that of course is aimed at [22:39] is aiming at different audiences and at [22:41] solving different uh type of uh uh [22:44] problems. Um there is also another um [22:47] language like Typescript. What do you [22:49] think of of those languages? [22:53] Oh, I I I love languages in at least in [22:56] theory. I mean, I always read language [22:59] tutorials. I'm very bad at actually sort [23:03] of downloading a language implementation [23:05] and uh and trying to code something [23:09] because it's it's almost always easier [23:12] to oh I I I already know how to do that [23:14] in Python and uh or I just want to [23:18] contribute to Python. So I haven't [23:21] actually learned Rust. I've spoken to [23:23] many people who have and who have [23:25] written serious applications in it or [23:28] are writing serious applications in it [23:30] and it sounds like it's a great language [23:33] for sort of for certain things. I mean [23:37] Rust really [23:39] sort of improves on C++ in one [23:42] particular area. it sort of it makes it [23:46] much harder to bypass the checks in the [23:48] compiler [23:51] and it's of course it sol it it solves [23:53] the memory allocation uh [23:56] problem in in a nearperfect way. I'm I'm [23:59] sure that if you're developing a really [24:01] large serious application, every once in [24:04] a while you end up having to cheat and [24:06] then you're still on your own, but it's [24:08] much harder to to sort of be sure that [24:14] uh so if if you wrote the same thing in [24:16] C++, [24:18] you could not be as sure that as uh [24:22] compared to Rust that like you've gotten [24:25] all your memory uh allocation and memory [24:28] management stuff Right. So, Rust is is [24:30] an interesting language. I still think [24:32] that Go is a very interesting language, [24:34] too. [24:35] Okay. [24:36] Of all the new languages, Go is probably [24:38] the most Pythonic or at least the sort [24:40] of the general purpose new languages. Uh [24:44] there's also Julia, which [24:47] is sort of an an interesting [24:52] sort of take on something [24:55] Python like. [24:58] uh it it has enough details that look [25:01] very similar to Python that then when [25:03] you realize oh but all the indexing is [25:07] one-based and ranges are inclusive [25:09] instead of exclusive you think ah I [25:14] nobody should ever try to code in Julia [25:18] and in Python on the same day. Uh my [25:22] understanding is that Julia is is sort [25:25] of much more of a niche language and if [25:28] you're in that niche, [25:31] it is superior because the compiler sort [25:33] of [25:35] optimizes your code for you in a way [25:37] that that Python probably never will. [25:41] uh on the other hand it is much more [25:43] limited in in other areas and I wouldn't [25:46] expect that anybody ever is going to [25:49] write a a web server in Julia and uh get [25:55] a lot of mileage out of it and I'm sure [25:58] in five minutes that will be on hacker [26:00] news with a counter uh example. [26:06] Sorry, you mentioned TypeScript also a [26:08] great language. Uh [26:10] you might have noticed that in the past [26:13] six or seven years we've been adding uh [26:16] optional static typing as we call it to [26:18] Python also known as gradual typing. [26:22] Uh I wasn't actually aware of TypeScript [26:26] when we started that project. So I I [26:29] can't say that we were sort of inspired [26:31] by Typescript initially. [26:34] uh Typescript because it sort of jumped [26:39] on the JavaScript bandwagon. [26:41] Uh [26:43] I think [26:46] did a few and and because Anders is is a [26:49] really smart guy. Uh Typescript did a [26:52] few things that that Python is still [26:56] sort of waiting to figure out. [27:00] So nowadays [27:02] we definitely look look at TypeScript [27:05] for examples and and sort of we we have [27:08] a typing SIG where we discuss extensions [27:10] of the typing syntax and semantic and [27:13] the type system in general for for [27:15] Python. And we definitely sometimes sort [27:19] of propose new features because we know [27:22] that that certain features were also [27:25] sort of originally originally excuse me [27:29] initially lacking in Typescript [27:32] and then added to TypeScript based on [27:35] user demand and very successful in [27:37] Typescript. And so now we sort of we can [27:40] see we have that we are in that same [27:42] situation because JavaScript and Python [27:46] are relatively simple. So TypeScript and [27:49] Python type system are also relatively [27:51] si similar [27:53] uh much more so than Python uh and say [27:57] C++ or Rust or Java. [28:00] So [28:02] we we are learning from J from [28:04] Typescript and occasionally uh uh from [28:09] my conversations with Anders it sounds [28:11] like Typescript is also learning from uh [28:13] Python just like Java JavaScript has [28:16] learned from Python in a few areas. [28:20] So you mentioned uh C++ and we do have a [28:23] question from a professor who is asking [28:26] if you think that university should [28:29] teach uh Python before teaching other [28:31] programming languages such as C++ for [28:34] example I also know [28:36] absolutely [28:38] yeah [28:40] yeah that [28:42] there's no doubt about that that there [28:43] there a few years ago there was an [28:46] interesting article published in uh [28:49] communications of the ACM about [28:52] sort of surveys of uh major universities [28:55] that had all switched to uh Python as [28:58] their sort of intro to coding uh [29:01] classes. even MIT's famous uh struct uh [29:07] whatever well MIT had a scheme based [29:09] class for decades [29:12] uh and uh they're still teaching that [29:14] but the the vast majority of students uh [29:17] first learned Python with a robotics [29:19] class. [29:21] Yeah. And uh so going back to uh Python [29:25] um like more like the evolution of uh [29:28] Python, one of the question that I [29:30] wanted to ask you is like if you had to [29:33] uh share with us uh one uh biggest [29:36] learning uh you know from the transition [29:38] from Python 2 to Python 3, what is that? [29:44] ah the biggest learning. So [29:48] I I normally talk about that as sort of [29:53] a mistake because Python was more [29:55] successful than the core developers [29:57] realized. M [30:00] uh [30:02] and so what we we we should have been [30:05] much more aware of and and much more [30:08] sort of [30:13] supportive of [30:15] of transitioning from Python 2 to Python [30:19] 3. [30:20] And in our own experience, we we thought [30:23] that that transition would be relatively [30:25] simple because we were all like the [30:29] Einsteins of Python programming, of [30:31] course, and we could translate uh code [30:35] from Python 2 to Python 3 in our sleep. [30:38] And probably our Python 2 code already [30:40] was written in a style that didn't need [30:42] much translation. Anyway, [30:46] uh what we found was that Python [30:49] actually is also very successful with [30:52] people who [30:55] uh aren't great programmers. [30:58] Uh and there are whole sort of [31:03] groups of businesses that write Python [31:06] code that solves some some problem for [31:10] another business [31:13] uh and is delivered as an application [31:15] that then sort of runs without [31:17] supervision [31:20] and and these are custom custom [31:23] projects. [31:25] And so all these things are left running [31:28] on servers. It's like old Excel [31:30] spreadsheets almost [31:32] that that sort of [31:36] survive any reorg in the organization [31:39] that that software is still running. [31:42] Uh but it doesn't survive an upgrade [31:45] from the default Python binary to [31:47] something newer. [31:49] Uh and we weren't we we sort of we [31:53] totally neglected [31:56] that that was happening to Python. We [31:58] basically thought oh there there are a [31:59] few other smart people like us who are [32:02] loving Python and they would all agree [32:05] that uh Python 3 is better than Python [32:07] 2. And it turned out that [32:11] the the situation was much more nuanced. [32:14] So certainly if there ever is going to [32:16] be a Python 4, uh well if you if you've [32:19] seen my Twitter stream, if you look me [32:22] up on Twitter, I pin a tweet that is [32:24] like a twoline FAQ about Python 4, which [32:27] is basically the transition to Python 4 [32:30] will not be anything like the transition [32:33] to Python 3 was because we've learned [32:36] our lesson. [32:39] Interesting. And how about you know um [32:42] uh dependencies re resolutions like I [32:45] know that PEIP now is PIP 21 right um [32:50] has a very good um support a very good [32:53] offer in terms of um dependencies [32:57] resolution so uh is there going to be [32:59] something new there on on that aspect in [33:02] the next version of Python? [33:06] Uh I I still think of that as as [33:10] something that really is outside the [33:12] language proper. [33:14] Uh pip is not the only package manager. [33:19] Uh even pip 21 is not perfect in its [33:23] sort of dependency resolution. [33:26] Uh it's always better to use virtual [33:29] environments [33:31] and sort of have a separate virtual [33:33] environment for each application because [33:35] that makes it much easier to avoid uh [33:39] what used to be called DLL hell [33:42] because that's that or or version hell. [33:46] But it's not it you you can't avoid [33:48] versioning hell in all cases [33:51] unfortunately. And uh that that's that's [33:55] unfortunately a fact of life when you're [33:58] developing software that is built on top [34:01] of layers and layers and layers of other [34:04] software as especially the people in uh [34:08] in machine learning and data science [34:10] world of course are doing all the time. [34:13] There's so many useful packages, [34:15] but [34:17] different communities developing [34:19] developing different sort of packages [34:23] don't always have the same policies [34:26] about sort of which versions of lower [34:29] level packages they they support. And [34:32] then when someone in an application [34:35] tries to sort of combine pandas and [34:38] PyTorch and TensorFlow, you probably uh [34:41] get into terrible trouble. [34:43] I see. So we we will see uh in terms of [34:48] you know the next the next version of [34:50] Python. There is someone here that is [34:53] new to Python uh is a guest and he's [34:56] asking curious uh is is curious why it [34:59] is called actually Python. [35:02] Ah yeah I I I forget to mention that [35:06] detail in the the origin story. So, uh, [35:11] one, I'm a big fan of Montipython's [35:13] Flying Circus. Always have been. Uh, [35:18] that that show sort of made a few [35:20] appearances on Dutch TV in the I think [35:23] in the early '7s [35:25] and I just was floored. I thought it was [35:28] so funny. I learned English from that in [35:31] part. Uh, [35:34] so anyway, it's named after [35:35] Montipython's Flying Circus. And uh for [35:39] the longest time I resisted any sort of [35:42] use of snakes for Python logos. I [35:45] remember designing a logo for Python for [35:48] uh the very early Mac version. This was [35:51] like Mac OS 8 or so. Uh [35:57] very very cute hardware. Uh, and the [36:00] logo I designed was a 16 ton weight [36:05] because that was a sort of the own that [36:07] that was the simplest thing that I could [36:08] draw with with sort of my limited [36:11] drawing skills and it had to fit in 16 [36:14] by 16 pixels. [36:17] Uh, [36:19] sorry, it was a two-part question and I [36:21] I I blanked out on the second part. Uh [36:25] this person was no there was just saying [36:28] that he's new to Python and so he wanted [36:31] just to know a little bit more about the [36:32] story of the name Python and I think [36:34] that you you answer that. [36:37] Okay. Yeah. The well the other part of [36:39] the story was that in Amoeba we had sort [36:41] of a local trai tradition which was just [36:45] sort of a joke among the three or four [36:47] programmers working on it that we we [36:50] named various parts of the the system [36:53] after uh popular TV shows. [36:58] And the third part was that I recognized [37:01] that there was a trend in naming [37:03] languages after sort of important [37:06] historical figures from the world of [37:09] science and math and engineering like [37:11] Pascal or Ada or Eiffel [37:15] and I sort of I was in a rebellious mood [37:18] and I thought I don't want it to sort of [37:22] be named after a Greek god or [37:27] uh an important figure from the [37:29] Renaissance and I didn't know those [37:31] names that well either although I had [37:33] learned a few of them in school and so [37:36] sort of choosing references to pop [37:38] culture was was my way of sort of [37:43] going against that [37:46] that's a nice nice story um there is [37:49] another another guest that is also [37:51] asking a very interesting question uh [37:54] about Python for quantum computing So [37:58] he's asking you there will be Python for [38:00] quantum computing or do you think that [38:02] is too soon to know it? [38:06] Uh [38:08] I think even micro Python requires more [38:11] memory than a quantum computer has. So [38:14] I I don't know what to do with Python in [38:17] in quantum computing. I know that there [38:19] is a Microsoft package that I think [38:23] claims to emulate a quantum computer and [38:25] it's all written in Python. Uh but that [38:29] that's not really to me to me that's not [38:31] really an application of quant of Python [38:34] in quantum computing. [38:37] Um and speaking of Microsoft, so right [38:40] now you are a distinguished engineer at [38:43] Microsoft. I know that you work in the [38:45] developer division. Um so that division [38:49] is also uh well known for tools such as [38:52] uh visual studio visual studio code that [38:54] is supported by uh the open source also [38:58] um community and uh so what's your role [39:00] there and do you have a specific plan? [39:05] Uh um so I came out of retirement mostly [39:10] out of boredom. I sort of a year and a [39:12] half ago I left Dropbox and I I was [39:15] really done there after several years [39:18] and I thought oh I'll go I'll I'll go [39:20] travel with my wife and we'll go uh on [39:23] lots of bike trips and we'll get [39:25] together with friends and then the [39:26] pandemic h happened and uh life was [39:31] pretty limited [39:33] and I realized I needed a project and I [39:35] started going back to coding and sort of [39:39] specific Python improve improvements and [39:41] I sort of I have to admit I got [39:44] frustrated with a certain thing I wanted [39:47] to add to Python where [39:50] uh there was just endless discussion [39:52] that kept going around in circles and I [39:55] thought [39:57] maybe I should just get a job again and [39:59] I asked around and I found that uh I [40:04] could actually work at Microsoft [40:06] part-time [40:08] and uh I I don't know. I still think [40:11] that's that so a mistake was made [40:13] somewhere and they accidentally set me [40:16] up with interviews with people at the [40:19] the sort of VP level. I remember being [40:23] interviewed by Kevin Scott who of course [40:24] is the CTO but at the time that I had [40:27] blanked out on that. [40:29] So in the middle of the interview, we [40:31] were like we were getting along great [40:33] and we were just chatting about random [40:35] stuff and I asked Yeah. So what exactly [40:37] is is is your role in this company. [40:41] So I'm I'm actually very surprised that [40:43] they still decided to uh hire me. And uh [40:47] I'm an individual contributor. Uh I I'm [40:52] I'm not a director. [40:54] uh and I sort of for for three or four [40:58] months I actually just oriented myself [41:01] in the company [41:04] uh taking meetings with random people [41:07] almost in the meeting who are doing [41:10] interesting stuff with Python in the [41:12] context of machine learning of course [41:17] Azure notebooks excel you name it [41:23] uh Uh, [41:25] and at sort of nobody told me, well, [41:29] shouldn't you be sort of [41:33] getting your hands dirty with coding? [41:35] But I felt that I I I [41:38] went back to the workforce so that I [41:40] could do more coding on a focused [41:43] project and not so that I could take uh [41:46] meetings all day long, three days a [41:48] week. And so I I sort of started started [41:52] a systematic search for well what what [41:55] kind of project shall I take because I [41:58] was pretty much given complete freedom [42:00] in what I would wanted to work on. [42:04] Mhm. And so I I looked into machine [42:07] learning and notebooks and I realized [42:10] that machine learning [42:12] uh is a very big field. [42:16] Uh which I have despite Python big [42:20] success in that field [42:23] uh and I would say that that the field [42:24] has become more successful because of [42:27] Python and Python has become more [42:29] popular because [42:31] that field has taken off. That's very [42:33] nice symbiosis, but I've always sort of [42:36] ignored that field. I know exactly how [42:39] to build a web server in Python or a web [42:42] client or something doing something with [42:44] databases or user interfaces. I have no [42:47] idea how to begin writing a framework [42:51] for machine learning or even how to do a [42:54] simple machine learning application. [42:56] I've sort of I've tried to follow [42:58] tutorials [43:00] in that area and I've talked to various [43:03] people [43:04] uh and of course I I had like super good [43:08] access to all sorts of smart people in [43:11] in the machine learning field at [43:12] Microsoft as well. [43:15] And I realized [43:18] it would be a mistake to try and sort of [43:21] contribute to that field because it [43:23] takes like [43:24] you got to spend three or four years on [43:26] a PhD in the field and then maybe you [43:29] can contribute something useful. I don't [43:32] know if that's your experience, but [43:33] that's sort of what it felt like to me. [43:36] And so I I in the end I decided I would [43:39] go back to my roots [43:41] uh and uh sort of collect a team of [43:46] people and start working on making [43:48] Python faster. [43:50] And at the Python language summit [43:52] earlier this week, I actually announced [43:54] this sort of publicly [43:58] uh [44:00] that uh now together with two other core [44:03] developers, Eric Snow and Mark Shannon [44:06] and Mark especially is a longtime expert [44:09] on uh faster Python virtual machines. Uh [44:14] so I'm very excited that uh we're going [44:17] to uh contribute as core developers and [44:21] as Microsoft employees or contractors [44:25] uh directly to CPython. [44:28] Uh we've contributed a few small things [44:32] to Python 3.10 but 3.10 just went into [44:36] beta a few weeks before we sort of [44:40] launched our initiative officially. [44:43] Uh so now we feel we have about a year [44:46] to prove that we can actually uh [44:50] move the needle on Python performance. [44:52] Uh and 3.11 will be much faster than uh [44:56] 3.10. And it's interesting this the sort [44:59] of making Python faster has also uh [45:03] attracted the attention of groups [45:04] elsewhere. There is a team at Facebook [45:06] who just open sourced their efforts [45:09] mostly focused on Python 3.8. [45:12] Uh there are a few ex Dropbox people uh [45:16] who work on a thing called Piston. They [45:20] had Piston version one was a Dropbox [45:22] product that was open sourced. Piston [45:24] version version two was just open [45:27] sourced is based on Python 3.8 again. Uh [45:31] I know there are a few people in other [45:33] places that haven't uh come out and said [45:36] so publicly. Oh yeah, there's also uh [45:41] uh Anthony Shaw [45:44] uh who is a developer advocate at [45:46] Microsoft uh who in his spare time I [45:49] think after after completing a book on [45:53] uh Python CPython internals which I can [45:56] recommend to anyone who wants to get [45:58] going with hacking on CPython. uh he [46:01] decided to teach himself more about [46:03] virtual machines and uh just in time [46:05] compilers and he picked up a project [46:08] named pigeon. [46:10] I think it's spelled p y [46:13] j io n [46:16] uh [46:17] which is a a legit compiler for python [46:21] based on uh the net framework. [46:25] So making C Python faster or making [46:27] Python faster is sort of [46:31] suddenly [46:32] back back on the front page of the news [46:35] I would say and I hope that uh with my [46:37] team I'll be able to uh [46:40] uh contribute some to that field [46:42] which feels like I do know something [46:44] about that area. [46:46] Yes. And we are so glad to to hear that [46:49] this it sounds very very exciting as a [46:52] plan to have at Microsoft and also I [46:54] really like you know the fact that uh [46:56] there is interest from other teams at [46:58] other companies in the community. So [47:00] that's that's that's great to to hear. [47:03] So there are a lot of people that are [47:05] actually asking uh the same question [47:07] that is there going to be a Python 4? Uh [47:11] I think that probably the most [47:13] interesting question there's going to be [47:15] like next version of Python. I'm not [47:17] sure if it's going to be Python 4. Uh [47:20] and if you want just to to share a [47:22] little bit more about what are going to [47:25] be like the the most important changes [47:28] if they're going to be any any important [47:30] changes. [47:32] Okay. Okay. Well, so Python 4 at this [47:36] point whenever Python 4 is mentioned in [47:39] the core development team, [47:42] it is very much as a joke. [47:45] Uh we've learned our lesson uh from [47:49] Python 3 versus 2. [47:52] And so it's it's almost taboo to talk [47:55] about a Python 4 in a serious sense. And [47:59] most of the time, uh, when people say, [48:01] "Oh, we'll do that in Python 4," [48:04] everyone is in on the joke. And, uh, [48:06] it's just a funny way of saying that [48:08] will never happen. [48:10] Uh, I'm sorry. [48:14] Uh, [48:15] so, [48:17] Python has has point releases and so we [48:20] have we've currently the most re the [48:23] most current version is Python 3.9. The [48:27] version that just went into beta, we've [48:29] had like alpha since the beginning of [48:31] the year and the sort of final release [48:34] date is going to be October will be [48:36] 3.10. [48:38] Uh, and we now have a strict annual [48:41] release schedule. So, a year after that [48:44] will be 3.11 and after that will be 3.12 [48:47] and so on and so forth. And we can go up [48:50] to 3.99 before we have to uh add another [48:55] digit. Yeah, [48:57] but going from one digit to two digits [48:59] was definitely uh not completely [49:01] trivial, but still much better than [49:03] going from three to four. So, will there [49:06] ever be a Python 4 uh and and how will [49:11] it be different? [49:13] I don't know. the the sort of the the [49:16] speeding up for Python is just going to [49:20] be incremental [49:21] and it will not be I mean it will just [49:24] like some speed new speed will be coming [49:27] in 3.11 and then we'll speed it up more [49:30] in 3.12 and then we will speed it up [49:32] more in 33 [49:34] and so on. [49:37] Uh [49:39] I could imagine that at some point uh we [49:44] are forced to to abandon [49:48] uh certain binary or API compatibility [49:53] uh for C extensions. [49:56] Okay. [49:56] Uh we might want to uh change the way [50:01] garbage collection is handled. Currently [50:03] it's done through reference counting. [50:06] Uh the reference counting machinery is [50:09] pretty pretty sort of public and [50:12] directly accessible by uh third party [50:15] extensions. [50:17] Uh which makes it very hard to change [50:20] the [50:21] any any aspect almost of the memory [50:24] management. [50:26] Uh [50:28] the global interpreter lock is also [50:30] something that people have been hoping [50:32] to get rid of for a very long time. [50:35] Uh the last attempt uh was by Larry [50:40] Hastings, the Galctomy. [50:42] I think he's he's given up on that. I [50:45] haven't heard a status update in a long [50:47] time. And Larry seems to have moved on [50:49] to other hobbies [50:51] in still in the Python world, of course. [50:54] Uh so but if there was a significant [51:00] incompatibility for C extensions with [51:03] without changing [51:06] the language itself [51:09] uh and and if we were to be able to get [51:12] rid of the gill [51:15] if one or both of those events were to [51:18] happen we probably would be forced to [51:20] call it 4.0 O [51:23] because of the compatibility issues at [51:26] the the sort of the C extension level. [51:31] I see. Yeah. [51:32] Uh the the I think the current plan for [51:35] getting rid of the gill is actually very [51:37] different. Uh we're also and my [51:40] colleague Eric Snow is also working on [51:42] that. Uh there is a project called [51:45] multiple sub interpreters [51:48] uh which is a feature that we've sort of [51:50] had for a long time but uh it had [51:53] various issues [51:55] and slowly we seem to be migrating to a [51:59] version of multiple sub interpreters [52:01] where there's no shared data between the [52:03] sub interpreters at all except that they [52:06] all live in the same process [52:08] and uh [52:10] you can switch between them very [52:12] efficiently. [52:14] And at that point on once each sub [52:16] interpreter has its own global [52:18] interpreter lock [52:20] uh we will have a different approach to [52:23] to sort of using all the cores that you [52:26] need because you can just spin off [52:27] worker threads in a sense except worker [52:30] sub interpreters. [52:32] I see. uh and that's that's probably a [52:34] more effective model than sort of uh [52:38] multiple threads with shared everything [52:41] uh like we have in Java or uh C++. [52:45] So that in it that approach to getting [52:48] rid of the gill would not require uh [52:51] reumbering the version of the language. [52:53] So then the only thing that really would [52:56] require us to sort of declare an a sort [52:59] of major incompatibility event would be [53:02] other changes in the C API. And I [53:09] I personally think that we can actually [53:11] just gradually make those changes over [53:14] time, deprecate things slowly, uh offer [53:18] a much more gradual upgrade path to [53:22] important uh third party extensions like [53:25] NumPy and PyTorch and TensorFlow and [53:28] Panda. So again, [53:32] I'm I'm not thrilled about the idea of [53:35] of Python 4 and nobody in the core dev [53:39] team really is. So probably there never [53:42] will be a 4.0 and will just [53:46] keep numbering uh until 3.33 [53:50] at least. [53:51] Yeah. And that makes totally sense to [53:53] me. Um okay so uh I know that we are [53:58] about time so I would love to conclude [54:00] this wonderful conversation actually [54:02] with a with a question that is a little [54:05] bit different uh that is about your [54:08] hobbies like beside Python do you have [54:11] any other hobbies that you know uh [54:13] people can can know a little bit more [54:18] uh the human interest question yeah well [54:21] it's sort of I I like reading Uh, I [54:24] mean, I'm a very boring person. Uh, I [54:28] like my family. Uh, [54:31] when our son was born 19 years ago, uh, [54:34] I posted a birth announcement on the [54:37] Python mailing list. I wouldn't do that [54:38] anymore. Uh, we're we're more private [54:42] now. Uh, [54:46] I do like reading science fiction and [54:48] fantasy. Uh, I like watching shows in [54:53] that area, especially uh with our [54:56] teenager who is now 19 and wants to be a [55:01] okay, I can I can admit that uh Orla [55:04] wants to be a bass player in a male [55:07] band. [55:08] So that's that's like the career choice [55:11] that is sort of most different from uh [55:15] what his parents are doing. [55:19] which is very typical and I I fully [55:21] support him in that. But more about [55:24] myself, uh uh I like to hike. I like to [55:29] uh go on bike rides. Nothing very [55:31] strenuous. I have a friend who [55:33] occasionally uh rides his bike across [55:35] the United States. I could never do a [55:37] thing like that. That's that's like [55:39] that's impressive. [55:40] Amazing. Yeah. Yeah. [55:43] Uh, I I go for a two-hour bike ride and [55:47] uh my spirits have been lifted and uh [55:50] then I lift my bike onto the the bike [55:53] rack on the back of the car and we drive [55:54] home. That's that's how I like to do it. [55:58] That's that sounds very very nice. [56:01] Especially, you know, with a with a good [56:02] weather that you have in California. [56:05] Oh, yeah. That we love it here. [56:08] We're we're really very happy. [56:10] Perfect. So unfortunately we are at time [56:14] and I personally really really enjoyed [56:16] this conversation. I learn a lot more [56:19] about you know Python and yourself. So [56:22] thank you so much again for for joining [56:25] us. [56:25] Thank you. Thank you. You've you've [56:27] you've been a very good interviewer. [56:30] I'm glad to hear that. And also I want [56:33] to thank you know the the rest of the [56:35] guest. Thank you all for uh coming and [56:39] uh thank you Gido again. It would be it [56:41] would be very nice to keep in touch and [56:43] learn more about your Python projects at [56:46] Microsoft. [56:48] Of course. [56:49] Yeah. Bye bye everyone. Thank you again. [56:53] Bye everyone.