← Lex Fridman

Guido van Rossum: Python

第2018-11-22期2018-11-22English

嘉宾:Guido van Rossum

收听本集00:00 / 1:26:51
阅读设置
按你的习惯阅读
正文字号
下载播客精读
把这一篇,带走慢慢读

精读待补充

下载功能还未开放

§01Transcript · 00:00–21:07

00:00The following is a conversation with Guido van Rossum, creator of Python, one of the most popular

00:05programming languages in the world, used in almost any application that involves computers

00:11from web back end development to psychology, neuroscience, computer vision, robotics, deep

00:17learning, natural language processing, and almost any subfield of AI. This conversation is part of

00:24MIT course on artificial general intelligence and the artificial intelligence podcast.

00:29If you enjoy it, subscribe on YouTube, iTunes, or your podcast provider of choice, or simply connect

00:36with me on Twitter at Lex Friedman, spelled F R I D. And now, here's my conversation with Guido van

00:44Rossum. You were born in the Netherlands in 1956. Your parents and the world around you was deeply

00:53deeply impacted by World War Two, as was my family from the Soviet Union. So with that context,

01:02what is your view of human nature? Are some humans inherently good,

01:07and some inherently evil? Or do we all have both good and evil within us?

01:12Guido van Rossum Ouch, I did not expect such a deep one. I, I guess we all have good and evil

01:24potential in us. And a lot of it depends on circumstances and context.

01:31Peter Bell out of that world, at least on the Soviet Union side in Europe, sort of out of

01:38suffering, out of challenge, out of that kind of set of traumatic events, often emerges beautiful

01:46art, music, literature. In an interview I read or heard, you said you enjoyed Dutch literature

01:54when you were a child. Can you tell me about the books that had an influence on you in your

01:59childhood? Guido van Rossum

02:01Well, with as a teenager, my favorite writer was my favorite Dutch author was a guy named Willem

02:09Frederik Hermans, who's writing, certainly his early novels were all about sort of

02:19ambiguous things that happened during World War Two. I think he was a young adult during that time.

02:31And he wrote about it a lot, and very interesting, very good books, I thought, I think.

02:40Peter Bell In a nonfiction way?

02:42Guido van Rossum No, it was all fiction, but it was

02:46very much set in the ambiguous world of resistance against the Germans,

02:54where often you couldn't tell whether someone was truly in the resistance or really a spy for the

03:03Germans. And some of the characters in his novels sort of crossed that line, and you never really

03:11find out what exactly happened.

03:13Peter Bell And in his novels, there's always a

03:16good guy and a bad guy, the nature of good and evil. Is it clear there's a hero?

03:22Guido van Rossum No, his heroes are often more,

03:25his main characters are often anti heroes. And so they're not very heroic. They're often,

03:36they fail at some level to accomplish their lofty goals.

03:40Peter Bell And looking at the trajectory

03:43through the rest of your life, has literature, Dutch or English or translation had an impact

03:50outside the technical world that you existed in?

03:54Guido van Rossum I still read novels.

04:00I don't think that it impacts me that much directly.

04:05Peter Bell It doesn't impact your work.

04:07Guido van Rossum It's a separate world.

04:10My work is highly technical and sort of the world of art and literature doesn't really

04:17directly have any bearing on it.

04:19Peter Bell You don't think there's a creative element

04:22to the design? You know, some would say design of a language is art.

04:26Guido van Rossum I'm not disagreeing with that.

04:32I'm just saying that sort of I don't feel direct influences from more traditional art

04:39on my own creativity.

04:40Peter Bell Right. Of course, you don't feel doesn't mean

04:43it's not somehow deeply there in your subconscious.

04:46Guido van Rossum Who knows?

04:48Peter Bell Who knows? So let's go back to your early

04:51teens. Your hobbies were building electronic circuits, building mechanical models.

04:57What if you can just put yourself back in the mind of that young Guido 12, 13, 14, was

05:06that grounded in a desire to create a system? So to create something? Or was it more just

05:12tinkering? Just the joy of puzzle solving?

05:14Guido van Rossum I think it was more the latter, actually.

05:18I maybe towards the end of my high school period, I felt confident enough that that

05:29I designed my own circuits that were sort of interesting somewhat. But a lot of that

05:39time, I literally just took a model kit and follow the instructions, putting the things

05:46together. I mean, I think the first few years that I built electronics kits, I really did

05:51not have enough understanding of sort of electronics to really understand what I was doing. I mean,

05:59I could debug it, and I could sort of follow the instructions very carefully, which has

06:06always stayed with me. But I had a very naive model of, like, how do I build a circuit?

06:14Of, like, how a transistor works? And I don't think that in those days, I had any understanding

06:22of coils and capacitors, which actually sort of was a major problem when I started to build

06:32more complex digital circuits, because I was unaware of the sort of the analog part of

06:39the – how they actually work. And I would have things that – the schematic looked

06:50– everything looked fine, and it didn't work. And what I didn't realize was that

06:57there was some megahertz level oscillation that was throwing the circuit off, because

07:02I had a sort of – two wires were too close, or the switches were kind of poorly built.

07:13But through that time, I think it's really interesting and instructive to think about,

07:19because echoes of it are in this time now. So in the 1970s, the personal computer was

07:24being born. So did you sense, in tinkering with these circuits, did you sense the encroaching

07:33revolution in personal computing? So if at that point, we would sit you down and ask

07:39you to predict the 80s and the 90s, do you think you would be able to do so successfully

07:46to unroll the process that's happening? No, I had no clue. I remember, I think, in

07:55the summer after my senior year – or maybe it was the summer after my junior year – well,

08:03at some point, I think, when I was 18, I went on a trip to the Math Olympiad in Eastern

08:11Europe, and there was like – I was part of the Dutch team, and there were other nerdy

08:16kids that sort of had different experiences, and one of them told me about this amazing

08:23thing called a computer. And I had never heard that word. My own explorations in electronics

08:31were sort of about very simple digital circuits, and I had sort of – I had the idea that

08:40I somewhat understood how a digital calculator worked. And so there is maybe some echoes

08:49of computers there, but I never made that connection. I didn't know that when my parents

08:56were paying for magazine subscriptions using punched cards, that there was something called

09:03a computer that was involved that read those cards and transferred the money between accounts.

09:08I was also not really interested in those things. It was only when I went to university

09:15to study math that I found out that they had a computer, and students were allowed to use

09:23it.

09:24And there were some – you're supposed to talk to that computer by programming it.

09:27What did that feel like, finding –

09:29Yeah, that was the only thing you could do with it. The computer wasn't really connected

09:35to the real world. The only thing you could do was sort of – you typed your program

09:41on a bunch of punched cards. You gave the punched cards to the operator, and an hour

