back to indexGuido van Rossum: Python | Lex Fridman Podcast #6
link |
The following is a conversation with Guido Van Rossum, creator of Python,
link |
one of the most popular programming languages in the world, used in almost any application
link |
that involves computers, from web backend development to psychology, neuroscience,
link |
computer vision, robotics, deep learning, natural language processing, and almost any
link |
subfield of AI. This conversation is part of MIT course on artificial general intelligence
link |
and the artificial intelligence podcast. If you enjoy it, subscribe on YouTube, iTunes,
link |
or your podcast provider of choice, or simply connect with me on Twitter at Lex Friedman,
link |
spelled F R I D. And now here's my conversation with Guido Van Rossum.
link |
You were born in the Netherlands in 1956. Your parents and the world around you was deeply
link |
impacted by World War Two, as was my family from the Soviet Union. So with that context,
link |
what is your view of human nature? Are some humans inherently good and some inherently
link |
evil, or do we all have both good and evil within us?
link |
Ouch, I did not expect such a deep one. I guess we all have good and evil potential in us,
link |
and a lot of it depends on circumstances and context.
link |
Out of that world, at least on the Soviet Union side in Europe, sort of out of suffering,
link |
out of challenge, out of that kind of set of traumatic events, often emerges beautiful art,
link |
music, literature. In an interview I read or heard, you said you enjoyed Dutch literature
link |
when you were a child. Can you tell me about the books that had an influence on you in your
link |
childhood? Well, as a teenager, my favorite writer was, my favorite Dutch author was
link |
a guy named Willem Friedrich Hermans, whose writing, certainly his early novels, were all about
link |
sort of ambiguous things that happened during World War Two. I think he was a young adult
link |
during that time, and he wrote about it a lot and very interesting, very good books, I thought,
link |
I think. In a nonfiction way? No, it was all fiction, but it was very much set in the ambiguous
link |
world of resistance against the Germans, where often you couldn't tell whether someone
link |
was truly in the resistance or really a spy for the Germans, and some of the characters in his
link |
novels sort of crossed that line, and you never really find out what exactly happened.
link |
And in his novels, there's always a good guy and a bad guy, in the nature of good and evil,
link |
is it clear there's a hero? No, his main characters are often antiheroes, and so they're
link |
not very heroic. They fail at some level to accomplish their lofty goals.
link |
And looking at the trajectory through the rest of your life, has literature,
link |
Dutch or English or translation had an impact outside the technical world that you existed in?
link |
I still read novels. I don't think that it impacts me that much directly.
link |
It doesn't impact your work. It's a separate world. My work is highly technical and sort of
link |
the world of art and literature doesn't really directly have any bearing on it.
link |
You don't think there's a creative element to the design of a language's art?
link |
I'm not disagreeing with that. I'm just saying that I don't feel
link |
direct influences from more traditional art on my own creativity.
link |
All right, of course, you don't feel doesn't mean it's not somehow deeply there in your subconscious.
link |
So let's go back to your early teens. Your hobbies were building electronic circuits,
link |
building mechanical models. If you can just put yourself back in the mind of that
link |
young widow, 12, 13, 14, was that grounded in a desire to create a system? So to create
link |
something? Or was it more just tinkering? Just the joy of puzzle solving?
link |
I think it was more the latter, actually. Maybe towards the end of my high school
link |
period, I felt confident enough that I designed my own circuits that were sort of interesting.
link |
Somewhat. But a lot of that time, I literally just took a model kit and followed the instructions,
link |
putting the things together. I mean, I think the first few years that I built electronics kits,
link |
I really did not have enough understanding of electronics to really understand what I was
link |
doing. I could debug it and I could follow the instructions very carefully, which has always
link |
stayed with me. But I had a very naive model of how a transistor works. I don't think that in
link |
those days, I had any understanding of coils and capacitors, which actually was a major problem
link |
when I started to build more complex digital circuits, because I was unaware of the analog
link |
part of how they actually work. And I would have things that the schematic looked, everything
link |
looked fine, and it didn't work. And what I didn't realize was that there was some
link |
megahertz level oscillation that was throwing the circuit off, because I had a sort of,
link |
two wires were too close or the switches were kind of poorly built.
link |
But through that time, I think it's really interesting and instructive to think about,
link |
because there's echoes of it in this time now. So in the 1970s, the personal computer was being
link |
born. So did you sense in tinkering with these circuits, did you sense the encroaching revolution
link |
in personal computing? So if at that point, you're sitting, we'll sit you down and ask you to predict
link |
the 80s and the 90s, do you think you would be able to do so successfully to unroll this,
link |
the process? No, I had no clue. I, I remember, I think in the summer after my senior year,
link |
or maybe it was the summer after my junior year. Well, at some point, I think when I was 18,
link |
I went on a trip to the math Olympiad in Eastern Europe. And there was like, I was part of the
link |
Dutch team. And there were other nerdy kids that sort of had different experiences. And one of
link |
them told me about this amazing thing called a computer. And I had never heard that word.
link |
My own explorations in electronics were sort of about very simple digital circuits. And I,
link |
I had sort of, I had the idea that I somewhat understood how a digital calculator worked. And
link |
so there is maybe some echoes of computers there, but I didn't, didn't, I never made that connection.
link |
I didn't know that when my parents were paying for magazine subscriptions using punched cards,
link |
that there was something called a computer that was involved that read those cards and
link |
transferred the money between accounts. I was actually also not really interested in those
link |
things. It was only when I went to university to study math that I found out that they had a
link |
computer and students were allowed to use it. And there were some, you're supposed to talk to that
link |
computer by programming it. What did that feel like? Yeah, that was the only thing you could do
link |
with it. The computer wasn't really connected to the real world. The only thing you could do was
link |
sort of, you typed your program on a bunch of punched cards. You gave the punched cards to
link |
the operator. And an hour later, the operator gave you back your printout. And so all you could do
link |
was write a program that did something very abstract. And I don't even remember what my
link |
first forays into programming were, but they were sort of doing simple math exercises and just to
link |
learn how a programming language worked. Did you sense, okay, first year of college, you see this
link |
computer, you're able to have a program and it generates some output. Did you start seeing the
link |
possibility of this? Or was it a continuation of the tinkering with circuits? Did you start to
link |
imagine that one, the personal computer, but did you see it as something that is a tool
link |
to get tools like a word processing tool, maybe maybe for gaming or something? Or did you start
link |
to imagine that it could be, you know, going to the world of robotics, like you, you know, the
link |
Frankenstein picture that you could create an artificial being. There's like another entity
link |
in front of you. You did not see it. I don't think I really saw it that way. I was really more
link |
interested in the tinkering. It's maybe not a sort of a complete coincidence that I ended up
link |
sort of creating a programming language, which is a tool for other programmers. I've always been
link |
very focused on the sort of activity of programming itself and not so much what happens with
link |
what happens with the program you write. I do remember, and I don't remember, maybe in my second
link |
or third year, probably my second, actually, someone pointed out to me that there was this
link |
thing called Conway's Game of Life. You're probably familiar with it. I think in the 70s,
link |
I think, as long as you came up with it. So there was a Scientific American column by
link |
someone who did a monthly column about mathematical diversions and also blinking out on the guy's
link |
name. It was very famous at the time and I think up to the 90s or so. And one of his columns was
link |
about Conway's Game of Life and he had some illustrations and he wrote down all the rules
link |
and sort of there was the suggestion that this was philosophically interesting, that that was why
link |
Conway had called it that. And all I had was like the two pages photocopy of that article.
link |
I don't even remember where I got it. But it spoke to me and I remember implementing
link |
a version of that game for the batch computer we were using where I had a whole Pascal program
link |
that sort of read an initial situation from input and read some numbers that said,
link |
do so many generations and print every so many generations and then out would come pages and
link |
pages of sort of things. Patterns of different kinds and yeah. Yeah. And I remember much later
link |
I've done a similar thing using Python, but I sort of that original version I wrote at the time
link |
I found interesting because I combined it with some trick I had learned during my electronics
link |
hobbyist times. I essentially first on paper I designed a simple circuit built out of logic gates
link |
that took nine bits of input, which is the sort of the cell and its neighbors
link |
and produce the new value for that cell. And it's like a combination of a half adder and some
link |
other clipping. No, it's actually a full adder. And so I had worked that out and then I translated
link |
that into a series of Boolean operations on Pascal integers where you could use the integers as
link |
bitwise values. And so I could basically generate 60 bits of a generation in like eight instructions
link |
or so. Nice. So I was proud of that. It's funny that you mentioned so for people who don't know
link |
Conway's Game of Life is a cellular automata where there's single compute units that kind of
link |
look at their neighbors and figure out what they look like in the next generation based on the
link |
state of their neighbors and this is deeply distributed system in concept at least. And then
link |
there's simple rules that all of them follow and somehow out of the simple rule when you step back
link |
and look at what occurs, it's beautiful. There's an emergent complexity, even though the underlying
link |
rules are simple, there's an emergent complexity. Now the funny thing is you've implemented this
link |
and the thing you're commenting on is you're proud of a hack you did to make it run efficiently.
link |
When you're not commenting on what like this is a beautiful implementation.
link |
You're not commenting on the fact that there's an emergent complexity
link |
that you've quoted a simple program and when you step back and you print out the
link |
following generation after generation, that's stuff that you may have not predicted what
link |
happened is happening. And is that magic? I mean that's the magic that all of us feel when we
link |
program. When you create a program and then you run it and whether it's Hello World or it shows
link |
something on screen if there's a graphical component, are you seeing the magic and the
link |
mechanism of creating that? I think I went back and forth. As a student, we had an incredibly
link |
small budget of computer time that we could use. It was actually measured. I once got in trouble with
link |
one of my professors because I had overspent the department's budget. It's a different story.
link |
But so I actually wanted the efficient implementation because I also wanted to explore
link |
what would happen with a larger number of generations and a larger sort of size of the
link |
board. And so once the implementation was flawless, I would feed it different patterns and then I
link |
think maybe there was a follow up article where there were patterns that were like gliders,
link |
patterns that repeated themselves after a number of generations but translated one or two positions
link |
to the right or up or something like that. And there were, I remember things like glider guns.
link |
Well, you can Google Conway's Game of Life. People still go on over it. For a reason because
link |
it's not really well understood. I mean this is what Stephen Wolfram is obsessed about.
link |
We don't have the mathematical tools to describe the kind of complexity that emerges
link |
in these kinds of systems. And the only way you can do is to run it.
link |
I'm not convinced that it's sort of a problem that lends itself to classic mathematical analysis.
link |
No. And so one theory of how you create an artificial intelligence or an artificial being
link |
is you kind of have to, same with the game of life, you kind of have to create a universe
link |
and let it run. That creating it from scratch in a design way in the, you know, coding up a
link |
Python program that creates a fully intelligent system may be quite challenging that you might
link |
need to create a universe just like the game of life is. Well, you might have to experiment with
link |
a lot of different universes before. There is a set of rules that doesn't essentially always just
link |
and repeating itself in a trivial way. Yeah. And Steve Wolfram, Stephen Wolfram works with
link |
these simple rules, says that it's kind of surprising how quickly you find rules that
link |
create interesting things. You shouldn't be able to, but somehow you do. And so maybe our universe
link |
is laden with rules that will create interesting things that might not look like humans, but
link |
you know, emergent phenomena that's interesting may not be as difficult to create as we think.
link |
Sure. But let me sort of ask, at that time, you know, some of the world, at least in popular press,
link |
was kind of captivated, perhaps at least in America, by the idea of artificial intelligence,
link |
that these computers would be able to think pretty soon. And did that touch you at all? Did
link |
that in science fiction or in reality, in any way? I didn't really start reading science fiction
link |
until much, much later. I think as a teenager, I read maybe one bundle of science fiction stories.
link |
Was it in the background somewhere, like in your thoughts?
link |
That sort of the using computers to build something intelligent always fell to me,
link |
because I felt I had so much understanding of what actually goes on inside a computer.
link |
I knew how many bits of memory it had and how difficult it was to program and sort of
link |
I didn't believe at all that that you could just build something intelligent out of that,
link |
that that would really sort of satisfy my definition of intelligence. I think the most
link |
the most influential thing that I read in my early 20s was Gödel Escherbach.
link |
That was about consciousness and that was a big eye opener, in some sense.
link |
In what sense? So on your own brain, did you at the time or do you now see your
link |
own brain as a computer? Or is there a total separation of the way? So yeah, you're very
link |
pragmatically, practically know the limits of memory, the limits of this sequential computing,
link |
or weekly paralyzed computing, and you just know what we have now and it's hard to see
link |
how it creates, but it's also easy to see it was in the in the 40s, 50s, 60s, and now
link |
at least similarities between the brain and our computers. Oh yeah, I mean, I
link |
I totally believe that brains are computers in some sense. I mean, the rules they they use to
link |
play by are pretty different from the rules we we can sort of implement in in our current
link |
hardware. But I don't believe in like a separate thing that infuses us with intelligence or
link |
consciousness or any of that. There's no soul. I've been an atheist probably
link |
from when I was 10 years old, just by thinking a bit about math and the universe.
link |
And well, my parents were atheists. Now, I know that you you you could be an atheist and still
link |
believe that there is something sort of about intelligence or consciousness that cannot possibly
link |
emerge from a fixed set of rules. I am not in that camp. I totally see that
link |
that sort of given how many millions of years evolution took its time. DNA is is a particular
link |
machine that that sort of encodes information and an unlimited amount of information in in
link |
chemical form and has figured out a way to replicate itself. I thought that that was maybe
link |
it's 300 million years ago, but I thought it was closer to half a half a billion years ago that that's
link |
sort of originated and it hasn't really changed that the sort of the structure of DNA hasn't
link |
changed ever since that is like our binary code that we have in hardware. I mean, the basic
link |
programming language hasn't changed, but maybe the programming itself, obviously did sort of it.
link |
It happened to be a set of rules that was good enough to to sort of develop
link |
of endless variability and and sort of the the idea of self replicating molecules
link |
competing with each other for resources and and one type eventually sort of always taking over
link |
that happened before there were any fossils. So we don't know how that exactly happened, but
link |
I believe it it's it's clear that that did happen and can you comment on consciousness and how you
link |
see it? Because I think we'll talk about programming quite a bit. We'll talk about,
link |
you know, intelligence connecting to programming fundamentally, but consciousness consciousness
link |
is this whole other other thing. Do you think about it often as a developer of a programming
link |
language and and as a human? Those those are pretty sort of separate topics.
link |
Sort of my line of work working with programming does not involve anything that that goes in the
link |
direction of developing intelligence or consciousness, but sort of privately as an avid reader of
link |
popular science writing. I have some thoughts which which is mostly that
link |
I don't actually believe that consciousness is an all or nothing thing. I have a feeling that and
link |
and I forget what I read that influenced this, but I feel that if you look at a cat or a dog or a
link |
mouse, they have some form of intelligence. If you look at a fish, it has some form of intelligence
link |
and that evolution just took a long time. But I feel that the the sort of evolution of
link |
more and more intelligence that led to to sort of the human form of intelligence
link |
follow the the evolution of the senses, especially the visual sense.
link |
I mean, there is an enormous amount of processing that's needed to interpret a scene. And humans are
link |
still better at that than than computers are. Yeah, and so and and I have a feeling that
link |
there is a sort of the reason that that like mammals is in particular developed the levels of
link |
consciousness that they have and that eventually sort of going from intelligence to to self
link |
awareness and consciousness has to do with sort of being a robot that has very highly developed
link |
senses. Has a lot of rich sensory information coming in. So the that's a really interesting
link |
thought that that whatever that basic mechanism of DNA, whatever that basic building blocks of
link |
programming is you if you just add more abilities, more more high resolution sensors, more sensors,
link |
you just keep stacking those things on top that this basic programming in trying to survive
link |
develops very interesting things that start to us humans to appear like intelligence and
link |
consciousness. Yeah, so in in as far as robots go, I think that the self driving cars have that sort
link |
of the greatest opportunity of developing something like that because when I drive myself, I don't
link |
just pay attention to the rules of the road. I also look around and I get clues from that Oh,
link |
this is a shopping district. Oh, here's an old lady crossing the street. Oh, here is someone
link |
carrying a pile of mail. There's a mailbox. I bet you they're gonna cross the street to reach
link |
that mailbox. And I slow down. And I don't even think about that. Yeah. And so there is there is
link |
so much where you turn your observations into an understanding of what other consciousnesses
link |
are going to do or what what other systems in the world are going to be Oh, that tree is going to
link |
fall. Yeah, I see sort of I see much more of I expect somehow that if anything is going to
link |
become conscious, it's going to be the self driving car and not the network of a bazillion
link |
computers at in a Google or Amazon data center that are all networked together to
link |
to do whatever they do. So in that sense, so you actually highlight because that's what I work in
link |
is an autonomous vehicles, you highlight the big gap between what we currently can't do and
link |
what we truly need to be able to do to solve the problem. Under that formulation, then consciousness
link |
and intelligence is something that basically a system should have in order to interact with us
link |
humans, as opposed to some kind of abstract notion of a consciousness consciousness is
link |
something that you need to have to be able to empathize to be able to
link |
to fear the understand what the fear of death is. All these aspects that are important for
link |
interacting with pedestrians need to be able to do basic computation based on our human
link |
desires and if you sort of Yeah, if you if you look at the dog, the dog clearly knows, I mean,
link |
I'm not the dog owner, my brother, I have friends who have dogs, the dogs clearly know
link |
what the humans around them are going to do or at least they have a model of what those humans
link |
are going to do when they learn the dog some dogs know when you're going out and they want to go
link |
out with you, they're sad when you leave them alone, they cry. They're afraid because they were
link |
mistreated when they were younger. We don't assign sort of consciousness to dogs or at least
link |
not not all that much but I also don't think they have none of that. So I think it's it's
link |
consciousness and intelligence are not all or nothing.
link |
The spectrum is really interesting. But in returning to
link |
programming languages and the way we think about building these kinds of things about building
link |
intelligence, building consciousness, building artificial beings. So I think one of the exciting
link |
ideas came in the 17th century. And with liveness, Hobbes, Descartes, where there's this feeling that
link |
you can convert all thought all reasoning, all the thing that we find very special in our brains,
link |
you can convert all of that into logic. You can formalize it, former reasoning. And then once
link |
you formalize everything, all of knowledge, then you can just calculate. And that's what
link |
we're doing with our brains is we're calculating. So there's this whole idea that we that this is
link |
possible that this but they weren't aware of the concept of pattern matching in the sense that we
link |
are aware of it now. They sort of thought you they had discovered incredible bits of mathematics
link |
like Newton's calculus. And their sort of idealism there, their sort of extension of what they could
link |
do with logic and math sort of went along those lines. And they thought there's there's like,
link |
yeah, logic, there's there's like a bunch of rules, and a bunch of input, they didn't realize that how
link |
you recognize a face is not just a bunch of rules, but is a shit ton of data, plus a circuit that
link |
that sort of interprets the visual clues and the context and everything else. And somehow
link |
how can massively parallel pattern match against stored rules? I mean, if I see you tomorrow here
link |
in front of the Dropbox office, I might recognize you even if I'm wearing a different shirt. Yeah,
link |
but if I if I see you tomorrow in a coffee shop in Belmont, I might have no idea that it was you
link |
or on the beach or whatever. I make those mistakes myself all the time. I see someone that I only
link |
know as like, Oh, this person is a colleague of my wife's. And then I see them at the movies and
link |
I don't recognize them. But do you see those you call it pattern matching? Do you see that rules is
link |
unable to encode that to you? Everything you see all the piece of information you look around
link |
this room, I'm wearing a black shirt, I have a certain height, I'm a human all these you can
link |
there's probably tens of thousands of facts you pick up moment by moment about this scene,
link |
you take them for granted and you accumulate aggregate them together to understand the scene.
link |
You don't think all of that could be encoded to weren't at the end of the day, you just put
link |
it on the table and calculate. Oh, I don't know what that means. I mean, yes, in the sense that
link |
there is no, there is no actual magic there, but there are enough layers of abstraction from sort
link |
of from the facts as they enter my eyes and my ears to the understanding of the scene that I don't
link |
think that that AI has really covered enough of that distance. It's like if you take a human body
link |
and you realize it's built out of atoms, well, that that is a uselessly reductionist view, right?
link |
The body is built out of organs, the organs are built out of cells, the cells are built out of
link |
proteins, the proteins are built out of amino acids, the amino acids are built out of atoms,
link |
and then you get to quantum mechanics. So that's a very pragmatic view. I mean, obviously as an
link |
engineer, I agree with that kind of view, but I also you also have to consider the the with the
link |
Sam Harris view of well, well, intelligence is just information processing. Do you just like
link |
you said you take in sensory information, you do some stuff with it and you come up with actions
link |
that are intelligent. That makes it sound so easy. I don't know who Sam Harris is. Oh, it's
link |
philosopher. So like this is how philosophers often think, right? And essentially, that's what
link |
Descartes was is, wait a minute, if there is, like you said, no magic. So you basically says it
link |
doesn't appear like there's any magic, but we know so little about it that it might as well be magic.
link |
So just because we know that we're made of atoms, just because we know we're made of organs,
link |
the fact that we know very little how to get from the atoms to organs in a way that's recreatable
link |
means it that you shouldn't get too excited just yet about the fact that you figured out that we're
link |
made of atoms. Right. And and and the same about taking facts as our our sensory organs take them
link |
in and turning that into reasons and actions that sort of there are a lot of abstractions that we
link |
haven't quite figured out how to how to deal with those. I mean, I sometimes I don't know if I can
link |
go on a tangent or not. Please. Drag you back in. Sure. So if I take a simple program that parses,
link |
say I have a compiler, it parses a program. In a sense, the input routine of that compiler
link |
of that parser is a sense, a sensing organ. And it builds up a mighty complicated internal
link |
representation of the program it just saw it doesn't just have a linear sequence of bytes
link |
representing the text of the program anymore, it has an abstract syntax tree. And I don't know how
link |
many of your viewers or listeners are familiar with compiler technology, but there is fewer and
link |
fewer these days, right? That's also true, probably. People want to take a shortcut, but there's sort
link |
of this abstraction is a data structure that the compiler then uses to produce outputs that is
link |
relevant like a translation of that program to machine code that can be executed by by hardware.
link |
And then that data structure gets thrown away. When a fish or a fly sees
link |
these sort of gets visual impulses. I'm sure it also builds up some data structure and for
link |
the fly that may be very minimal, a fly may may have only a few. I mean, in the case of a fly's
link |
brain, I could imagine that there are few enough layers of abstraction that it's not much more
link |
than when it's darker here than it is here. Well, it can sense motion, because a fly sort of responds
link |
when you move your arm towards it. So clearly, it's visual processing is intelligent, or well,
link |
not intelligent, but is has an abstraction for motion. And we still have similar things in in
link |
but much more complicated in our brains. I mean, otherwise, you couldn't drive a car if you,
link |
you couldn't sort if you didn't have an incredibly good abstraction for motion.
link |
Yeah, in some sense, the same abstraction for motion is probably one of the primary sources of
link |
our of information for us, we just know what to do. I think we know what to do with that.
link |
We've built up other abstractions on top. We build much more complicated data structures
link |
based on that. And we build more persistent data structures, sort of after some processing,
link |
some information sort of gets stored in our memory, pretty much permanently, and is available on
link |
recall. I mean, there are some things that you sort of, you're conscious that you're remembering it,
link |
like you give me your phone number, I, well, at my age, I have to write it down, but I could
link |
imagine I could remember those seven numbers or 10, 10 digits, and reproduce them in a while.
link |
If I sort of repeat them to myself a few times. So that's a fairly conscious form of memorization.
link |
On the other hand, how do I recognize your face? I have no idea. My brain has a whole bunch of
link |
specialized hardware that knows how to recognize faces. I don't know how much of that is sort of
link |
coded in our DNA and how much of that is trained over and over between the ages of zero and three.
link |
But somehow our brains know how to do lots of things like that that are useful in our interactions
link |
with other humans without really being conscious of how it's done anymore.
link |
Right. So our actual day to day lives, we're operating at the very highest level of abstraction.
link |
We're just not even conscious of all the little details underlying it. There's compilers on top
link |
of, it's like turtles on top of turtles or turtles all the way down. It's compilers all the way down.
link |
But that's essentially, you say that there's no magic. That's what I, what I was trying to get at,
link |
I think, is with Descartes started this whole train of saying that there's no magic. I mean,
link |
there's others beforehand. Well, didn't Descartes also have the notion, though, that the soul and
link |
the body were fundamentally separate? Yeah, I think he had to write in God in there for
link |
political reasons. So I don't actually, I'm not historian, but there's notions in there that
link |
all of reasoning, all of human thought can be formalized. I think that continued in the 20th
link |
century with the Russell and with Gato's incompleteness theorem, this debate of what are
link |
the limits of the things that could be formalized? That's where the Turing machine came along.
link |
And this exciting idea, I mean, underlying a lot of computing, that you can do quite a lot
link |
with a computer. You can, you can encode a lot of the stuff we're talking about in terms of
link |
recognizing faces and so on, theoretically, in an algorithm that can then run on the computer.
link |
And in that context, I'd like to ask programming in a philosophical way.
link |
What, so what does it mean to program a computer? So you said you write a Python program
link |
or compiled a C++ program that compiles to somebody code. It's forming layers.
link |
You're, you're, you're programming in a layer of abstraction that's higher. How do you see programming
link |
in that context? Can it keep getting higher and higher levels of abstraction?
link |
I think at some, at some point, the higher level of levels of abstraction will not be called
link |
programming and they will not resemble what we, we call programming at the moment. There will
link |
not be source code. I mean, there will still be source code sort of at a lower level of the machine,
link |
just like there's still molecules and electrons and sort of proteins in our brains. But, and so
link |
there's still programming and system administration and who knows what keeping to keep the machine
link |
running. But what the machine does is, is a different level of abstraction in a sense. And
link |
as far as I understand the way that for last decade or more people have made progress with
link |
things like facial recognition or the self driving cars is all by endless, endless amounts of
link |
training data where at least as, as, as a layperson and I feel myself totally as a layperson in that
link |
field, it looks like the researchers who publish the results don't necessarily know exactly how,
link |
how their algorithms work. And I often get upset when I sort of read a sort of a fluff piece about
link |
Facebook in the newspaper or social networks and they say, well, algorithms. And that's like a totally
link |
different interpretation of the word algorithm. Because for me, the way I was trained or what I
link |
learned when I was eight or 10 years old, an algorithm is a set of rules that you completely
link |
understand that can be mathematically analyzed. And, and, and you can prove things, you can like
link |
prove that Aristotle's Civ produces all prime numbers and only prime numbers.
link |
Yeah. So the, I don't know if you know who Andre Capati is. I'm afraid not. So he's a
link |
head of AI at Tesla now, but he was at Stanford before, and he has this cheeky way of calling
link |
this concept software 2.0. So let me disentangle that for a second. So kind of what you're
link |
referring to is the traditional, traditional, the algorithm, the concept of an algorithm,
link |
something that's there, it's clear, you can read it, you understand it, you can prove it's
link |
functioning as kind of software 1.0. And what software 2.0 is, is exactly what you describe,
link |
which is you have neural networks, which is a type of machine learning that you feed a bunch
link |
of data, and that neural network learns to do a function. All you specify is the inputs and
link |
the outputs you want, and you can't look inside. You can't analyze it. All you can do is train
link |
this function to map the inputs, the outputs by giving a lot of data. In that sense, programming
link |
becomes getting a lot of cleaning, getting a lot of data. That's what programming is in this.
link |
Well, that would be programming 2.0. 2.0 to programming 2.0.
link |
I wouldn't call that programming. It's just a different activity, just like
link |
building organs out of cells is not called chemistry.
link |
Well, so let's just step back and think sort of more generally, of course, but it's like
link |
as a parent teaching your kids, things can be called programming. In that same sense,
link |
that's how programming is being used. You're providing them data, examples, use cases.
link |
So imagine writing a function not with for loops and clearly readable text, but more saying,
link |
well, here's a lot of examples of what this function should take, and here's a lot of
link |
examples of when it takes those functions, it should do this, and then figure out the rest.
link |
So that's the 2.0 concept. And the question I have for you is like, it's a very fuzzy way.
link |
This is the reality of a lot of these pattern recognition systems and so on. It's a fuzzy way
link |
of quote unquote programming. What do you think about this kind of world? Should it be called
link |
something totally different than programming? If you're a software engineer, does that mean
link |
you're designing systems that are very can be systematically tested, evaluated, they have a
link |
very specific specification, and then this other fuzzy software 2.0 world machine learning world,
link |
that's that's something else totally? Or is there some intermixing that's possible?
link |
Well, the question is probably only being asked because we we don't quite know what
link |
that software 2.0 actually is. And it sort of I think there is a truism that every task that
link |
AI has has tackled in the past. At some point, we realized how it was done. And then it was no
link |
longer considered part of artificial intelligence because it was no longer necessary to to use
link |
that term. It was just, oh, now we know how to do this. And a new field of science or engineering
link |
has been developed. And I don't know if sort of every form of learning or sort of controlling
link |
computer systems should always be called programming. So I don't know, maybe I'm focused too much on
link |
the terminology. I but I expect that that there just will be different concepts where people with
link |
sort of different education and a different model of what they're trying to do will will develop those
link |
concepts. Yeah, and I guess, if you could comment on another way to put this concept is, I think,
link |
I think the kind of functions that neural networks provide is things as opposed to being able to
link |
upfront prove that this should work for all cases you throw at it. All you're able, it's the worst
link |
case analysis versus average case analysis, all you're able to say is it seems on everything
link |
we've tested to work 99.9% of the time, but we can't guarantee it and it fails in unexpected ways.
link |
We can even give you examples of how it fails in unexpected ways. But it's like really good
link |
most of the time. Yeah, but there's no room for that in current ways we think about programming.
link |
Programming 1.0 is actually sort of
link |
getting to that point to where the sort of the ideal of a bug free program
link |
has been abandoned long ago by most software developers. We only care about bugs that manifest
link |
themselves often enough to be annoying. And we're willing to take the occasional crash or
link |
outage or incorrect result for granted, because we can't possibly we don't have enough programmers
link |
to make all the code bug free and it would be an incredibly tedious business. And if you try to
link |
throw formal methods at it, it gets it becomes even more tedious. So every once in a while,
link |
the user clicks on a link in and somehow they get an error. And the average user doesn't panic,
link |
they just click again and see if it works better the second time, which often magically it does.
link |
Or they go up and they try some other way of performing their tasks. So that's sort of an
link |
end to end recovery mechanism and inside systems, there is all sorts of retries and timeouts and
link |
fallbacks. And I imagine that that sort of biological systems are even more full of that
link |
because otherwise they wouldn't survive. Do you think programming should be taught and thought of
link |
as exactly what you just said before I come from is kind of you're you're always denying that fact
link |
always in in sort of basic programming education, the sort of the programs you're, you're having
link |
students write are so small and simple that if there is a bug, you can always find it and fix it.
link |
Because the sort of programming as it's being taught in some even elementary middle schools
link |
in high school, introduction to programming classes in college, typically, it's programming in the
link |
small. Very few classes sort of actually teach software engineering building large systems. I
link |
mean, every summer here at Dropbox, we have a large number of interns, every tech company
link |
on the West Coast has the same thing. These interns are always amazed because this is the
link |
first time in their life that they see what goes on in a really large software development environment.
link |
And everything they've learned in college was almost always about a much smaller scale and
link |
somehow that difference in scale makes a qualitative difference in how you how you
link |
do things and how you think about it. If you then take a few steps back into decades,
link |
70s and 80s, when you're first thinking about Python or just that world of programming languages,
link |
did you ever think that there would be systems as large as underlying Google, Facebook and Dropbox?
link |
Did you when you were thinking about Python? I was actually always caught by surprise by
link |
every sort of this. Yeah, pretty much every stage of computing.
link |
So maybe just because you spoke in other interviews, but I think the evolution of
link |
programming languages are fascinating. And it's especially because it leads from my
link |
perspective towards greater and greater degrees of intelligence. I learned the first programming
link |
language I played with in Russia was with the turtle logo logo. Yeah. And if you look, I just
link |
have a list of programming languages, all of which I've played with a little bit. And they're all
link |
beautiful in different ways from Fortran, Cobalt, Lisp, Algal 60, basic logo again, C
link |
as a few object oriented came along in the 60s, Simula, Pascal, small talk, all of that leads
link |
all the classics, the classics. Yeah, the classic hits, right? Scheme built that's built on top of
link |
Lisp on the database side SQL C plus plus and all that leads up to Python, Pascal to
link |
and all that's before Python, MATLAB, these kind of different communities, different languages.
link |
So can you talk about that world? I know that sort of Python came out of ABC, which actually
link |
never knew that language. I just having researched this conversation went back to ABC and it looks
link |
remarkably, it has a lot of annoying qualities. But underneath those like all caps and so on.
link |
But underneath that, there's elements of Python that are quite they're already there.
link |
That's where I got all the good stuff, all the good stuff. So but in that world,
link |
you're swimming in these programming languages, were you focused on just the good stuff in your
link |
specific circle? Or did you have a sense of what, what is everyone chasing? You said that every
link |
programming language is built to scratch an itch. Were you aware of all the itches in the community
link |
and if not, or if yes, I mean, what itch we try to scratch with Python?
link |
Well, I'm glad I wasn't aware of all the itches because I would probably not have been able to
link |
do anything. I mean, if you're trying to solve every problem at once,
link |
you saw nothing. Well, yeah, it's, it's too overwhelming. And so I had a very, very focused
link |
problem. I wanted a programming language that set somewhere in between shell scripting and C.
link |
And now, arguably, there is like, one is higher level, one is lower level. And
link |
Python is sort of a language of an intermediate level, although it's still pretty much at the
link |
high level. And I was I was thinking about much more about I want a tool that I can use to be
link |
more productive as a programmer in a very specific environment. And I also had given myself a time
link |
budget for the development of the tool. And that was sort of about three months for both the design
link |
like thinking through what are all the features of the language syntactically.
link |
And semantically, and how do I implement the whole pipeline from parsing the source code to
link |
executing it. So I think both with the timeline and the goals, it seems like productivity was
link |
at the core of it as a goal. So, like for me, in the 90s, and the first decade of the 21st
link |
century, I was always doing machine learning AI, programming for my research was always in C++.
link |
Wow. And then the other people who are a little more mechanical engineering,
link |
electrical engineering, are Matlabby. They're a little bit more Matlab focused. Those are the
link |
world and maybe a little bit Java too, but people who are more interested in emphasizing
link |
the object oriented nature of things. So within the last 10 years or so, especially with the
link |
oncoming of neural networks and these packages that are built on Python to interface with
link |
neural networks, I switched to Python. And it's just, I've noticed a significant boost that I
link |
can't exactly, because I don't think about it, but I can't exactly put into words why I'm just
link |
much, much more productive, just being able to get the job done much, much faster. So how do you
link |
think whatever that qualitative difference is, I don't know if it's quantitative, it could be just
link |
a feeling. I don't know if I'm actually more productive, but how do you think about? You probably
link |
are. Yeah, well, that's right. I think there's elements. Let me just speak to one aspect that
link |
I think that was affecting our productivity is C++ was, I really enjoyed creating performant code
link |
and creating a beautiful structure where everything that, you know, this kind of going
link |
into this, especially with the newer and newer standards of templated programming of just really
link |
creating this beautiful, formal structure that I found myself spending most of my time doing that
link |
as opposed to getting it parsing a file and extracting a few keywords or whatever the task
link |
goes trying to do. So what is it about Python? How do you think of productivity in general as
link |
you were designing it now? So through the decades, last three decades, what do you think it means
link |
to be a productive programmer? And how did you try to design it into the language?
link |
There are different tasks. And as a programmer, it's, it's useful to have different tools available
link |
that sort of are suitable for different tasks. So I still write C code. I still write shell code.
link |
But I write most of my, my things in Python.
link |
Why do I still use those other languages? Because sometimes the task just demands it.
link |
And, well, I would say most of the time, the task actually demands a certain language because
link |
the task is not write a program that solves problem x from scratch, but it's more like
link |
fix a bug in existing program x or add a small feature to an existing large program.
link |
But even if, if you sort of, if you're not constrained in your choice of language
link |
by context like that, there is still the fact that if you write it in a certain language, then you
link |
sort of, you, you have this balance between how long does it time? Does it take you to write the
link |
code? And how long does the code run? And when you're in sort of, in the phase of exploring
link |
solutions, you often spend much more time writing the code than running it, because every time
link |
you've sort of, you've run it, you see that the output is not quite what you wanted. And
link |
you spend some more time coding. And a language like Python just makes that iteration much faster,
link |
because there are fewer details. There is a large library, sort of there are fewer details that,
link |
that you have to get right before your program compiles and runs. There are libraries that
link |
do all sorts of stuff for you. So you can sort of very quickly take a bunch of
link |
existing components, put them together and get your prototype application running just like
link |
when I was building electronics, I was using a breadboard most of the time. So I had this like
link |
sprawl out circuit that if you shook it, it would stop working because it was not put together
link |
very well. But it functioned and all I wanted was to see that it worked and then move on to the next
link |
next schematic or design or add something to it. Once you've sort of figured out, oh, this is the
link |
perfect design for my radio or light sensor or whatever, then you can say, okay, how do we
link |
design a PCB for this? How do we solder the components in a small space? How do we make it
link |
so that it is robust against, say, voltage fluctuations or mechanical disruption? I mean,
link |
I know nothing about that when it comes to designing electronics, but I know a lot about
link |
that when it comes to writing code. So the initial steps are efficient, fast, and there's not much
link |
stuff that gets in the way. But you're kind of describing from like Darwin described the evolution
link |
of species, right? You're observing of what is true about Python. Now, if you take a step back,
link |
if the act of creating languages is art, and you had three months to do it, initial steps,
link |
so you just specified a bunch of goals, sort of things that you observe about Python. Perhaps
link |
you had those goals, but how do you create the rules, the syntactic structure, the features
link |
that result in those? So I have, in the beginning, and I have follow up questions about through the
link |
evolution of Python, too. But in the very beginning, when you're sitting there, creating the lexical
link |
analyze or whatever evolution was still a big part of it, because I sort of I said to myself,
link |
I don't want to have to design everything from scratch. I'm going to borrow features from
link |
other languages that I like. Oh, interesting. So you basically, exactly, you first observe what
link |
you like. Yeah. And so that's why if you're 17 years old, and you want to sort of create a programming
link |
language, you're not going to be very successful at it. Because you have no experience with other
link |
languages. Whereas I was in my, let's say mid 30s. I had written parsers before. So I had worked on
link |
the implementation of ABC, I had spent years debating the design of ABC with its authors,
link |
it's with its designers, I had nothing to do with the design, it was designed
link |
fully as it was ended up being implemented when I joined the team. But so
link |
you borrow ideas and concepts and very concrete sort of local rules from different languages,
link |
like the indentation and certain other syntactic features from ABC. But I chose to borrow string
link |
literals and how numbers work from C and various other things. So in then, if you take that further,
link |
so yet, you've had this funny sounding, but I think surprisingly accurate and at least practical
link |
title of benevolent dictator for life for quite, you know, for the last three decades or whatever,
link |
or no, not the actual title, but functionally speaking. So you had to make decisions, design
link |
decisions. Can you maybe let's take Python two, so Python releasing Python three as an example.
link |
Mm hmm. It's not backward compatible to Python two in ways that a lot of people know. So what was
link |
that deliberation discussion decision like? Yeah, what was the psychology of that experience?
link |
Do you regret any aspects of how that experience undergone that? Well, yeah, so it was a group
link |
process really. At that point, even though I was BDFL in name, and certainly everybody sort of
link |
respected my position as the creator and the current sort of owner of the language design,
link |
I was looking at everyone else for feedback.
link |
Sort of Python 3.0 in some sense was sparked by other people in the community pointing out,
link |
oh, well, there are a few issues that sort of bite users over and over. Can we do something
link |
about that? And for Python three, we took a number of those Python words as they were called at the
link |
time. And we said, can we try to sort of make small changes to the language that address those words?
link |
And we had sort of in the past, we had always taken backwards compatibility very seriously.
link |
And so many Python words in earlier versions had already been resolved, because they could be resolved
link |
while maintaining backwards compatibility or sort of using a very gradual path of evolution of the
link |
language in a certain area. And so we were stuck with a number of words that were widely recognized
link |
as problems, not like roadblocks, but nevertheless, sort of things that some people trip over. And you
link |
know that that's always the same thing that that people trip over when they trip. And we could not
link |
think of a backwards compatible way of resolving those issues. But it's still an option to not
link |
resolve the issues. And so yes, for for a long time, we had sort of resigned ourselves to well,
link |
okay, the language is not going to be perfect in this way, and that way, and that way. And we sort
link |
of certain of these I mean, there are still plenty of things where you can say, well, that's
link |
that particular detail is better in Java or in R or in visual basic or whatever. And we're okay with
link |
that because well, we can't easily change it. It's not too bad, we can do a little bit with user
link |
education, or we can have static analyzer or warnings in in the parse or something. But there
link |
were things where we thought, well, these are really problems that are not going away, they're
link |
getting worse. In the future, we should do something about it. Do something. But ultimately, there is
link |
a decision to be made, right? Yes. So was that the toughest decision in the history of Python you
link |
had to make as the benevolent dictator for life? Or if not, what are other maybe even on a smaller
link |
scale? What was the decision where you were really torn up about? Well, the toughest decision was
link |
probably to resign. All right, let's go there. Hold on a second, then let me just because in the
link |
interest of time too, because I have a few cool questions for you. And let's touch a really
link |
important one because it was quite dramatic and beautiful in certain kinds of ways. In July this
link |
year, three months ago, you wrote, now that PEP 572 is done, I don't ever want to have to fight so
link |
hard for a PEP and find that so many people despise my decisions. I would like to remove myself
link |
entirely from the decision process. I'll still be there for a while as an ordinary core developer.
link |
And I'll still be available to mentor people possibly more available. But I'm basically giving
link |
myself a permanent vacation from being BDFL benevolent dictator for life. And you all will
link |
be on your own. First of all, just this, it's almost Shakespearean. I'm not going to appoint a
link |
successor. So what are you all going to do? Create a democracy, anarchy, a dictatorship,
link |
a federation. So that was a very dramatic and beautiful set of statements. It's almost,
link |
it's open ended nature, called the community to create a future for Python. This is kind of a
link |
beautiful aspect to it. Wow. So what and dramatic, you know, what was making that decision like?
link |
What was on your heart, on your mind, stepping back now, a few months later,
link |
taking it to your mindset? I'm glad you liked the writing because it was actually written pretty
link |
quickly. It was literally something like after months and months of going around in circles,
link |
I had finally approved PEP 572, which I had a big hand in its design, although I didn't
link |
initiate it originally. I sort of gave it a bunch of nudges in a direction that would be
link |
better for the language. So sorry, just to ask, is async IO, is that the one or no? No, PEP 572 was
link |
actually a small feature, which is assignment expressions. Oh, assignment expressions, okay.
link |
That had been thought there was just a lot of debate where a lot of people claimed that
link |
they knew what was Pythonic and what was not Pythonic, and they knew that this was going to
link |
destroy the language. This was like a violation of Python's most fundamental design philosophy.
link |
And I thought that was all bullshit because I was in favor of it. And I would think I know
link |
something about Python's design philosophy. So I was really tired and also stressed of that thing.
link |
And literally, after sort of announcing, I was going to accept it. A certain Wednesday evening,
link |
I had finally send the email, it's accepted. Now let's just go implement it. So I went to bed
link |
feeling really relieved. That's behind me. And I wake up Thursday morning, 7am. And I think,
link |
well, that was the last one. That's going to be such such a terrible debate. And that's
link |
going to be that's the last time that I let myself be so stressed out about a PEP decision.
link |
I should just resign. I've been sort of thinking about retirement for half a decade. I've been
link |
joking and sort of mentioning retirement, sort of telling the community, some point in the
link |
future, I'm going to retire. Don't take that FL part of my title too literally. And I thought,
link |
okay, this is it. I'm done. I had the day off. I wanted to have a good time with my wife. We
link |
were going to a little beach town nearby. And in, I think maybe 15, 20 minutes, I wrote that thing
link |
that you just called Shakespearean. And the funny thing is, I get so much crap for calling you
link |
Shakespearean. I didn't even I didn't even realize what a monumental decision it was.
link |
Because five minutes later, I read that a link to my message back on Twitter, where people were
link |
already discussing on Twitter, Guido resigned as the BDFL. And I had, I had posted it on an internal
link |
forum that I thought was only read by core developers. So I thought I would at least
link |
have one day before the news would sort of get out. The on your own aspects, I had also an
link |
element of quite, it was quite a powerful element of the uncertainty that lies ahead. But can you
link |
also just briefly talk about, you know, like, for example, I play guitar as a hobby for fun.
link |
And whenever I play, people are super positive, super friendly. They're like, this is awesome.
link |
This is great. But sometimes I enter as an outside observer, enter the programming community.
link |
And there seems to some sometimes be camps on whatever the topic. And in the two camps,
link |
the two or plus camps, are often pretty harsh at criticizing the opposing camps.
link |
As an onlooker, I may be totally wrong on this. Yeah, holy wars are sort of a favorite activity
link |
in the programming community. And what is the psychology behind that? Is, is that okay for
link |
a healthy community to have? Is that, is that a productive force ultimately for the evolution
link |
of a language? Well, if everybody is batting each other on the back and never telling the truth,
link |
yes, it would not be a good thing. I think there is a middle ground where sort of
link |
being nasty to each other is not okay. But there there is is is a middle ground where there is
link |
is healthy ongoing criticism and feedback that is very productive. And you mean at every level,
link |
you see that I mean, someone proposes to fix a very small issue in a code base.
link |
Chances are that some reviewer will sort of respond by saying, well, actually,
link |
you can do it better the other way. When it comes to deciding on the future of the Python
link |
core developer community, we now have, I think, five or six competing proposals for a constitution.
link |
So that future, do you have a fear of that future? Do you have a hope for that future?
link |
I'm very confident about that future. And by and large, I think that the debate has been very
link |
healthy and productive. And I actually when when I wrote that resignation email, I knew that that
link |
Python was in a very good spot and that the Python core development community that the group of
link |
50 or 100 people who sort of write or review most of the code that goes into Python, those people
link |
get along very well most of the time. A large number of different areas of expertise are
link |
represented at different levels of experience in the Python core dev community, different levels
link |
of experience completely outside it in software development in general, large systems, small
link |
systems, embedded systems. So I felt okay, resigning because I knew that that the community can
link |
really take care of itself. And out of a grab bag of future feature developments, let me ask if
link |
you can comment, maybe on all very quickly, concurrent programming parallel computing,
link |
async IO, these are things that people have expressed hope, complained about, whatever
link |
I have discussed on Reddit, async IO, so the parallelization in general, packaging, I was totally
link |
close on this, I just use pip install stuff, but apparently, there's pip end of poetry, there's
link |
these dependency packaging systems that manage dependencies and so on, they're emerging, and
link |
there's a lot of confusion about what's what's the right thing to use. Then also, functional
link |
programming, the ever, are we going to get more functional programming or not, this kind of idea,
link |
and of course, the GIL connected to the parallelization, I suppose, the global interpreter
link |
lock problem. Can you just comment on whichever you want to comment on?
link |
Well, let's take the GIL and parallelization and async IO as one one topic.
link |
I'm not that hopeful that Python will develop into a sort of high concurrency, high parallelism
link |
language. That's sort of the way the language is designed, the way most users use the language,
link |
the way the language is implemented, all make that a pretty unlikely future.
link |
So you think it might not even need to really the way people use it, it might not be something
link |
that should be of great concern. I think I think async IO is a special case, because it sort of
link |
allows overlapping IO and only IO. And that is is a sort of best practice of supporting very
link |
high throughput IO, many connections per second. I'm not worried about that. I think async IO
link |
will evolve. There are a couple of competing packages, we have some very smart people who are
link |
sort of pushing us in sort of to make async IO better. Parallel computing, I think that
link |
Python is not the language for that. There are there are ways to work around it.
link |
But you sort of you can't expect to write an algorithm in Python and have a compiler
link |
automatically paralyze that what you can do is use a package like NumPy and there are a bunch of
link |
other very powerful packages that sort of use all the CPUs available, because you tell the package,
link |
here's the data, here's the abstract operation to apply over it, go at it, and then then we're
link |
back in the C++ world. But the those packages are themselves implemented usually in C++.
link |
That's right. That's where TensorFlow and all these packages come in where they parallelize
link |
across GPUs, for example, they take care of that for you. So in terms of packaging, can you comment
link |
on the packaging? Yeah, my packaging has always been my least favorite topic. It's a really tough
link |
problem because the OS and the platform want to own packaging. But their packaging solution is not
link |
specific to a language. Like, if you take Linux, there are two competing packaging solutions for
link |
Linux, or for Unix in general. And but they all work across all languages. And several languages,
link |
like Node, JavaScript, and Ruby, and Python all have their own packaging solutions that only work
link |
within the ecosystem of that language. Well, what should you use? That is a tough problem.
link |
My own own approach is I use the system packaging system to install Python, and I use the Python
link |
packaging system then to install third party Python packages. That's what most people do.
link |
10 years ago, Python packaging was really a terrible situation. Nowadays, Pip is the future.
link |
There is there is a separate ecosystem for numerical and scientific Python, Python based on
link |
Anaconda. Those two can live together. I don't think there is a need for more than that.
link |
Great. So that's that's packaging. That's, well, at least for me, that's that's where I've been
link |
extremely happy. I didn't I didn't even know this was an issue until it was brought up. Well, in the
link |
interest of time, let me sort of skip through a million other questions I have. So I watched the
link |
five hour five five and a half hour oral history. They've done with the computer history museum.
link |
And the nice thing about it, it gave this because of the linear progression of the interview, it
link |
it gave this feeling of a life, you know, a life well lived with interesting things in it.
link |
Sort of a pretty, I would say a good spend of of this little existence we have on earth.
link |
So outside of your family, looking back, what about this journey are you really proud of?
link |
Are there moments that stand out accomplishments ideas? Is it the creation of Python itself
link |
that stands out as a thing that you look back and say, damn, I did pretty good there?
link |
Well, I would say that Python is definitely the best thing I've ever done.
link |
And I wouldn't sort of say just the creation of Python, but the way I sort of raised Python,
link |
like a baby, I didn't just conceive a child, but I raised a child. And now I'm setting the child
link |
free in the world. And I've set up the child to to sort of be able to take care of himself.
link |
And I'm very proud of that. And as the announcer of Monty Python's Flying Circus used to say,
link |
and now for something completely different, do you have a favorite Monty Python moment or a
link |
moment in Hitchhiker's Guide or any other literature show or movie that cracks you up when you think
link |
about it? Oh, you can always play me the Parrots, the dead Parrot sketch. Oh, that's brilliant.
link |
Yeah, that's my favorite as well. Pushing up the daisies. Okay, Greta, thank you so much for
link |
talking to me today. Lex, this has been a great conversation.