Lex Fridman PodcastGuido van Rossum: Python | Lex Fridman Podcast #6
EVERY SPOKEN WORD
125 min read · 24,701 words- 0:00 – 15:00
The following is a…
- LFLex Fridman
The following is a conversation with Guido van Rossum, creator of Python, one of the most popular programming languages in the world. Used in almost any application that involves computers, from web backend development to psychology, neuroscience, computer vision, robotics, deep learning, natural language processing, and almost any subfield of AI. This conversation is part of MIT course on Artificial General Intelligence, and the Artificial Intelligence podcast. If you enjoy it, subscribe on YouTube, iTunes, or your podcast provider of choice, or simply connect with me on Twitter @lexfridman, spelled F-R-I-D. And now, here's my conversation with Guido van Rossum. You were born in the Netherlands in 1956. Your parents and the world around you was deeply impacted by World War II, as was my family from the Soviet Union. So with that context-
- GRGuido van Rossum
Well...
- LFLex Fridman
... what is your view of human nature? Are some humans inherently good and some inherently evil, or do we all have both good and evil within us?
- GRGuido van Rossum
Ouch. (laughs) I did not expect, uh, such a deep one. I, I guess we all have good and evil potential in us, and a lot of it depends on circumstances and context.
- LFLex Fridman
Out of that world, at least on the Soviet Union side in Europe, sort of out of suffering, out of challenge, out of that kind of, uh, set of traumatic events often emerges beautiful art, music, literature. In a interview I read or heard you said you enjoy Dutch literature s- when, when you were a child.
- GRGuido van Rossum
Mm-hmm.
- LFLex Fridman
Can, can you tell me about the books that had an influence on you in your childhood?
- GRGuido van Rossum
Well, wes- as a teenager, my favorite writer was... My favorite Dutch author was a guy named Willem Frederik Hermans.
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
Whose writing, certainly his early novels were all about sort of, uh, ambiguous things that happened during World War II.
- LFLex Fridman
Okay.
- GRGuido van Rossum
I think he was a young adult during that time, and he wrote about it a lot, and, and very interesting, very good books I thought, I think. And-
- LFLex Fridman
In a non-fiction way?
- GRGuido van Rossum
No, it was all fiction, but it was very much set in, in the ambiguous world of resistance against the Germans, where often you couldn't tell whether someone was truly in the resistance or really a spy for the Germans, and, and some of the characters in his novels sort of crossed that line, and you never really find out what exactly happened.
- LFLex Fridman
And in his novels, there was always a good guy and a bad guy. Is it the nature of good and evil? Is it-
- GRGuido van Rossum
Uh...
- LFLex Fridman
... clear there's a hero?
- GRGuido van Rossum
It's... No, his heroes are often more... His main characters are often anti-heroes.
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
And, and, and so they're, they're not, not very heroic. They're, they're often... They, they fail at some level to accomplish their lofty goals.
- LFLex Fridman
And looking at the trajectory through the rest of your life, has literature, Dutch or English or translation, had an impact outside the technical world that you existed in?
- GRGuido van Rossum
Hmm. I still read novels. I don't think that it impacts me that much directly.
- LFLex Fridman
Doesn't impact your work? It just, it's a...
- GRGuido van Rossum
It's a separate world. My work is, is highly technical and sort of the, the world of art and literature doesn't really directly have any bearing on it.
- LFLex Fridman
You don't think there's a creative element to the design? You know, some would say-
- GRGuido van Rossum
Well, th-
- LFLex Fridman
... art, design of a language is art.
- GRGuido van Rossum
Uh... I'm not disagreeing with that. I'm just saying that sort of I don't feel direct influences from more traditional art on my own creativity.
- LFLex Fridman
Right. Of course, you don't feel doesn't mean it's not somehow deeply there in your subconscious. Who know, who knows-
- GRGuido van Rossum
Who knows. Yeah, yeah.
- 15:00 – 30:00
Right. …
- LFLex Fridman
all of them follow and somehow out of this simple rule when you step back and look at what occurs, uh, it's, it's beautiful, there's a, an emergent complexity even though the underlying rules are simple, there's an emergent complexity. Now the funny thing is you've implemented this, and the thing you're commenting on is you're proud of, uh, a hack you did to make it run efficiently. When you're not commenting on, what, like this is, this is a beautiful implementation. Uh, you're not commenting on the fact that there's an emergent complexity that you've, you've, you've coded a simple program and when you step back and you print out the s- following generation after generation, that s- stuff that you may have not predicted would happen is happening.
- GRGuido van Rossum
Right.
- LFLex Fridman
(laughs) And, and was that, is that magic? I mean, that's the magic that all of us feel when we program. When, when you create a program and then you run it, and whether it's Hello World or it shows something on screen if there's a graphical component, are you seeing the magic in the mechanism of creating that?
- GRGuido van Rossum
I think I went back and forth. Uh, as a student we had an incredibly small budget, uh, of computer time that we could use. It was actually measured. I once got in trouble with one of my professors because I had overspent the department's budget.
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
It's a different story but, so, I, I actually wanted the efficient implementation because I also wanted to explore what would happen with a larger number gener- of generations and a larger sort of size of the, of the board. And so once the im- the implementation was flawless, uh, I would feed it different patterns and then I think maybe there was a, a follow-up article where there were patterns that, that were like gliders.
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
Patterns that repeated themselves after a number of generations, but, uh, translated one or two positions to the right or up or something like that.
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
Uh, and there were f- I remember things like glider guns. Well, you can, you can Google Conway's Game of Life, it is still a, people still go ah and oo over it.
- LFLex Fridman
For a reason, because it's not really well-understood why, I mean this is what Stephen Wolfram is obsessed about, right? (laughs)
- GRGuido van Rossum
Yeah, okay.
- LFLex Fridman
It's, uh, he's just, the, the, we don't have the mathematical tools to describe the kind of complexity that emerges in these kinds of systems-
- GRGuido van Rossum
And, and, yeah.
- LFLex Fridman
... and the only way you can do it is to run it.
- GRGuido van Rossum
I'm not convinced that, that it's sort of a problem that lends itself to, to classic mathematical analysis.
- LFLex Fridman
No, and uh, so one, one theory of how you create an artificial intelligence or an ar- artificial being is you kind of have to, same with the Game of Life, you kind of have to create a universe and let it run, that creating it from scratch in a design way, in a, it's g- you know, coding up a Python program that creates, uh, a fully intelligent system may be quite challenging, that you might need to create a universe, just like the Game of Life is, uh-
- GRGuido van Rossum
... could- Well, you might have to experiment with a lot of different universes before there, there is a set of rules that doesn't essentially always just end up repeating itself in a, in a trivial way.
- LFLex Fridman
Yeah, and, and, uh, St- Steve Wolfram, uh, Stephen Wolfram works with these simple rules, says that it's kind of surprising how quickly you find rules that create interesting things. You shouldn't be able to, but somehow you do. And so maybe our universe is laden with, uh, with rules that will create interesting things. They might not look like humans, but, uh, you know, emergent phenomena that's interesting may not be as difficult to create as we think.
- GRGuido van Rossum
Sure.
- LFLex Fridman
But let me sort of ask, at that time, you know, some of the world, at least in popular press, uh, was kind of captivated, perhaps at least in America, by the idea of artificial intelligence. That, that these computers would be able to think pretty soon. And-
- GRGuido van Rossum
Yeah. (laughs)
- LFLex Fridman
... did that touch you at all? Did that... In science fiction or in reality? Uh, in-
- GRGuido van Rossum
Uh.
- LFLex Fridman
... in any way?
- GRGuido van Rossum
I didn't really start reading science fiction until much, much later. I think as a teenager, I, I read maybe one bundle of science fiction stories.
- LFLex Fridman
Was it in the background somewhere, like in your thoughts or-
- GRGuido van Rossum
The, the, the sort of, the using computers to build something intelligent always felt to me... Because I had s- I felt I had so much understanding of what actually goes on inside a computer-
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
... I, I knew how many bits of memory it had and how difficult it was to program, and sort of... I didn't believe at all that, that you could just build something intelligent out of that, that, that would really sort of satisfy my definition of intelligence. I think the most, the most influential thing that I read, uh, in my early 20s was Godel, Escher, Bach.
- 30:00 – 45:00
(laughs) …
- GRGuido van Rossum
the dog clearly knows... I mean, I'm not a dog owner but I, I have friends who have dogs. The dogs clearly know what the humans around them are going to do, or at least they have a model of what those humans are going to do and they learn. The dog... Some dogs know when you're going out and they want to go out with you, they're sad when you leave them a- alone, they cry. (laughs)
- LFLex Fridman
(laughs)
- GRGuido van Rossum
Uh, they're afraid because they were mistreated when they were younger, uh...... we, we don't assign sort of consciousness to dogs, or at least not, not all that much. But I, I also don't think they have none of that. So, I think it's, it's ... Consciousness and intelligence are not all or nothing.
- LFLex Fridman
It's a spectrum. It's really interesting. But in returning to programming languages and the way we think about building these kinds of things, about building intelligence, building consciousness, building artificial beings, so I think one of the exciting ideas came in the 17th century, and with, uh, Leibniz, Hobbes, Descartes, where there's this feeling that you can convert all thought, all reasoning, all the thing that we find very special in our brains, you can convert all of that into logic. So, you can formalize it, form a reasoning. And then once you formallize everything, all of knowledge, then you can just calculate, and that's what we're doing with our brains is we're calculating. So, there's this whole idea that we (laughs) , that this is possible, that this, we can actually program-
- GRGuido van Rossum
But they weren't aware of the concept of pattern matching in the sense that we are aware of it now. They sort of thought you ... They, they had discovered incredible bits of mathematics, like Newton's calculus.
- LFLex Fridman
Yeah.
- GRGuido van Rossum
And their sort of idealism, their, their sort of extension of what they could do with logic and math sort of went along those lines. And they thought there, there's like, yeah, logic. There's, there's like a, a bunch of rules and a bunch of input. They didn't realize that how you recognize a face is not just a bunch of rules, but it's a shit ton of data. Plus, a, a circuit that, that sort of interprets the visual clues and the context and everything else, and somehow can massively parallel pattern match against stored rules. I mean-
- LFLex Fridman
But those-
- GRGuido van Rossum
... if I see you tomorrow here in front of the Dropbox office, I might recognize you. If I-
- LFLex Fridman
Even if I'm wearing a different shirt?
- GRGuido van Rossum
Yeah. But if I, if I see you tomorrow in a coffee shop in Belmont, I might have no idea, or-
- LFLex Fridman
Yeah.
- GRGuido van Rossum
... that it was you, or on the beach or whatever.
- LFLex Fridman
(laughs)
- GRGuido van Rossum
(laughs) I make those kind of mistakes myself all the time.
- LFLex Fridman
I'll have to go to the beach. Okay. (laughs)
- GRGuido van Rossum
I see someone that I only know as like, "Oh, this person is a colleague of my wife's."
- LFLex Fridman
Yeah.
- GRGuido van Rossum
And then I see them at the movies, and I don't recognize them.
- LFLex Fridman
But do you see those ... You call it pattern matching. Do you see that rules is, uh, unable to encode that? To you, you ... Everything you see, all the pieces of information, you look around this room, I'm wearing a black shirt, I have a certain height, I'm a human. All these you can ... There's probably tens of thousands of facts you pick up moment by moment about this scene. You take 'em for granted and you accumulate, uh, uh, aggregate them together to understand the scene. You don't think all of that could be encoded to where at the end of the day, you can just put it all on the table and calculate? What?
- GRGuido van Rossum
I don't know what that means. I mean, yes, in the sense that there is no, there, there is no actual magic there. But there are enough layers of abstraction from sort of from the effects as they enter my eyes and my ears to the understanding of the scene that, that so ... I don't think that, that AI has really covered enough of, of, of that distance. It's like if you take a human body and you realize it's built out of atoms, well, that, that is a uselessly reductionist view, right?
- LFLex Fridman
Right.
- GRGuido van Rossum
The body is built out of organs. The organs are built out of cells. The cells are built out of proteins. The proteins are built out of amino acids. The amino acids are built out of atoms, and then you get to quantum mechanics. (laughs)
- LFLex Fridman
(laughs) So, that's a very pragmatic view. I mean, obviously as an engineer, I agree with that kind of view, but I also, you also have to consider the, the, well, the Sam Harris view of, well, intelligence is just information processing, that you just, like you said, you take in sensory information and you, and you do some stuff with it and you come up with actions that are intelligent.
- GRGuido van Rossum
(laughs) That make, he makes it sound so easy. I don't know who Sam Harris is, so.
- LFLex Fridman
Uh, f- oh, uh, well, he's a philosopher. So, like this is how philosophers often think, right? I-M-E- and essentially that's what Descartes was is, wait a minute, if there is, like you said, no magic ... So, he basically says it doesn't appear like there's any magic, but we know so little about it that it might as well be magic. So, j- just because we know that we're made of atoms, just because we know we're made of organs, the fact that we know very little how to get from the atoms to organs in a way that's recreatable means it, that it, uh, you shouldn't get too excited just yet about the fact that you figured out that we're made of atoms.
- GRGuido van Rossum
Right. And, and, and the same about taking facts as our, our sensory organs take them in and turning that into reasons and actions. That sort of there are a lot of abstractions that we haven't quite figured out how to, how to deal with those. I mean, I ... Some- sometimes I don't know if I can go on a tangent or not.
- LFLex Fridman
Please.
- GRGuido van Rossum
Uh-
- LFLex Fridman
We'll drag you back in. (laughs)
- 45:00 – 1:00:00
Well, that would be…
- LFLex Fridman
so kind of what you're referring to is the traditional, traditional (laughs) ... The, the algorithm, the concept of an algorithm, something that's ... There it's clear, you can read it, you understand it, you can prove its functioning. It's kind of software 1.0. And what software 2.0 is, is exactly what you described which is you have neural networks which is a type of machine learning that you feed a bunch of data and that neural network learns to do a function. All you specify is the inputs and the outputs you want and you can't look inside. You can't analyze it. All you can do is train this function to map the inputs to the outputs by giving a lot of data. In that sense, programming becomes getting a lot of clean ... Getting a lot of data. That's what programming is, uh, in this, in this-
- GRGuido van Rossum
Well, that would be programming 2.0.
- LFLex Fridman
2.0. Tu- programming 2.0. So-
- GRGuido van Rossum
T- and I, I wouldn't call it that programming. It- it's just a different activity, just like building organs out of cells is not called chemistry.
- LFLex Fridman
(laughs) Well, so le- let's just, uh-
- GRGuido van Rossum
But, but true.
- LFLex Fridman
... step back and think sort of more generally, I- of course. But, you know, it's like a ... As a parent teaching, teaching your kids things can be called programming. In that same sense that, that's how programming is being used. You're providing them data, examples, uh, use cases so imagine writing a function not by, uh ... Not with for loops and, uh, clearly readable text but more saying, "Well, here's a lot of examples of what this function should take and here's a lot of examples when it takes those functions it should do this." And then figure out the rest. So that's this 2.0 concept. And l- so the question I have for you is- is like-
- GRGuido van Rossum
Uh.
- LFLex Fridman
... it's a very fuzzy way ... This is the reality of a lot of these pattern recognition systems and so on.
- GRGuido van Rossum
Mm-hmm.
- LFLex Fridman
It's a fuzzy way of "programming." What do you think about this kind of world? Uh, should, should it be called something totally different, uh, than, uh, programming? It's, it's ... Like if you're a software engineer, does that mean your, your designing systems that are very ... can be systematically tested, uh, evaluated, they have a very specif- specification, and then this other fuzzy software 2.0 world, machine learning world, that sh- that's something else totally or is there some intermixing that's possible?
- GRGuido van Rossum
Well, the question is probably only being asked because we, we don't quite know what that software 2.0 actually is. And it sort of I think there is a truism that every task that AI has, has tackled in the past at some point we realized how it was done and then it was no longer considered part of artificial intelligence because it was no longer necessary to, to use that term. It was just, "Oh, now he- we know how to do this." And a new field of science or engineering has been developed. And I don't know if sort of every form of learning or sort of controlling computer systems should always be called programming. So I d- I don't know, maybe I'm focused too much on the terminology. I ... But I expect that-... that there just will be different concepts where people with, sort of, different education and a different model of what they're trying to do, uh, will, will develop those concepts.
- LFLex Fridman
Yeah. And I guess if you could comment on another way to put this concept is, I think, I think the kind of functions that neural networks provide is things... As opposed to being able to upfront prove that this should work for all cases you throw at it, all you're able... It's the worst-case analysis versus average-case analysis. All you're able to say is it, it seems on everything we've tested to work 99.9% of the time, but we can't guarantee it and it, it fails in unexpected ways. We can't even give you examples of how it fails in unexpected ways. But it's like really good most of the time.
- GRGuido van Rossum
Yeah, but that's-
- LFLex Fridman
Is there no room for that in current ways we think about programming?
- GRGuido van Rossum
Uh... Programming 1.0 is actually sort of getting to that point too, where the sort of the ideal of a bug-free program has been abandoned long ago by most software developers. We only care about bugs that manifest themselves often enough to be annoying, and we're willing to take the occasional crash or outage or incorrect result-
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
... uh, for granted because we can't possibly... We, we don't have enough programmers to make all the code bug-free, and it would be an incredibly tedious business. And if you try to throw formal methods at it, it gets, it becomes even more tedious. So every once in a while, the user clicks on a link and, and somehow they get an error. And the average user doesn't panic, they just click again and see if it works better the second time, which often magically it does. Or they go up and they try some other way of performing their task. So that's sort of an end-to-end recovery mechanism. And inside systems, there is all sorts of retries and timeouts and fallbacks, and I imagine that, that sort of biological systems are even more full of that because otherwise they wouldn't survive.
- LFLex Fridman
Do you think, uh, programming should be taught and thought of as exactly what you just said? 4- I, I come from this kind of, um, you're, you're almost denying that fact always.
- GRGuido van Rossum
In, in sort of basic programming education, the sort of the programs you're, you're having students write are so small and simple that if there is a bug, you can always find it and fix it. Because the sort of programming as it's being taught in some even elementary, middle schools, in high school, introduction to programming classes in college typically, it's programming in the small.
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
Very few classes sort of actually teach software engineering, building large systems. I mean, every summer here at Dropbox, we have a large number of interns. Every tech company, uh, on the West Coast has the same thing. These interns are always amazed because this is the first time in their life that they see what goes on in a really large software development environment. And everything they've learned in college was almost always about a much smaller scale. And somehow that difference in scale makes a qualitative difference in how you, how you do things and how you think about it.
- LFLex Fridman
If you then take a few steps back into decades, um, '70s and '80s, uh, when you were first thinking about Python or just that world of programming languages, did, did you ever think that there would be systems as large as underlying Google, Facebook and Dropbox? Did you... When you were thinking about Python-
- GRGuido van Rossum
I was actually always caught by surprise by sort of this-
- LFLex Fridman
Every stage of it.
- GRGuido van Rossum
Yeah, pretty much every stage of computing.
- LFLex Fridman
So maybe just because, um, you've spoken in other interviews, but I think the evolution of programming languages are fascinating and, and it's... Especially because it leads, from my perspective, towards greater and greater degrees of intelligence. Uh, I, I learned the first programming language I played with in, in Russia was, um, with the turtle, uh, Logo.
- GRGuido van Rossum
Logo, yeah.
- LFLex Fridman
And, um, and, and if you look, I just have a list of programming languages, all of which I know, played with a little bit, and they're all beautiful in different ways from Fortran, COBOL, Lisp, ALGOL 60, BASIC, Logo again, C, um, as a few... Uh, object-oriented came along in the '60s, Simula, Pascal, Smalltalk, all of that leaves-
- GRGuido van Rossum
Those are all the classics.
- 1:00:00 – 1:15:00
There are different tasks…
- LFLex Fridman
And how did you try to design it into the language?
- GRGuido van Rossum
There are different tasks and as a programmer, it's, it's useful to have different tools available that sort of are suitable for different tasks.
- LFLex Fridman
Right.
- GRGuido van Rossum
So I still write C code, I still write shell code, but I write most of my s- my things in Python. Uh... Why do I still use those other languages? Because sometimes the task just demands it. And, well, I would say most of the time the task actually demands a certain language because the task is not, "Write a program that solves problem X from scratch," but it's more like, "Fix a bug in existing program X," or, "Add a small feature to an existing large program." Uh... But even if, if you sort of...... if you're not constrained in your choice of language by context like that, uh, there is still the fact that if you write it in a certain language, then you sort of... You- you have this balance between how long does it time t- does it take you to write the code-
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
... and how long does the code run?
- LFLex Fridman
Right.
- GRGuido van Rossum
And when you're in sort of in the phase of exploring solutions, you often spend much more time writing the code than running it because every time you've sort of, you've run it, you see that the output is not quite what you wanted, and you spend some more time coding. Uh, and a language like Python just makes that iteration much faster because there are fewer details. There is a large library, uh, sort of there are fewer details that- that you have to get right before your program compiles and runs. Uh, there are libraries that du- do all sorts of stuff for you. So, you can sort of very quickly take a bunch of existing components, put them together, and, uh, get your prototype application running. Just like when I was building electronics, I was using a breadboard most of the time, so I- I had this, like, sprawled out circuit that-
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
... if you shook it, it would stop working because it was not put together very well, but it functioned, and all I wanted was to see that it worked and then move on to the next- next schematic or design or add something to it. Once you've sort of figured out, "Oh, this is the perfect design for my radio or light sensor," or whatever, then you can say, "Okay, how do we design a PCB for this? How do we solder the components in a small space? How do we make it so that it is robust against, uh, say, voltage fluctuations, uh, or mechanical, uh, disruption?" I mean, I know nothing about that when it comes to designing electronics, but I know a lot about that when it comes to- to writing code.
- LFLex Fridman
So, the initial- the initial steps are, uh, efficient, fast, and there's not much stuff that gets in the way, but you're kind of describing, um, from a... Like Darwin described the evolution of species, right? You d- you're- you're observing of what is about- Mm-hmm. ... true about Python. Now, if you take a step back, if the art of... If the act of creating languages is art and you had three months to do it, (laughs) initial steps.
- GRGuido van Rossum
Mm-hmm.
- LFLex Fridman
Ho- so you just specified a bunch of goals, uh, sort of things that you observe about Python, perhaps you had those goals, but how do you create the rules, the syntactic structure, the- the features that result i- in those? So, I have f- f... In the beginning, and I have follow-up questions about through the evolution of Python, too, but in the very beginning, when you're sitting there creating the- the lexical analyzer, whatever, wh-
- GRGuido van Rossum
Evolution was still a big part of it because I- I sort of... I said to myself, "I don't want to have to design everything from scratch. I'm going to borrow features from other languages that I like."
- LFLex Fridman
Oh, interesting. So, you basically-
- GRGuido van Rossum
So-
- LFLex Fridman
Exactly. You first observed-
- GRGuido van Rossum
Yeah.
- LFLex Fridman
... what you like.
- GRGuido van Rossum
Yeah. And so, that's why if you're 17 years old and you want to sort of create a programming language, you're not going to be very successful at it because you have no experience with other languages. Whereas I was in my, let's say, mid-30s, uh, I had written parsers before, so I had worked on the implementation of ABC. I had spent years debating the design of ABC with its authors, its cr- the- the- with its designers. I had nothing to do with the design. It was designed fully as it was- w- ended up being implemented when I joined the team.
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
But, so you borrow ideas and concepts and very concrete sort of local rules from different languages, like the indentation and certain other syntactic features from ABC, but I chose to borrow string literals and how numbers work from C and, um, various other things.
- LFLex Fridman
So, and then if you take that further, so you had... You've had this funny sounding but I think surprisingly accurate and... Or at least practical, uh, title of b- benevolent dictator for life, for quite, you know, for the last three decades or whatever. Or no, not the actual title, but functionally speaking. Uh, so you had to make decisions, design decisions. Can you maybe, uh... Let's take Python 2, so Python... Releasing Python 3 as an example.
- GRGuido van Rossum
Mm-hmm.
- LFLex Fridman
It's not backward compatible to Python 2 in- in ways that a lot of people know. So, what was that deliberation, discussion, decision like? Yeah, what was the psychology of that experience? Do you regret any aspects of how that experience undergone, uh, that-
- GRGuido van Rossum
Well, s- yeah. So, it was a group process, really. At- at- at that point, even though I was BDFL in NIME, in name, and- and-... certainly, everybody sort of respected my, my position as the creator and, and the current sort of owner of the language design. I was looking at everyone else for feedback. Sort of Python 3.0, in some sense, was sparked by other people in the community, uh, pointing out, "Oh, well, there are a few issues that sort of bite users over and over. Can we do something about that?"
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
And for Python 3, we took a number of those Python warts, as they were called at the time, and we said, "Can we try to sort of make small changes to the language that address those warts?" And we had sort of, in the past, we had always taken backwards compatibility very seriously, and so many Python warts in earlier versions had already been resolved because they could be resolved while maintaining backwards compatibility or sort of using a very gradual path of evolution of the language in a certain area. And so we were stuck with a number of warts that were widely recognized as problems, not like roadblocks, but nevertheless, sort of things that some people trip over, and you know that's, that's always the same thing that, that people trip over when they trip. And we could not think of a backwards compatible way of resolving those issues.
- LFLex Fridman
But it's still an option to not resolve the issues, right?
- GRGuido van Rossum
And so yes, for, for a long time, we had sort of resigned ourselves to, "Well, okay, the language is not going to be perfect in this way, in that way, in that way." And we sort of, certain of these... I mean, there are still plenty of things where you can say, "Well, that's, that particular detail is better in Java, or in R, or in Visual Basic, or whatever."
- 1:15:00 – 1:26:51
The on your own…
- GRGuido van Rossum
was, because five minutes later, I read that se- uh, link to my message back on Twitter, where people were already discussing on Twitter, "Guido resigned as the BDFL." (laughs) And I had, I had posted it on an internal forum that I thought was only read by core developers. So I thought I would at least have one day before the news would sort of get out.
- LFLex Fridman
The on your own aspects had also an element-
- GRGuido van Rossum
Mm-hmm.
- LFLex Fridman
... of quite... it was quite a powerful element of the uncertainty that lies ahead. But c- can you also just briefly talk about, you know, like for example, I play guitar as, as a hobby for fun, and whenever I play, people are super positive, super friendly. They're like, "This is awesome. This is great." But sometimes I enter as an s- outside observer, I enter the programming community, and there seems to some- sometimes be camps on whatever the topic. And, and the two camps, the two or plus camps, are often pretty harsh at criticizing the opposing camps. As, as an onlooker. I may be totally wrong on this.
- GRGuido van Rossum
Yeah. Ho-
- LFLex Fridman
But what do you think is the psych-
- GRGuido van Rossum
Holy wars are, are sort of a favorite activity in the programming community.
- LFLex Fridman
And what is the psychology behind that? Is, is that okay for a healthy community to have? Is that, is that a productive force ultimately for the evolution of a language? Uh...
- GRGuido van Rossum
Well, if everybody is patting each other on the back and never telling the truth-
- LFLex Fridman
Yes.
- GRGuido van Rossum
... uh, it would not be a good thing. I think there is a middle ground where sort of being nasty to each other is not okay. But there, there is, is, is a middle ground where there is healthy, ongoing criticism and feedback that is very productive. And you, you... I mean, at, at every level you see that. I mean, someone proposes to fix a very small issue in a code base, uh, chances are that some reviewer will sort of respond by saying, "Well, actually you can do it better the other way."
- LFLex Fridman
Right.
- GRGuido van Rossum
Uh, when it comes to deciding on the future of the Python core developer community, we now have, I think, five or six competing proposals for a constitution.
- LFLex Fridman
So that future, do you have a fear of that future? Do you have a hope for that future? H-
- GRGuido van Rossum
I'm very confident about that future. It... By and large, I think that the debate has been very healthy and productive. Uh, and I actually... When, when I wrote that resignation email, I knew that, that Python was in a very good spot and that the Python core development community, the, the group of 50 or 100 people who sort of write or review most-
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
... of the code that goes into Python, those people get along very well most of the time. Uh, a large number of different areas of expertise are represented, uh, different levels of experience in the Python core dev community, different levels of experience completely outside it in software development in general, large systems, small systems, embedded systems. So I, I felt okay resigning because I knew that, that the community can really take care of itself.
- LFLex Fridman
And out of a grab bag of future feature developments, let me ask if you can comment maybe on all very quickly. Concurrent programming, parallel computing, async IO, these are things that people have, uh, expressed hope, complained about.... whatever have discussed on, on Reddit. AsyncIO, so the parallelization in general. Uh, packaging, s- I, I was totally clueless on this. I just use pip to install stuff, but apparently there's pipenv, poetry. There's these, uh, dependency packaging systems that manage dependencies and so on that are emerging, and there's a lot of confusion about what's, what's the right thing to use. Then also, uh, functional programming. The, the ever, you know-
- GRGuido van Rossum
Mm-hmm.
- LFLex Fridman
... uh, the, the, uh, f- are we going to get more functional programming or not? This kind of, this kind of idea. And, of course, the, uh, the, the GIL is a (laughs) , uh, connected to the parallelization, I suppose, the global interpreter lock problem. Can you just comment on whichever you wanna comment on?
- GRGuido van Rossum
Well, let's take the GIL and parallelization and AsyncIO as one, one topic.
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
I'm not that hopeful that Python will develop into a sort of high concurrency, high parallelism language. That sort of... The, the way the language is designed, the way most users use the language, the way the language is implemented, all make that a pretty unlikely future.
- LFLex Fridman
So you, you think it might not even need to, really the way people use it? It, it, it might not be, uh, something that should be of, of great concern at the moment?
- GRGuido van Rossum
I think, I think AsyncIO is a special case because it sort of allows overlapping I/O and only I/O, and that is, is a sort of best practice of supporting very high throughput I/O, many connections, uh, per second. Uh, I'm not worried about that. I think AsyncIO will evolve. There are a couple of competing packages. We have some very smart people who are sort of pushing us in sort of to make AsyncIO better.
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
Uh, parallel computing, I think that Python is not the language for that. Uh, there are, there are way- ways to work around it, but you sort of... You can't expect to write an algorithm in Python and have a compiler automatically parallelize that. What you can do is use a package like NumPy, and there are a bunch of other-
- LFLex Fridman
Mm-hmm.
- GRGuido van Rossum
... very powerful packages that sort of use all the CPUs available because you tell the package, "Here's the data. Here's the abstract operation to apply over it. Go at it," and then, then we're back in the C++ world. But the, those packages are themselves implemented usually in C++.
- LFLex Fridman
That's right. That's where TensorFlow and all these packages-
Episode duration: 1:26:44
Install uListen for AI-powered chat & search across the full episode — Get Full Transcript
Transcript of episode ghwaIiE3Nd8
Get more out of YouTube videos.
High quality summaries for YouTube videos. Accurate transcripts to search & find moments. Powered by ChatGPT & Claude AI.
Add to Chrome