09:47later the operator gave you back your printout. And so all you could do was write a program

09:55that did something very abstract. And I don't even remember what my first forays into programming

10:04were, but they were sort of doing simple math exercises and just to learn how a programming

10:13language worked.

10:15Did you sense, okay, first year of college, you see this computer, you're able to have

10:21a program and it generates some output. Did you start seeing the possibility of this,

10:29or was it a continuation of the tinkering with circuits? Did you start to imagine that

10:34one, the personal computer, but did you see it as something that is a tool, like a word

10:42processing tool, maybe for gaming or something? Or did you start to imagine that it could

10:47be going to the world of robotics, like the Frankenstein picture that you could create

10:53an artificial being? There's like another entity in front of you. You did not see the

10:59computer.

11:00I don't think I really saw it that way. I was really more interested in the tinkering.

11:05It's maybe not a sort of a complete coincidence that I ended up sort of creating a programming

11:14language which is a tool for other programmers. I've always been very focused on the sort

11:20of activity of programming itself and not so much what happens with the program you

11:28write.

11:29Right.

11:30I do remember, and I don't remember, maybe in my second or third year, probably my second

11:37actually, someone pointed out to me that there was this thing called Conway's Game of Life.

11:46You're probably familiar with it. I think –

11:50In the 70s, I think is when they came up with it.

11:53So there was a Scientific American column by someone who did a monthly column about

12:00mathematical diversions. I'm also blanking out on the guy's name. It was very famous

12:06at the time and I think up to the 90s or so. And one of his columns was about Conway's

12:12Game of Life and he had some illustrations and he wrote down all the rules and sort of

12:18there was the suggestion that this was philosophically interesting, that that was why Conway had

12:23called it that. And all I had was like the two pages photocopy of that article. I don't

12:31even remember where I got it. But it spoke to me and I remember implementing a version

12:40of that game for the batch computer we were using where I had a whole Pascal program that

12:49sort of read an initial situation from input and read some numbers that said do so many

12:56generations and print every so many generations and then out would come pages and pages of

13:05sort of things.

13:08I remember much later I've done a similar thing using Python but that original version

13:18I wrote at the time I found interesting because I combined it with some trick I had learned

13:27during my electronics hobbyist times. I essentially first on paper I designed a simple circuit

13:36built out of logic gates that took nine bits of input which is sort of the cell and its

13:45neighbors and produced a new value for that cell and it's like a combination of a half

13:54adder and some other clipping. It's actually a full adder. And so I had worked that out

14:01and then I translated that into a series of Boolean operations on Pascal integers where

14:10you could use the integers as bitwise values. And so I could basically generate 60 bits

14:21of a generation in like eight instructions or so.

14:28Nice.

14:29So I was proud of that.

14:32It's funny that you mentioned, so for people who don't know Conway's Game of Life, it's

14:38a cellular automata where there's single compute units that kind of look at their neighbors

14:44and figure out what they look like in the next generation based on the state of their

14:50neighbors and this is deeply distributed system in concept at least. And then there's simple

14:57rules that all of them follow and somehow out of this simple rule when you step back

15:04and look at what occurs, it's beautiful. There's an emergent complexity. Even though the underlying

15:13rules are simple, there's an emergent complexity. Now the funny thing is you've implemented

15:17this and the thing you're commenting on is you're proud of a hack you did to make it

15:23run efficiently. When you're not commenting on, it's a beautiful implementation, you're

15:30not commenting on the fact that there's an emergent complexity that you've coded a simple

15:36program and when you step back and you print out the following generation after generation,

15:42that's stuff that you may have not predicted would happen is happening.

15:48And is that magic? I mean, that's the magic that all of us feel when we program. When

15:53you create a program and then you run it and whether it's Hello World or it shows something

15:59on screen, if there's a graphical component, are you seeing the magic in the mechanism

16:03of creating that?

16:05I think I went back and forth. As a student, we had an incredibly small budget of computer

16:14time that we could use. It was actually measured. I once got in trouble with one of my professors

16:20because I had overspent the department's budget. It's a different story.

16:29I actually wanted the efficient implementation because I also wanted to explore what would

16:36happen with a larger number of generations and a larger size of the board. Once the implementation

16:48was flawless, I would feed it different patterns and then I think maybe there was a follow

16:57up article where there were patterns that were like gliders, patterns that repeated

17:03themselves after a number of generations but translated one or two positions to the right

17:13or up or something like that. I remember things like glider guns. Well, you can Google Conway's

17:21Game of Life. People still go aww and ooh over it.

17:27For a reason because it's not really well understood why. I mean, this is what Stephen

17:32Wolfram is obsessed about. We don't have the mathematical tools to describe the kind of

17:40complexity that emerges in these kinds of systems. The only way you can do is to run

17:45it.

17:47I'm not convinced that it's sort of a problem that lends itself to classic mathematical

17:55analysis.

17:59One theory of how you create an artificial intelligence or artificial being is you kind

18:05of have to, same with the Game of Life, you kind of have to create a universe and let

18:10it run. That creating it from scratch in a design way, coding up a Python program that

18:17creates a fully intelligent system may be quite challenging. You might need to create

18:22a universe just like the Game of Life.

18:27You might have to experiment with a lot of different universes before there is a set

18:33of rules that doesn't essentially always just end up repeating itself in a trivial

18:41way.

18:42Yeah, and Stephen Wolfram works with these simple rules, says that it's kind of surprising

18:49how quickly you find rules that create interesting things. You shouldn't be able to, but somehow

18:55you do. And so maybe our universe is laden with rules that will create interesting things

19:02that might not look like humans, but emergent phenomena that's interesting may not be as

19:07difficult to create as we think.

19:09Sure.

19:10But let me sort of ask, at that time, some of the world, at least in popular press, was

19:17kind of captivated, perhaps at least in America, by the idea of artificial intelligence, that

19:25these computers would be able to think pretty soon. And did that touch you at all? In science

19:33fiction or in reality in any way?

19:37I didn't really start reading science fiction until much, much later. I think as a teenager

19:49I read maybe one bundle of science fiction stories.

19:54Was it in the background somewhere, like in your thoughts?

19:57That sort of the using computers to build something intelligent always felt to me, because

20:04I felt I had so much understanding of what actually goes on inside a computer. I knew

20:12how many bits of memory it had and how difficult it was to program. And sort of, I didn't believe

20:22at all that you could just build something intelligent out of that, that would really

20:30sort of satisfy my definition of intelligence. I think the most influential thing that I

20:40read in my early twenties was Gödel Escherbach. That was about consciousness, and that was

20:48a big eye opener in some sense.

20:54In what sense? So, on your own brain, did you at the time or do you now see your own

21:00brain as a computer? Or is there a total separation of the way? So yeah, you're very pragmatically

§02Transcript · 21:07–41:47

