[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:03.30,0:00:08.36,Default,,0000,0000,0000,,My name is Leslie Lamport and I am a computer scientist, Dialogue: 0,0:00:09.54,0:00:12.50,Default,,0000,0000,0000,,which is something that didn't really exist Dialogue: 0,0:00:12.50,0:00:14.74,Default,,0000,0000,0000,,when I started being a computer scientist Dialogue: 0,0:00:14.74,0:00:18.16,Default,,0000,0000,0000,,and it took me a while to figure out that I was one. Dialogue: 0,0:00:18.16,0:00:20.96,Default,,0000,0000,0000,,My relationship with computers began. Dialogue: 0,0:00:20.96,0:00:23.87,Default,,0000,0000,0000,,As a programmer, it's never quite occurred to me Dialogue: 0,0:00:23.87,0:00:26.29,Default,,0000,0000,0000,,that I was doing anything scientific Dialogue: 0,0:00:26.29,0:00:28.99,Default,,0000,0000,0000,,until after I had published enough papers Dialogue: 0,0:00:28.99,0:00:31.76,Default,,0000,0000,0000,,that it finally occurred to me. Dialogue: 0,0:00:31.76,0:00:34.16,Default,,0000,0000,0000,,My education was as a mathematician. Dialogue: 0,0:00:34.16,0:00:39.50,Default,,0000,0000,0000,,It was just natural for me to think about computers as a mathematician. Dialogue: 0,0:00:39.92,0:00:41.81,Default,,0000,0000,0000,,When you write an algorithm, Dialogue: 0,0:00:41.81,0:00:45.20,Default,,0000,0000,0000,,you need to have a proof that it's correct. Dialogue: 0,0:00:45.20,0:00:49.24,Default,,0000,0000,0000,,An algorithm without a proof is a conjecture, Dialogue: 0,0:00:49.24,0:00:51.28,Default,,0000,0000,0000,,it's not a theorem. Dialogue: 0,0:00:51.28,0:00:56.35,Default,,0000,0000,0000,,And if you're proving things well, that's means "Mathematics". Dialogue: 0,0:00:56.70,0:01:01.12,Default,,0000,0000,0000,,Computer scientists tend to think in terms of programming languages. Dialogue: 0,0:01:01.12,0:01:05.54,Default,,0000,0000,0000,,One of the epiphanies in my career was the realization Dialogue: 0,0:01:05.54,0:01:08.94,Default,,0000,0000,0000,,that I was not writing programs as a computer scientist Dialogue: 0,0:01:08.94,0:01:10.99,Default,,0000,0000,0000,,I was designing algorithms. Dialogue: 0,0:01:11.04,0:01:14.64,Default,,0000,0000,0000,,I came to realize that if I'm not writing a program, Dialogue: 0,0:01:14.64,0:01:17.43,Default,,0000,0000,0000,,I shouldn't use a programming language. Dialogue: 0,0:01:17.60,0:01:20.88,Default,,0000,0000,0000,,People confuse "Programming" with "Coding". Dialogue: 0,0:01:20.88,0:01:25.04,Default,,0000,0000,0000,,Coding is to programming, while typing is to writing. Dialogue: 0,0:01:25.04,0:01:27.42,Default,,0000,0000,0000,,Writing is something that involves mental effort. Dialogue: 0,0:01:27.42,0:01:29.99,Default,,0000,0000,0000,,You're thinking about what you're going to say. Dialogue: 0,0:01:29.99,0:01:31.52,Default,,0000,0000,0000,,The words have some importance Dialogue: 0,0:01:31.52,0:01:35.44,Default,,0000,0000,0000,,but in some sense, even they are secondary to the ideas. Dialogue: 0,0:01:35.96,0:01:39.67,Default,,0000,0000,0000,,In the same way, programs are built on ideas. Dialogue: 0,0:01:39.67,0:01:41.03,Default,,0000,0000,0000,,They have to do something. Dialogue: 0,0:01:41.03,0:01:42.69,Default,,0000,0000,0000,,And what they're supposed to do, Dialogue: 0,0:01:42.69,0:01:46.66,Default,,0000,0000,0000,,I mean it's like what writing is supposed to convey. Dialogue: 0,0:01:46.80,0:01:49.21,Default,,0000,0000,0000,,If people are trying to learn programming Dialogue: 0,0:01:49.21,0:01:50.99,Default,,0000,0000,0000,,by being taught to code Dialogue: 0,0:01:50.99,0:01:55.80,Default,,0000,0000,0000,,well, they're being taught writing by being taught how to type. Dialogue: 0,0:01:55.80,0:01:58.03,Default,,0000,0000,0000,,And that doesn't make much sense. Dialogue: 0,0:01:59.12,0:02:03.00,Default,,0000,0000,0000,,The best way I have for teaching about programming Dialogue: 0,0:02:03.00,0:02:05.66,Default,,0000,0000,0000,,as distinct from coding is to think about Dialogue: 0,0:02:05.66,0:02:08.74,Default,,0000,0000,0000,,what the program is supposed to do mathematically. Dialogue: 0,0:02:08.74,0:02:11.80,Default,,0000,0000,0000,,There's a very big practical problem with this. Dialogue: 0,0:02:11.80,0:02:15.100,Default,,0000,0000,0000,,The mathematical education in this country is pretty terrible. Dialogue: 0,0:02:15.100,0:02:19.33,Default,,0000,0000,0000,,Most people wind up being afraid of mathematics. Dialogue: 0,0:02:19.33,0:02:22.15,Default,,0000,0000,0000,,This is even senior programmers. Dialogue: 0,0:02:22.15,0:02:24.91,Default,,0000,0000,0000,,I've developed a language called TLA+ Dialogue: 0,0:02:24.91,0:02:29.52,Default,,0000,0000,0000,,for writing down the ideas that go into the program. Dialogue: 0,0:02:29.52,0:02:34.44,Default,,0000,0000,0000,,Before you do any coding, it's a pretty hard thing for engineers to get into. Dialogue: 0,0:02:34.44,0:02:39.39,Default,,0000,0000,0000,,But when they do, it develops their ability to think mathematically. Dialogue: 0,0:02:51.76,0:02:54.56,Default,,0000,0000,0000,,A distributed system is one Dialogue: 0,0:02:54.56,0:02:59.28,Default,,0000,0000,0000,,in which your computer can be rendered useless Dialogue: 0,0:02:59.28,0:03:04.40,Default,,0000,0000,0000,,by the failure of a computer that you didn't even know existed. Dialogue: 0,0:03:04.40,0:03:08.81,Default,,0000,0000,0000,,Non-distributed computing is when different processes communicate Dialogue: 0,0:03:08.81,0:03:11.20,Default,,0000,0000,0000,,by using the same memory. Dialogue: 0,0:03:11.20,0:03:14.33,Default,,0000,0000,0000,,And distributed computing means that Dialogue: 0,0:03:14.33,0:03:18.02,Default,,0000,0000,0000,,they're communicating with one another by sending messages. Dialogue: 0,0:03:18.32,0:03:24.17,Default,,0000,0000,0000,,Now my interest in distributed systems came about by serendipity. Dialogue: 0,0:03:24.17,0:03:29.100,Default,,0000,0000,0000,,I received a preprint of a paper by Robert Thomas and Paul Johnson, Dialogue: 0,0:03:29.100,0:03:33.73,Default,,0000,0000,0000,,who had an algorithm for implementing distributed databases. Dialogue: 0,0:03:33.73,0:03:34.79,Default,,0000,0000,0000,,These are databases Dialogue: 0,0:03:34.79,0:03:39.72,Default,,0000,0000,0000,,where you could have multiple copies of the data sitting at different computers. Dialogue: 0,0:03:39.72,0:03:43.79,Default,,0000,0000,0000,,So that programs on each computer could have rapid access to the data. Dialogue: 0,0:03:43.79,0:03:46.76,Default,,0000,0000,0000,,But they had to be synchronized Dialogue: 0,0:03:46.76,0:03:52.68,Default,,0000,0000,0000,,so that processes on all the computers got consistent views of what the data was. Dialogue: 0,0:03:52.88,0:03:57.18,Default,,0000,0000,0000,,I happen to have become quite familiar with special relativity. Dialogue: 0,0:03:57.18,0:04:00.16,Default,,0000,0000,0000,,One of the things that special relativity teaches you Dialogue: 0,0:04:00.16,0:04:02.83,Default,,0000,0000,0000,,is that two different observers Dialogue: 0,0:04:02.88,0:04:06.85,Default,,0000,0000,0000,,have different notions of what at the same time means. Dialogue: 0,0:04:07.04,0:04:10.24,Default,,0000,0000,0000,,But there's one notion that is invariant: Dialogue: 0,0:04:10.24,0:04:14.86,Default,,0000,0000,0000,,there's a certain notion of one event happening before another event. Dialogue: 0,0:04:14.86,0:04:16.04,Default,,0000,0000,0000,,And that means Dialogue: 0,0:04:16.04,0:04:23.10,Default,,0000,0000,0000,,that it's possible for information to be transmitted from one event to the others. Dialogue: 0,0:04:23.60,0:04:27.43,Default,,0000,0000,0000,,When the information cannot travel faster than the speed of light, Dialogue: 0,0:04:27.60,0:04:29.68,Default,,0000,0000,0000,,I realized that Dialogue: 0,0:04:29.68,0:04:35.97,Default,,0000,0000,0000,,that notion of causality was violated by the algorithm of Thomas and Johnson. Dialogue: 0,0:04:35.97,0:04:40.67,Default,,0000,0000,0000,,It's completely analogous to the relation in special relativity. Dialogue: 0,0:04:40.88,0:04:46.88,Default,,0000,0000,0000,,So what I did is I wrote a paper that explained this notion of causality. Dialogue: 0,0:04:46.98,0:04:51.35,Default,,0000,0000,0000,,One could solve any distributed system problem Dialogue: 0,0:04:51.35,0:04:55.68,Default,,0000,0000,0000,,by building what I called a state machine. Dialogue: 0,0:04:55.68,0:04:59.93,Default,,0000,0000,0000,,Think of it as an abstract computer that has one thing at a time. Dialogue: 0,0:04:59.93,0:05:05.10,Default,,0000,0000,0000,,You make sure that all the computers in this distributed system Dialogue: 0,0:05:05.10,0:05:10.49,Default,,0000,0000,0000,,cooperate to implement a single state machine. Dialogue: 0,0:05:10.49,0:05:14.73,Default,,0000,0000,0000,,And that idea has become fundamental Dialogue: 0,0:05:14.73,0:05:19.36,Default,,0000,0000,0000,,in the way, people think about building distributed systems. Dialogue: 0,0:05:19.36,0:05:24.73,Default,,0000,0000,0000,,I had never even thought about a distributed system before I wrote that paper. Dialogue: 0,0:05:25.68,0:05:28.18,Default,,0000,0000,0000,,As I progressed in my career, Dialogue: 0,0:05:28.18,0:05:31.75,Default,,0000,0000,0000,,I came to appreciate the idea of working in industry. Dialogue: 0,0:05:31.75,0:05:35.02,Default,,0000,0000,0000,,That's where most of the interesting problems that I found came from Dialogue: 0,0:05:35.02,0:05:38.49,Default,,0000,0000,0000,,You know from engineers having a problem to solve. Dialogue: 0,0:05:38.66,0:05:42.73,Default,,0000,0000,0000,,It reminds me actually of something that ''Auguste Renoir''. Dialogue: 0,0:05:42.73,0:05:48.88,Default,,0000,0000,0000,,Once said if someone asked him why he painted outside rather than in his studio. Dialogue: 0,0:05:48.88,0:05:49.82,Default,,0000,0000,0000,,And what he said is Dialogue: 0,0:05:49.82,0:05:53.36,Default,,0000,0000,0000,,"If I were painting in the studio and I wanted to paint a leaf, Dialogue: 0,0:05:53.36,0:05:55.76,Default,,0000,0000,0000,,I would be able to you think of only a half dozen Dialogue: 0,0:05:55.76,0:05:57.98,Default,,0000,0000,0000,,or so different kinds of leaves that I could paint. Dialogue: 0,0:05:57.98,0:06:00.48,Default,,0000,0000,0000,,But when I was painting outdoors, Dialogue: 0,0:06:00.48,0:06:04.00,Default,,0000,0000,0000,,there were just these millions of different kinds of leaves Dialogue: 0,0:06:04.00,0:06:06.55,Default,,0000,0000,0000,,that were there that I could paint from." Dialogue: 0,0:06:06.72,0:06:09.52,Default,,0000,0000,0000,,I found my research the same way Dialogue: 0,0:06:09.52,0:06:11.84,Default,,0000,0000,0000,,that if I sat down, you know, and just, Dialogue: 0,0:06:11.84,0:06:13.68,Default,,0000,0000,0000,,you know, contemplated my navel Dialogue: 0,0:06:13.68,0:06:14.76,Default,,0000,0000,0000,,and think about problems, you know, Dialogue: 0,0:06:14.76,0:06:17.60,Default,,0000,0000,0000,,there's a small number of problems that I could think of. Dialogue: 0,0:06:17.76,0:06:19.84,Default,,0000,0000,0000,,But there were just scares of them, Dialogue: 0,0:06:19.84,0:06:23.09,Default,,0000,0000,0000,,sitting out in industry, waiting to be, to be solved. Dialogue: 0,0:06:23.36,0:06:27.58,Default,,0000,0000,0000,,My favorite of my algorithms is the bakery algorithm. Dialogue: 0,0:06:27.58,0:06:29.68,Default,,0000,0000,0000,,It's to solve the mutual exclusion problem Dialogue: 0,0:06:29.68,0:06:33.52,Default,,0000,0000,0000,,that is keep two processes from using the printer at the same time. Dialogue: 0,0:06:33.68,0:06:36.70,Default,,0000,0000,0000,,Processes choose a number, based on the numbers Dialogue: 0,0:06:36.70,0:06:40.67,Default,,0000,0000,0000,,that have been chosen by other processes, and use an algorithm, Dialogue: 0,0:06:40.67,0:06:43.25,Default,,0000,0000,0000,,so that the lowest is allowed to use the printer. Dialogue: 0,0:06:43.25,0:06:45.55,Default,,0000,0000,0000,,But what is amazing about it Dialogue: 0,0:06:45.55,0:06:48.95,Default,,0000,0000,0000,,is it does not make an assumption Dialogue: 0,0:06:48.95,0:06:51.87,Default,,0000,0000,0000,,that almost every other algorithm makes Dialogue: 0,0:06:51.87,0:06:53.50,Default,,0000,0000,0000,,the assumption being that Dialogue: 0,0:06:53.50,0:06:58.06,Default,,0000,0000,0000,,if I say I'm changing my number from 47 to 100 Dialogue: 0,0:06:58.06,0:07:02.09,Default,,0000,0000,0000,,and you read that number, you'll either get 47 or 100. Dialogue: 0,0:07:02.09,0:07:06.24,Default,,0000,0000,0000,,But that algorithm works even if instead of getting 47 or 100, Dialogue: 0,0:07:06.24,0:07:11.46,Default,,0000,0000,0000,,you maybe got 4 700 or maybe you got 9 999. Dialogue: 0,0:07:11.92,0:07:13.92,Default,,0000,0000,0000,,The algorithm still works. Dialogue: 0,0:07:13.92,0:07:16.91,Default,,0000,0000,0000,,I didn't intend it to, I mean I didn't intend that Dialogue: 0,0:07:16.91,0:07:19.68,Default,,0000,0000,0000,,I just discovered that when I wrote the proof. Dialogue: 0,0:07:19.68,0:07:21.96,Default,,0000,0000,0000,,I never needed to make the assumption. Dialogue: 0,0:07:21.96,0:07:24.00,Default,,0000,0000,0000,,That is just so beautiful! Dialogue: 0,0:07:25.12,0:07:32.10,Default,,0000,0000,0000,,And, you know, I'm really proud that I stumbled on it.