21:07practically know the limits of memory, the limits of this sequential computing or weakly

21:14paralyzed computing, and you just know what we have now, and it's hard to see how it creates.

21:21But it's also easy to see, it was in the 40s, 50s, 60s, and now at least similarities between

21:29the brain and our computers.

21:31Oh yeah, I mean, I totally believe that brains are computers in some sense. I mean, the rules

21:43they use to play by are pretty different from the rules we can sort of implement in our

21:51current hardware, but I don't believe in, like, a separate thing that infuses us with

22:02intelligence or consciousness or any of that. There's no soul, I've been an atheist

22:10probably from when I was 10 years old, just by thinking a bit about math and the universe,

22:18and well, my parents were atheists. Now, I know that you could be an atheist and still

22:26believe that there is something sort of about intelligence or consciousness that cannot

22:34possibly emerge from a fixed set of rules. I am not in that camp. I totally see that,

22:44sort of, given how many millions of years evolution took its time, DNA is a particular

22:53machine that sort of encodes information and an unlimited amount of information in chemical

23:07form and has figured out a way to replicate itself.

23:12I thought that that was, maybe it's 300 million years ago, but I thought it was closer

23:16to half a billion years ago, that that's sort of originated and it hasn't really changed,

23:25that the sort of the structure of DNA hasn't changed ever since. That is like our binary

23:32code that we have in hardware. I mean...

23:35The basic programming language hasn't changed, but maybe the programming itself...

23:39Obviously, it did sort of, it happened to be a set of rules that was good enough to

23:48sort of develop endless variability and sort of the idea of self replicating molecules

23:59competing with each other for resources and one type eventually sort of always taking

24:05over. That happened before there were any fossils, so we don't know how that exactly

24:12happened, but I believe it's clear that that did happen.

24:17Can you comment on consciousness and how you see it? Because I think we'll talk about

24:25programming quite a bit. We'll talk about, you know, intelligence connecting to programming

24:30fundamentally, but consciousness is this whole other thing. Do you think about it often as

24:38a developer of a programming language and as a human?

24:45Those are pretty sort of separate topics. Sort of my line of work working with programming

24:55does not involve anything that goes in the direction of developing intelligence or consciousness,

25:02but sort of privately as an avid reader of popular science writing, I have some thoughts

25:13which is mostly that I don't actually believe that consciousness is an all or nothing thing.

25:25I have a feeling that, and I forget what I read that influenced this, but I feel that

25:35if you look at a cat or a dog or a mouse, they have some form of intelligence. If you

25:41look at a fish, it has some form of intelligence, and that evolution just took a long time,

25:54but I feel that the sort of evolution of more and more intelligence that led to sort of

26:01the human form of intelligence followed the evolution of the senses, especially the visual

26:12sense. I mean, there is an enormous amount of processing that's needed to interpret

26:20a scene, and humans are still better at that than computers are.

26:28And I have a feeling that there is a sort of, the reason that like mammals in particular

26:39developed the levels of consciousness that they have and that eventually sort of going

26:47from intelligence to self awareness and consciousness has to do with sort of being a robot that

26:55has very highly developed senses.

26:58Has a lot of rich sensory information coming in, so that's a really interesting thought

27:04that whatever that basic mechanism of DNA, whatever that basic building blocks of programming,

27:14if you just add more abilities, more high resolution sensors, more sensors, you just

27:21keep stacking those things on top that this basic programming in trying to survive develops

27:26very interesting things that start to us humans to appear like intelligence and consciousness.

27:35As far as robots go, I think that the self driving cars have that sort of the greatest

27:42opportunity of developing something like that, because when I drive myself, I don't just

27:50pay attention to the rules of the road.

27:53I also look around and I get clues from that, oh, this is a shopping district, oh, here's

28:01an old lady crossing the street, oh, here is someone carrying a pile of mail, there's

28:08a mailbox, I bet you they're going to cross the street to reach that mailbox.

28:14And I slow down, and I don't even think about that.

28:17And so, there is so much where you turn your observations into an understanding of what

28:25other consciousnesses are going to do, or what other systems in the world are going

28:32to be, oh, that tree is going to fall.

28:37I see sort of, I see much more of, I expect somehow that if anything is going to become

28:46unconscious, it's going to be the self driving car and not the network of a bazillion computers

28:55in a Google or Amazon data center that are all networked together to do whatever they

29:03do.

29:04So, in that sense, so you actually highlight, because that's what I work in Thomas Vehicles,

29:09you highlight the big gap between what we currently can't do and what we truly need

29:15to be able to do to solve the problem.

29:18Under that formulation, then consciousness and intelligence is something that basically

29:24a system should have in order to interact with us humans, as opposed to some kind of

29:30abstract notion of a consciousness.

29:35Consciousness is something that you need to have to be able to empathize, to be able to

29:39fear, understand what the fear of death is, all these aspects that are important for interacting

29:47with pedestrians, you need to be able to do basic computation based on our human desires

29:56and thoughts.

29:57And if you sort of, yeah, if you look at the dog, the dog clearly knows, I mean, I'm

30:02not the dog owner, but I have friends who have dogs, the dogs clearly know what the

30:07humans around them are going to do, or at least they have a model of what those humans

30:11are going to do and they learn.

30:14Some dogs know when you're going out and they want to go out with you, they're sad when

30:19you leave them alone, they cry, they're afraid because they were mistreated when they were

30:26younger.

30:31We don't assign sort of consciousness to dogs, or at least not all that much, but I also

30:39don't think they have none of that.

30:42So I think it's consciousness and intelligence are not all or nothing.

30:50The spectrum is really interesting.

30:52But in returning to programming languages and the way we think about building these

30:58kinds of things, about building intelligence, building consciousness, building artificial

31:03beings.

31:04So I think one of the exciting ideas came in the 17th century and with Leibniz, Hobbes,

31:10Descartes, where there's this feeling that you can convert all thought, all reasoning,

31:18all the thing that we find very special in our brains, you can convert all of that into

31:24logic.

31:25So you can formalize it, formal reasoning, and then once you formalize everything, all

31:30of knowledge, then you can just calculate and that's what we're doing with our brains

31:34is we're calculating.

31:35So there's this whole idea that this is possible, that this we can actually program.

31:40But they weren't aware of the concept of pattern matching in the sense that we are aware of

31:46it now.

31:47They sort of thought they had discovered incredible bits of mathematics like Newton's calculus

31:57and their sort of idealism, their sort of extension of what they could do with logic

32:06and math sort of went along those lines and they thought there's like, yeah, logic.

32:18There's like a bunch of rules and a bunch of input.

32:22They didn't realize that how you recognize a face is not just a bunch of rules but is

32:28a shit ton of data plus a circuit that sort of interprets the visual clues and the context

32:39and everything else and somehow can massively parallel pattern match against stored rules.

32:49I mean, if I see you tomorrow here in front of the Dropbox office, I might recognize you.

32:56Even if I'm wearing a different shirt, yeah, but if I see you tomorrow in a coffee shop

33:01in Belmont, I might have no idea that it was you or on the beach or whatever.

33:06I make those kind of mistakes myself all the time.

33:10I see someone that I only know as like, oh, this person is a colleague of my wife's and

33:16then I see them at the movies and I didn't recognize them.

33:20But do you see those, you call it pattern matching, do you see that rules is unable

33:29to encode that?

33:32Everything you see, all the pieces of information you look around this room, I'm wearing a black

33:36shirt, I have a certain height, I'm a human, all these, there's probably tens of thousands

33:41of facts you pick up moment by moment about this scene.

33:45You take them for granted and you aggregate them together to understand the scene.

33:50You don't think all of that could be encoded to where at the end of the day, you can just

33:53put it all on the table and calculate?

33:57I don't know what that means.

33:58I mean, yes, in the sense that there is no actual magic there, but there are enough layers

34:08of abstraction from the facts as they enter my eyes and my ears to the understanding of

34:17the scene that I don't think that AI has really covered enough of that distance.

34:29It's like if you take a human body and you realize it's built out of atoms, well, that

34:37is a uselessly reductionist view, right?

34:41The body is built out of organs, the organs are built out of cells, the cells are built

34:46out of proteins, the proteins are built out of amino acids, the amino acids are built

34:53out of atoms and then you get to quantum mechanics.

34:58So that's a very pragmatic view.

34:59I mean, obviously as an engineer, I agree with that kind of view, but you also have

35:03to consider the Sam Harris view of, well, intelligence is just information processing.

35:13Like you said, you take in sensory information, you do some stuff with it and you come up

35:17with actions that are intelligent.

35:20That makes it sound so easy.

35:22I don't know who Sam Harris is.

35:24Oh, well, it's a philosopher.

35:26So like this is how philosophers often think, right?

35:29And essentially that's what Descartes was, is wait a minute, if there is, like you said,

35:33no magic, so he basically says it doesn't appear like there's any magic, but we know

35:39so little about it that it might as well be magic.

35:44So just because we know that we're made of atoms, just because we know we're made

35:47of organs, the fact that we know very little how to get from the atoms to organs in a way

35:53that's recreatable means that you shouldn't get too excited just yet about the fact that

36:00you figured out that we're made of atoms.

36:02Right, and the same about taking facts as our sensory organs take them in and turning

36:11that into reasons and actions, that sort of, there are a lot of abstractions that we haven't

36:19quite figured out how to deal with those.

36:23I mean, sometimes, I don't know if I can go on a tangent or not, so if I take a simple

36:37program that parses, say I have a compiler that parses a program, in a sense the input

36:45routine of that compiler, of that parser, is a sensing organ, and it builds up a mighty

36:55complicated internal representation of the program it just saw, it doesn't just have

37:01a linear sequence of bytes representing the text of the program anymore, it has an abstract

37:08syntax tree, and I don't know how many of your viewers or listeners are familiar with

37:15compiler technology, but there's…

37:18Fewer and fewer these days, right?

37:21That's also true, probably.

37:24People want to take a shortcut, but there's sort of, this abstraction is a data structure

37:30that the compiler then uses to produce outputs that is relevant, like a translation of that

37:37program to machine code that can be executed by hardware, and then that data structure

37:47gets thrown away.

37:50When a fish or a fly sees, sort of gets visual impulses, I'm sure it also builds up some

38:02data structure, and for the fly that may be very minimal, a fly may have only a few, I

38:10mean, in the case of a fly's brain, I could imagine that there are few enough layers of

38:17abstraction that it's not much more than when it's darker here than it is here, well

38:24it can sense motion, because a fly sort of responds when you move your arm towards it,

38:29so clearly its visual processing is intelligent, well, not intelligent, but it has an abstraction

38:39for motion, and we still have similar things in, but much more complicated in our brains,

38:46I mean, otherwise you couldn't drive a car if you couldn't, if you didn't have an

38:50incredibly good abstraction for motion.

38:53Yeah, in some sense, the same abstraction for motion is probably one of the primary

38:59sources of our, of information for us, we just know what to do, I think we know what

39:05to do with that, we've built up other abstractions on top.

39:08We build much more complicated data structures based on that, and we build more persistent

39:14data structures, sort of after some processing, some information sort of gets stored in our

39:20memory pretty much permanently, and is available on recall, I mean, there are some things that

39:27you sort of, you're conscious that you're remembering it, like, you give me your phone

39:34number, I, well, at my age I have to write it down, but I could imagine, I could remember

39:39those seven numbers, or ten digits, and reproduce them in a while, if I sort of repeat them

39:46to myself a few times, so that's a fairly conscious form of memorization.

39:53On the other hand, how do I recognize your face, I have no idea.

39:57My brain has a whole bunch of specialized hardware that knows how to recognize faces,

40:04I don't know how much of that is sort of coded in our DNA, and how much of that is

40:10trained over and over between the ages of zero and three, but somehow our brains know

40:17how to do lots of things like that, that are useful in our interactions with other humans,

40:26without really being conscious of how it's done anymore.

40:29Right, so our actual day to day lives, we're operating at the very highest level of abstraction,

40:36we're just not even conscious of all the little details underlying it.

40:39There's compilers on top of, it's like turtles on top of turtles, or turtles all the way

40:43down, there's compilers all the way down, but that's essentially, you say that there's

40:48no magic, that's what I, what I was trying to get at, I think, is with Descartes started

40:54this whole train of saying that there's no magic, I mean, there's all this beforehand.

40:59Well didn't Descartes also have the notion though that the soul and the body were fundamentally

41:06separate?

41:07Separate, yeah, I think he had to write in God in there for political reasons, so I don't

41:11know actually, I'm not a historian, but there's notions in there that all of reasoning, all

41:17of human thought can be formalized.

41:20I think that continued in the 20th century with Russell and with Gadot's incompleteness

41:28theorem, this debate of what are the limits of the things that could be formalized, that's

41:33where the Turing machine came along, and this exciting idea, I mean, underlying a lot of

41:37computing that you can do quite a lot with a computer.

41:43You can encode a lot of the stuff we're talking about in terms of recognizing faces and so

§03Transcript · 41:47–1:00:25

41:47on, theoretically, in an algorithm that can then run on a computer.

41:53And in that context, I'd like to ask programming in a philosophical way, what does it mean

42:05to program a computer?

42:06So you said you write a Python program or compiled a C++ program that compiles to some

42:13byte code, it's forming layers, you're programming a layer of abstraction that's higher, how

42:21do you see programming in that context?

42:24Can it keep getting higher and higher levels of abstraction?

42:29I think at some point the higher levels of abstraction will not be called programming

42:35and they will not resemble what we call programming at the moment.

42:44There will not be source code, I mean, there will still be source code sort of at a lower

42:52level of the machine, just like there are still molecules and electrons and sort of

42:59proteins in our brains, but, and so there's still programming and system administration

43:09and who knows what, to keep the machine running, but what the machine does is a different level

43:15of abstraction in a sense, and as far as I understand the way that for the last decade

43:23or more people have made progress with things like facial recognition or the self driving

43:28cars is all by endless, endless amounts of training data where at least as a lay person,

43:38and I feel myself totally as a lay person in that field, it looks like the researchers

43:47who publish the results don't necessarily know exactly how their algorithms work, and

43:57I often get upset when I sort of read a sort of a fluff piece about Facebook in the newspaper

44:04or social networks and they say, well, algorithms, and that's like a totally different interpretation

44:12of the word algorithm, because for me, the way I was trained or what I learned when I

44:19was eight or ten years old, an algorithm is a set of rules that you completely understand

44:25that can be mathematically analyzed and you can prove things.

44:30You can like prove that Aristotelian sieve produces all prime numbers and only prime

44:37numbers.

44:38Yeah.

44:39So I don't know if you know who Andrej Karpathy is, I'm afraid not.

44:44So he's a head of AI at Tesla now, but he was at Stanford before and he has this cheeky

44:51way of calling this concept software 2.0.

44:56So let me disentangle that for a second.

45:00So kind of what you're referring to is the traditional, the algorithm, the concept of

45:06an algorithm, something that's there, it's clear, you can read it, you understand it,

45:09you can prove it's functioning as kind of software 1.0.

45:14And what software 2.0 is, is exactly what you described, which is you have neural networks,

45:21which is a type of machine learning that you feed a bunch of data and that neural network

45:26learns to do a function.

45:30All you specify is the inputs and the outputs you want and you can't look inside.

45:35You can't analyze it.

45:37All you can do is train this function to map the inputs to the outputs by giving a lot

45:41of data.

45:42And that's as programming becomes getting a lot of data.

45:47That's what programming is.

45:48Well, that would be programming 2.0.

45:52To programming 2.0.

45:53I wouldn't call that programming.

45:55It's just a different activity.

45:57Just like building organs out of cells is not called chemistry.

46:02Well, so let's just step back and think sort of more generally, of course.

46:09But you know, it's like as a parent teaching your kids, things can be called programming.

46:18In that same sense, that's how programming is being used.

46:22You're providing them data, examples, use cases.

46:27So imagine writing a function not by, not with for loops and clearly readable text,

46:36but more saying, well, here's a lot of examples of what this function should take.

46:42And here's a lot of examples of when it takes those functions, it should do this.

46:47And then figure out the rest.

46:50So that's the 2.0 concept.

46:52And so the question I have for you is like, it's a very fuzzy way.

46:58This is the reality of a lot of these pattern recognition systems and so on.

47:01It's a fuzzy way of quote unquote programming.

47:05What do you think about this kind of world?

47:09Should it be called something totally different than programming?

47:13If you're a software engineer, does that mean you're designing systems that are very, can

47:21be systematically tested, evaluated, they have a very specific specification and then this

47:28other fuzzy software 2.0 world, machine learning world, that's something else totally?

47:33Or is there some intermixing that's possible?

47:41Well the question is probably only being asked because we don't quite know what that software

47:482.0 actually is.

47:51And I think there is a truism that every task that AI has tackled in the past, at some point

48:02we realized how it was done and then it was no longer considered part of artificial intelligence

48:09because it was no longer necessary to use that term.

48:15It was just, oh now we know how to do this.

48:21And a new field of science or engineering has been developed and I don't know if sort

48:30of every form of learning or sort of controlling computer systems should always be called programming.

48:39So I don't know, maybe I'm focused too much on the terminology.

48:43But I expect that there just will be different concepts where people with sort of different

48:56education and a different model of what they're trying to do will develop those concepts.

49:07I guess if you could comment on another way to put this concept is, I think the kind of

49:17functions that neural networks provide is things as opposed to being able to upfront

49:23prove that this should work for all cases you throw at it.

49:28All you're able, it's the worst case analysis versus average case analysis.

49:32All you're able to say is it seems on everything we've tested to work 99.9% of the time, but

49:39we can't guarantee it and it fails in unexpected ways.

49:44We can't even give you examples of how it fails in unexpected ways, but it's like really

49:48good most of the time.

49:50Is there no room for that in current ways we think about programming?

50:00programming 1.0 is actually sort of getting to that point too, where the sort of the ideal

50:11of a bug free program has been abandoned long ago by most software developers.

50:21We only care about bugs that manifest themselves often enough to be annoying.

50:30And we're willing to take the occasional crash or outage or incorrect result for granted

50:40because we can't possibly, we don't have enough programmers to make all the code bug free

50:47and it would be an incredibly tedious business.

50:50And if you try to throw formal methods at it, it becomes even more tedious.

50:56So every once in a while the user clicks on a link and somehow they get an error and the

51:05average user doesn't panic.

51:07They just click again and see if it works better the second time, which often magically

51:14it does, or they go up and they try some other way of performing their tasks.

51:21So that's sort of an end to end recovery mechanism and inside systems there is all

51:29sorts of retries and timeouts and fallbacks and I imagine that that sort of biological

51:39systems are even more full of that because otherwise they wouldn't survive.

51:46Do you think programming should be taught and thought of as exactly what you just said?

51:54I come from this kind of, you're always denying that fact always.

52:01In sort of basic programming education, the sort of the programs you're having students

52:12write are so small and simple that if there is a bug you can always find it and fix it.

52:23Because the sort of programming as it's being taught in some, even elementary, middle schools,

52:29in high school, introduction to programming classes in college typically, it's programming

52:36in the small.

52:38Very few classes sort of actually teach software engineering, building large systems.

52:47Every summer here at Dropbox we have a large number of interns.

52:51Every tech company on the West Coast has the same thing.

52:56These interns are always amazed because this is the first time in their life that they

53:02see what goes on in a really large software development environment.

53:12Everything they've learned in college was almost always about a much smaller scale and

53:20somehow that difference in scale makes a qualitative difference in how you do things and how you

53:27think about it.

53:29If you then take a few steps back into decades, 70s and 80s, when you were first thinking

53:36about Python or just that world of programming languages, did you ever think that there would

53:41be systems as large as underlying Google, Facebook, and Dropbox?

53:46Did you, when you were thinking about Python?

53:51I was actually always caught by surprise by sort of this, yeah, pretty much every stage

53:57of computing.

53:59So maybe just because you've spoken in other interviews, but I think the evolution of programming

54:07languages are fascinating and it's especially because it leads from my perspective towards

54:13greater and greater degrees of intelligence.

54:15I learned the first programming language I played with in Russia was with the Turtle

54:21logo.

54:22Logo, yeah.

54:24And if you look, I just have a list of programming languages, all of which I've now played with

54:29a little bit.

54:30I mean, they're all beautiful in different ways from Fortran, Cobalt, Lisp, Algol 60,

54:36Basic, Logo again, C, as a few, the object oriented came along in the 60s, Simula, Pascal,

54:46Smalltalk.

54:47All of that leads.

54:48They're all the classics.

54:49The classics.

54:50Yeah.

54:51The classic hits, right?

54:52Steam, that's built on top of Lisp.

54:58On the database side, SQL, C++, and all of that leads up to Python, Pascal too, and that's

55:05before Python, MATLAB, these kind of different communities, different languages.

55:10So can you talk about that world?

55:13I know that sort of Python came out of ABC, which I actually never knew that language.

55:18I just, having researched this conversation, went back to ABC and it looks remarkably,

55:24it has a lot of annoying qualities, but underneath those, like all caps and so on, but underneath

55:31that, there's elements of Python that are quite, they're already there.

55:35That's where I got all the good stuff.

55:37All the good stuff.

55:38So, but in that world, you're swimming these programming languages, were you focused on

55:41just the good stuff in your specific circle, or did you have a sense of what is everyone

55:48chasing?

55:49You said that every programming language is built to scratch an itch.

55:57Were you aware of all the itches in the community?

55:59And if not, or if yes, I mean, what itch were you trying to scratch with Python?

56:05Well, I'm glad I wasn't aware of all the itches because I would probably not have been able

56:12to do anything.

56:14I mean, if you're trying to solve every problem at once, you'll solve nothing.

56:19Well, yeah, it's too overwhelming.

56:23And so I had a very, very focused problem.

56:28I wanted a programming language that sat somewhere in between shell scripting and C. And now,

56:41arguably, there is like, one is higher level, one is lower level.

56:48And Python is sort of a language of an intermediate level, although it's still pretty much at

56:56the high level end.

57:00I was thinking about much more about, I want a tool that I can use to be more productive

57:11as a programmer in a very specific environment.

57:16And I also had given myself a time budget for the development of the tool.

57:22And that was sort of about three months for both the design, like thinking through what

57:29are all the features of the language syntactically and semantically, and how do I implement the

57:38whole pipeline from parsing the source code to executing it.

57:43So I think both with the timeline and the goals, it seems like productivity was at the

57:51core of it as a goal.

57:54So like, for me in the 90s, and the first decade of the 21st century, I was always doing

58:01machine learning, AI programming for my research was always in C++.

58:07And then the other people who are a little more mechanical engineering, electrical engineering,

58:14are MATLABby.

58:15They're a little bit more MATLAB focused.

58:18Those are the world, and maybe a little bit Java too.

58:21But people who are more interested in emphasizing the object oriented nature of things.

58:29So within the last 10 years or so, especially with the oncoming of neural networks and these

58:34packages that are built on Python to interface with neural networks, I switched to Python

58:41and it's just, I've noticed a significant boost that I can't exactly, because I don't

58:47think about it, but I can't exactly put into words why I'm just much, much more productive.

58:52Just being able to get the job done much, much faster.

58:56So how do you think, whatever that qualitative difference is, I don't know if it's quantitative,

59:01it could be just a feeling, I don't know if I'm actually more productive, but how

59:07do you think about...

59:08You probably are.

59:09Yeah.

59:10Well, that's right.

59:11I think there's elements, let me just speak to one aspect that I think that was affecting

59:15my productivity is C++ was, I really enjoyed creating performant code and creating a beautiful

59:26structure where everything that, you know, this kind of going into this, especially with

59:31the newer and newer standards of templated programming of just really creating this beautiful

59:37formal structure that I found myself spending most of my time doing that as opposed to getting

59:42it, parsing a file and extracting a few keywords or whatever the task was trying to do.

59:47So what is it about Python?

59:49How do you think of productivity in general as you were designing it now, sort of through

59:54the decades, last three decades, what do you think it means to be a productive programmer?

60:00And how did you try to design it into the language?

60:03There are different tasks and as a programmer, it's useful to have different tools available

60:10that sort of are suitable for different tasks.

60:13So I still write C code, I still write shell code, but I write most of my things in Python.

§04Transcript · 1:00:25–1:20:37

60:25Why do I still use those other languages, because sometimes the task just demands it.

60:33And well, I would say most of the time the task actually demands a certain language because

60:39the task is not write a program that solves problem X from scratch, but it's more like

60:45fix a bug in existing program X or add a small feature to an existing large program.

60:56But even if you're not constrained in your choice of language by context like that, there

61:10is still the fact that if you write it in a certain language, then you have this balance

61:21between how long does it take you to write the code and how long does the code run?

61:31And when you're in the phase of exploring solutions, you often spend much more time

61:42writing the code than running it because every time you've run it, you see that the output

61:50is not quite what you wanted and you spend some more time coding.

61:58And a language like Python just makes that iteration much faster because there are fewer

62:06details that you have to get right before your program compiles and runs.

62:19There are libraries that do all sorts of stuff for you, so you can sort of very quickly take

62:26a bunch of existing components, put them together, and get your prototype application running.

62:36Just like when I was building electronics, I was using a breadboard most of the time,

62:42so I had this sprawl out circuit that if you shook it, it would stop working because it

62:51was not put together very well, but it functioned and all I wanted was to see that it worked

62:58and then move on to the next schematic or design or add something to it.

63:05Once you've sort of figured out, oh, this is the perfect design for my radio or light

63:10sensor or whatever, then you can say, okay, how do we design a PCB for this?

63:15How do we solder the components in a small space?

63:19How do we make it so that it is robust against, say, voltage fluctuations or mechanical disruption?

63:32I know nothing about that when it comes to designing electronics, but I know a lot about

63:37that when it comes to writing code.

63:40So the initial steps are efficient, fast, and there's not much stuff that gets in the

63:46way, but you're kind of describing, like Darwin described the evolution of species, right?

63:56You're observing of what is true about Python.

64:00Now if you take a step back, if the act of creating languages is art and you had three

64:07months to do it, initial steps, so you just specified a bunch of goals, sort of things

64:15that you observe about Python, perhaps you had those goals, but how do you create the

64:19rules, the syntactic structure, the features that result in those?

64:25So I have in the beginning and I have follow up questions about through the evolution of

64:29Python too, but in the very beginning when you were sitting there creating the lexical

64:35analyzer or whatever.

64:37Python was still a big part of it because I sort of, I said to myself, I don't want

64:47to have to design everything from scratch, I'm going to borrow features from other languages

64:53that I like.

64:54Oh, interesting.

64:55So you basically, exactly, you first observe what you like.

64:58Yeah, and so that's why if you're 17 years old and you want to sort of create a programming

65:05language, you're not going to be very successful at it because you have no experience with

65:11other languages, whereas I was in my, let's say mid 30s, I had written parsers before,

65:24so I had worked on the implementation of ABC, I had spent years debating the design of ABC

65:30with its authors, with its designers, I had nothing to do with the design, it was designed

65:37fully as it ended up being implemented when I joined the team.

65:42But so you borrow ideas and concepts and very concrete sort of local rules from different

65:51languages like the indentation and certain other syntactic features from ABC, but I chose

65:58to borrow string literals and how numbers work from C and various other things.

66:07So in then, if you take that further, so yet you've had this funny sounding, but I think

66:13surprisingly accurate and at least practical title of benevolent dictator for life for

66:21quite, you know, for the last three decades or whatever, or no, not the actual title,

66:25but functionally speaking.

66:27So you had to make decisions, design decisions.

66:34Can you maybe, let's take Python 2, so releasing Python 3 as an example.

66:41It's not backward compatible to Python 2 in ways that a lot of people know.

66:47So what was that deliberation, discussion, decision like?

66:50Yeah.

66:51What was the psychology of that experience?

66:54Do you regret any aspects of how that experience undergone that?

66:58Well, yeah, so it was a group process really.

67:03At that point, even though I was BDFL in name and certainly everybody sort of respected

67:11my position as the creator and the current sort of owner of the language design, I was

67:22looking at everyone else for feedback.

67:26Sort of Python 3.0 in some sense was sparked by other people in the community pointing

67:35out, oh, well, there are a few issues that sort of bite users over and over.

67:46Can we do something about that?

67:48And for Python 3, we took a number of those Python words as they were called at the time

67:56and we said, can we try to sort of make small changes to the language that address those

68:04words?

68:06And we had sort of in the past, we had always taken backwards compatibility very seriously.

68:15And so many Python words in earlier versions had already been resolved because they could

68:20be resolved while maintaining backwards compatibility or sort of using a very gradual path of evolution

68:29of the language in a certain area.

68:31And so we were stuck with a number of words that were widely recognized as problems, not

68:39like roadblocks, but nevertheless sort of things that some people trip over and you know that

68:47that's always the same thing that people trip over when they trip.

68:52And we could not think of a backwards compatible way of resolving those issues.

68:58But it's still an option to not resolve the issues, right?

69:01And so yes, for a long time, we had sort of resigned ourselves to, well, okay, the language

69:07is not going to be perfect in this way and that way and that way.

69:13And we sort of, certain of these, I mean, there are still plenty of things where you

69:19can say, well, that particular detail is better in Java or in R or in Visual Basic or whatever.

69:32And we're okay with that because, well, we can't easily change it.

69:37It's not too bad.

69:38We can do a little bit with user education or we can have a static analyzer or warnings

69:47in the parse or something.

69:49But there were things where we thought, well, these are really problems that are not going

69:54away.

69:55They are getting worse in the future.

70:00We should do something about that.

70:03But ultimately there is a decision to be made, right?

70:05So was that the toughest decision in the history of Python you had to make as the benevolent

70:13dictator for life?

70:15Or if not, what are there, maybe even on the smaller scale, what was the decision where

70:20you were really torn up about?

70:22Well, the toughest decision was probably to resign.

70:25All right, let's go there.

70:28Hold on a second then.

70:29Let me just, because in the interest of time too, because I have a few cool questions for

70:33you and let's touch a really important one because it was quite dramatic and beautiful

70:38in certain kinds of ways.

70:40In July this year, three months ago, you wrote, now that PEP 572 is done, I don't ever want

70:47to have to fight so hard for a PEP and find that so many people despise my decisions.

70:52I would like to remove myself entirely from the decision process.

70:56I'll still be there for a while as an ordinary core developer and I'll still be available

71:01to mentor people, possibly more available.

71:05But I'm basically giving myself a permanent vacation from being BDFL, benevolent dictator

71:11for life.

71:12And you all will be on your own.

71:14First of all, it's almost Shakespearean.

71:19I'm not going to appoint a successor.

71:22So what are you all going to do?

71:24Create a democracy, anarchy, a dictatorship, a federation?

71:29So that was a very dramatic and beautiful set of statements.

71:34It's almost, it's open ended nature called the community to create a future for Python.

71:40It's just kind of a beautiful aspect to it.

71:43So what, and dramatic, you know, what was making that decision like?

71:48What was on your heart, on your mind, stepping back now a few months later?

71:54I'm glad you liked the writing because it was actually written pretty quickly.

72:02It was literally something like after months and months of going around in circles, I had

72:14finally approved PEP572, which I had a big hand in its design, although I didn't initiate

72:26it originally.

72:27I sort of gave it a bunch of nudges in a direction that would be better for the language.

72:36So sorry, just to ask, is async IO, that's the one or no?

72:40PEP572 was actually a small feature, which is assignment expressions.

72:49That had been, there was just a lot of debate where a lot of people claimed that they knew

72:58what was Pythonic and what was not Pythonic, and they knew that this was going to destroy

73:04the language.

73:06This was like a violation of Python's most fundamental design philosophy, and I thought

73:11that was all bullshit because I was in favor of it, and I would think I know something

73:17about Python's design philosophy.

73:19So I was really tired and also stressed of that thing, and literally after sort of announcing

73:26I was going to accept it, a certain Wednesday evening I had finally sent the email, it's

73:34accepted.

73:35I can just go implement it.

73:38So I went to bed feeling really relieved, that's behind me.

73:44And I wake up Thursday morning, 7 a.m., and I think, well, that was the last one that's

73:54going to be such a terrible debate, and that's the last time that I let myself be so stressed

74:03out about a pep decision.

74:06I should just resign.

74:07I've been sort of thinking about retirement for half a decade, I've been joking and sort

74:15of mentioning retirement, sort of telling the community at some point in the future

74:22I'm going to retire, don't take that FL part of my title too literally.

74:29And I thought, okay, this is it.

74:32I'm done, I had the day off, I wanted to have a good time with my wife, we were going to

74:39a little beach town nearby, and in I think maybe 15, 20 minutes I wrote that thing that

74:48you just called Shakespearean.

74:51The funny thing is I didn't even realize what a monumental decision it was, because

75:01five minutes later I read that link to my message back on Twitter, where people were

75:09already discussing on Twitter, Guido resigned as the BDFL.

75:15And I had posted it on an internal forum that I thought was only read by core developers,

75:22so I thought I would at least have one day before the news would sort of get out.

75:28The on your own aspects had also an element of quite, it was quite a powerful element

75:36of the uncertainty that lies ahead, but can you also just briefly talk about, for example

75:43I play guitar as a hobby for fun, and whenever I play people are super positive, super friendly,

75:49they're like, this is awesome, this is great.

75:52But sometimes I enter as an outside observer, I enter the programming community and there

75:57seems to sometimes be camps on whatever the topic, and the two camps, the two or plus

76:05camps, are often pretty harsh at criticizing the opposing camps.

76:11As an onlooker, I may be totally wrong on this, but what do you think of this?

76:14Yeah, holy wars are sort of a favorite activity in the programming community.

76:19And what is the psychology behind that?

76:22Is that okay for a healthy community to have?

76:25Is that a productive force ultimately for the evolution of a language?

76:29Well, if everybody is patting each other on the back and never telling the truth, it would

76:39not be a good thing.

76:40I think there is a middle ground where sort of being nasty to each other is not okay,

76:52but there is a middle ground where there is healthy ongoing criticism and feedback that

77:01is very productive.

77:04And you mean at every level you see that.

77:07I mean, someone proposes to fix a very small issue in a code base, chances are that some

77:17reviewer will sort of respond by saying, well, actually, you can do it better the other way.

77:27When it comes to deciding on the future of the Python core developer community, we now

77:34have, I think, five or six competing proposals for a constitution.

77:41So that future, do you have a fear of that future, do you have a hope for that future?

77:48I'm very confident about that future.

77:51By and large, I think that the debate has been very healthy and productive.

77:58And I actually, when I wrote that resignation email, I knew that Python was in a very good

78:07spot and that the Python core developer community, the group of 50 or 100 people who sort of

78:16write or review most of the code that goes into Python, those people get along very well

78:24most of the time.

78:27A large number of different areas of expertise are represented, different levels of experience

78:40in the Python core dev community, different levels of experience completely outside it

78:45in software development in general, large systems, small systems, embedded systems.

78:53So I felt okay resigning because I knew that the community can really take care of itself.

79:03And out of a grab bag of future feature developments, let me ask if you can comment, maybe on all

79:12very quickly, concurrent programming, parallel computing, async IO.

79:19These are things that people have expressed hope, complained about, whatever, have discussed

79:24on Reddit.

79:25Async IO, so the parallelization in general, packaging, I was totally clueless on this.

79:32I just used pip to install stuff, but apparently there's pipenv, poetry, there's these dependency

79:38packaging systems that manage dependencies and so on.

79:41They're emerging and there's a lot of confusion about what's the right thing to use.

79:45Then also functional programming, are we going to get more functional programming or not,

79:56this kind of idea.

79:59And of course the GIL connected to the parallelization, I suppose, the global interpreter lock problem.

80:08Can you just comment on whichever you want to comment on?

80:12Well, let's take the GIL and parallelization and async IO as one topic.

80:25I'm not that hopeful that Python will develop into a sort of high concurrency, high parallelism

80:35language.

§05Transcript · 1:20:37–1:26:44

80:37That's sort of the way the language is designed, the way most users use the language, the way

80:44the language is implemented, all make that a pretty unlikely future.

80:50So you think it might not even need to, really the way people use it, it might not be something

80:56that should be of great concern.

80:58I think async IO is a special case because it sort of allows overlapping IO and only

81:05IO and that is a sort of best practice of supporting very high throughput IO, many connections

81:18per second.

81:21I'm not worried about that.

81:22I think async IO will evolve.

81:25There are a couple of competing packages.

81:27We have some very smart people who are sort of pushing us to make async IO better.

81:36Parallel computing, I think that Python is not the language for that.

81:43There are ways to work around it, but you can't expect to write an algorithm in Python

81:53and have a compiler automatically parallelize that.

81:57What you can do is use a package like NumPy and there are a bunch of other very powerful

82:03packages that sort of use all the CPUs available because you tell the package, here's the data,

82:12here's the abstract operation to apply over it, go at it, and then we're back in the C++

82:19world.

82:20Those packages are themselves implemented usually in C++.

82:24That's where TensorFlow and all these packages come in, where they parallelize across GPUs,

82:28for example, they take care of that for you.

82:30In terms of packaging, can you comment on the future of packaging in Python?

82:36Packaging has always been my least favorite topic.

82:42It's a really tough problem because the OS and the platform want to own packaging, but

82:55their packaging solution is not specific to a language.

83:01If you take Linux, there are two competing packaging solutions for Linux or for Unix

83:07in general, but they all work across all languages.

83:15Several languages like Node, JavaScript, Ruby, and Python all have their own packaging solutions

83:24that only work within the ecosystem of that language.

83:29What should you use?

83:31That is a tough problem.

83:34My own approach is I use the system packaging system to install Python, and I use the Python

83:43packaging system then to install third party Python packages.

83:49That's what most people do.

83:51Ten years ago, Python packaging was really a terrible situation.

83:56Nowadays, pip is the future, there is a separate ecosystem for numerical and scientific Python

84:05based on Anaconda.

84:08Those two can live together.

84:09I don't think there is a need for more than that.

84:13That's packaging.

84:14Well, at least for me, that's where I've been extremely happy.

84:18I didn't even know this was an issue until it was brought up.

84:22In the interest of time, let me sort of skip through a million other questions I have.

84:27So I watched the five and a half hour oral history that you've done with the Computer

84:32History Museum, and the nice thing about it, it gave this, because of the linear progression

84:37of the interview, it gave this feeling of a life, you know, a life well lived with interesting

84:44things in it, sort of a pretty, I would say a good spend of this little existence we have

84:52on Earth.

84:53So, outside of your family, looking back, what about this journey are you really proud

84:59of?

85:00Are there moments that stand out, accomplishments, ideas?

85:07Is it the creation of Python itself that stands out as a thing that you look back and say,

85:14damn, I did pretty good there?

85:16Well, I would say that Python is definitely the best thing I've ever done, and I wouldn't

85:25sort of say just the creation of Python, but the way I sort of raised Python, like a baby.

85:36I didn't just conceive a child, but I raised a child, and now I'm setting the child free

85:42in the world, and I've set up the child to sort of be able to take care of himself, and

85:50I'm very proud of that.

85:52And as the announcer of Monty Python's Flying Circus used to say, and now for something

85:56completely different, do you have a favorite Monty Python moment, or a moment in Hitchhiker's

86:02Guide, or any other literature show or movie that cracks you up when you think about it?

86:07You can always play me the dead parrot sketch.

86:11Oh, that's brilliant.

86:13That's my favorite as well.

86:14It's pushing up the daisies.

86:15Okay, Greta, thank you so much for talking with me today.

86:20Lex, this has been a great conversation.

— 读到这里,多懂一点。 —