WEBVTT

1
00:00:00.160 --> 00:00:03.960
<v Speaker 1>Think about the software you rely on the most today, right,

2
00:00:04.040 --> 00:00:06.480
<v Speaker 1>Like we look at these sleek interfaces on our phones,

3
00:00:06.679 --> 00:00:11.439
<v Speaker 1>the seamless notifications, the smooth scrolling, and we view them

4
00:00:11.480 --> 00:00:13.480
<v Speaker 1>as finished, polished machines.

5
00:00:13.640 --> 00:00:14.320
<v Speaker 2>Yeah, totally.

6
00:00:14.359 --> 00:00:17.719
<v Speaker 1>But back in nineteen seventy six, one of the absolute

7
00:00:17.960 --> 00:00:22.199
<v Speaker 1>pioneers of computer science argued that presenting software this way

8
00:00:22.399 --> 00:00:25.359
<v Speaker 1>is well, not just wrong, he said, it makes it

9
00:00:25.399 --> 00:00:28.559
<v Speaker 1>completely unfit for human appreciation.

10
00:00:28.399 --> 00:00:31.600
<v Speaker 2>Which is I mean, it is a staggering critique to

11
00:00:31.800 --> 00:00:35.000
<v Speaker 2>level at an entire industry. Oh absolutely, And that tension

12
00:00:35.079 --> 00:00:37.320
<v Speaker 2>really sits right at the core of our deep dive

13
00:00:37.359 --> 00:00:41.799
<v Speaker 2>today into Edgar W. Dykstra's seminal nineteen seventy six book

14
00:00:42.399 --> 00:00:44.679
<v Speaker 2>It's called a Discipline of Programming.

15
00:00:44.799 --> 00:00:47.520
<v Speaker 1>Yeah, in Dykster he was looking at this rapidly expanding

16
00:00:47.520 --> 00:00:50.880
<v Speaker 1>field back then, right and realizing that by focusing solely

17
00:00:50.920 --> 00:00:53.960
<v Speaker 1>on the final executable code, we were basically hiding the

18
00:00:54.000 --> 00:00:55.240
<v Speaker 1>actual art exactly.

19
00:00:55.359 --> 00:00:59.479
<v Speaker 2>We were burying the messy, beautiful mathematical design process that

20
00:00:59.600 --> 00:01:01.759
<v Speaker 2>you know the software in the first place.

21
00:01:01.560 --> 00:01:03.520
<v Speaker 1>Which is like it's like looking at the final score

22
00:01:03.560 --> 00:01:05.640
<v Speaker 1>of a chess game without ever being allowed to see

23
00:01:05.680 --> 00:01:08.799
<v Speaker 1>the brilliant strategic moves that were actually played on the board.

24
00:01:08.799 --> 00:01:11.599
<v Speaker 2>Right, you know who won, but you're entirely blind to

25
00:01:11.640 --> 00:01:13.359
<v Speaker 2>the intellect that got them there exactly.

26
00:01:13.879 --> 00:01:16.920
<v Speaker 1>And to fix this, Dykstra goes to some pretty wild

27
00:01:16.959 --> 00:01:19.879
<v Speaker 1>extremes in this book. I mean, he actually refused to

28
00:01:20.079 --> 00:01:23.280
<v Speaker 1>use any of the standard quote unquote higher level programming

29
00:01:23.359 --> 00:01:24.400
<v Speaker 1>languages of his era.

30
00:01:24.599 --> 00:01:27.920
<v Speaker 2>Yeah, he hated them. He argued that they're excessive features,

31
00:01:28.159 --> 00:01:30.760
<v Speaker 2>like all those bills and whistles we love. They actually

32
00:01:30.760 --> 00:01:33.439
<v Speaker 2>belong to the solution set rather than the problem set.

33
00:01:33.560 --> 00:01:35.599
<v Speaker 1>They're just distractions, total distractions.

34
00:01:36.159 --> 00:01:40.200
<v Speaker 2>So he just designs his own minimalist mini language specifically

35
00:01:40.560 --> 00:01:43.519
<v Speaker 2>for this text. He forces you to strip away the

36
00:01:43.519 --> 00:01:45.840
<v Speaker 2>hardware and focus purely on the logic.

37
00:01:45.959 --> 00:01:49.000
<v Speaker 1>Okay, let's unpack this because the way he visualizes a

38
00:01:49.040 --> 00:01:52.599
<v Speaker 1>program without using actual code the cardboard computer.

39
00:01:52.640 --> 00:01:56.200
<v Speaker 2>It's just the cardboard machine. Yeah. He introduces this concept

40
00:01:56.239 --> 00:02:00.599
<v Speaker 2>called executional abstraction. It's basically how we map different computations

41
00:02:00.640 --> 00:02:03.680
<v Speaker 2>onto each other so our human brains can actually grasp them.

42
00:02:04.319 --> 00:02:07.280
<v Speaker 2>And to explain this without any digital hardware, he uses

43
00:02:07.319 --> 00:02:10.479
<v Speaker 2>the classic math problem of finding the greatest common divisor

44
00:02:11.120 --> 00:02:12.719
<v Speaker 2>the GCD of two numbers.

45
00:02:12.800 --> 00:02:15.960
<v Speaker 1>Right, like say one eleven and two fifty nine exactly.

46
00:02:16.319 --> 00:02:19.800
<v Speaker 2>But he solves it using literal pieces of cardboard. He

47
00:02:19.840 --> 00:02:23.120
<v Speaker 2>asked you to imagine two completely different cardboard machines.

48
00:02:23.439 --> 00:02:26.199
<v Speaker 1>Okay, so the first machine, it's deceptively simple. It's just

49
00:02:26.280 --> 00:02:28.639
<v Speaker 1>two pieces of cardboard on top of each other. The

50
00:02:28.680 --> 00:02:32.319
<v Speaker 1>top piece says GCD one eleven two hundred and fifty

51
00:02:32.360 --> 00:02:34.199
<v Speaker 1>nine equals and when you lift that.

52
00:02:34.159 --> 00:02:36.439
<v Speaker 2>Flat, the bottom piece just says thirty seven.

53
00:02:36.599 --> 00:02:37.840
<v Speaker 1>Right, just the answer.

54
00:02:38.000 --> 00:02:40.039
<v Speaker 2>It's the ultimate black box. I mean, it gives you

55
00:02:40.080 --> 00:02:43.280
<v Speaker 2>the answer instantly, zero friction, which sounds great, right, it

56
00:02:43.280 --> 00:02:46.800
<v Speaker 2>sounds perfect, Yeah, but it possesses a catastrophic flaw for

57
00:02:46.879 --> 00:02:51.400
<v Speaker 2>a mathematician. It requires absolute blind faith in the manufacturer.

58
00:02:51.479 --> 00:02:53.639
<v Speaker 1>Yeah, you just have to trust that whoever printed that

59
00:02:53.680 --> 00:02:57.080
<v Speaker 1>cardboard didn't like make a TYPEO exactly.

60
00:02:57.240 --> 00:03:00.680
<v Speaker 2>There is zero visibility into the logic, and worse, it

61
00:03:00.719 --> 00:03:03.919
<v Speaker 2>only solves that one hyper specific iteration of the problem.

62
00:03:04.000 --> 00:03:06.039
<v Speaker 1>You're completely blind to the logic. You just have to

63
00:03:06.039 --> 00:03:09.400
<v Speaker 1>trust the system. And trust is terrible mathematics.

64
00:03:08.800 --> 00:03:12.000
<v Speaker 2>It really is, which is why Dykstra immediately replaces that

65
00:03:12.039 --> 00:03:14.000
<v Speaker 2>black box with the second machine. And this one is

66
00:03:14.159 --> 00:03:16.800
<v Speaker 2>very different, very this one is a massive piece of

67
00:03:16.840 --> 00:03:19.960
<v Speaker 2>cardboard featuring a colossal grid of two hundred and fifty

68
00:03:20.000 --> 00:03:22.800
<v Speaker 2>thousand points. You think of an X and Y axis,

69
00:03:22.960 --> 00:03:25.240
<v Speaker 2>both stretching from zero all the way to five hundred

70
00:03:25.599 --> 00:03:28.159
<v Speaker 2>and cutting right down the middle of this grid is

71
00:03:28.199 --> 00:03:32.120
<v Speaker 2>a diagonal answer line where the X coordinate perfectly equals

72
00:03:32.159 --> 00:03:33.000
<v Speaker 2>the Y coordinate.

73
00:03:33.039 --> 00:03:35.719
<v Speaker 1>And to operate this massive grid, you play what he

74
00:03:35.800 --> 00:03:37.800
<v Speaker 1>calls the pebble game, which I love.

75
00:03:37.919 --> 00:03:38.560
<v Speaker 2>It's so good.

76
00:03:38.639 --> 00:03:41.960
<v Speaker 1>You take a pebble and it represents your two starting numbers,

77
00:03:42.159 --> 00:03:44.800
<v Speaker 1>so X is two fifty nine, Y is one eleven,

78
00:03:45.240 --> 00:03:47.960
<v Speaker 1>and you place the pebble on that specific coordinate on

79
00:03:48.000 --> 00:03:51.719
<v Speaker 1>the grid right. Then you follow one strict geometric rule

80
00:03:52.080 --> 00:03:54.080
<v Speaker 1>as long as the pebble is not resting on that

81
00:03:54.120 --> 00:03:55.199
<v Speaker 1>diagonal answer.

82
00:03:54.960 --> 00:03:57.199
<v Speaker 2>Line, which it wouldn't be since two fifty nine does

83
00:03:57.240 --> 00:03:58.879
<v Speaker 2>an equal one to eleven exactly.

84
00:03:59.120 --> 00:04:01.120
<v Speaker 1>So you look at your axe is you form the

85
00:04:01.240 --> 00:04:04.879
<v Speaker 1>smallest equilateral right triangle you can with them, and you

86
00:04:05.039 --> 00:04:07.599
<v Speaker 1>move the pebble to the sharp angle of that triangle.

87
00:04:07.759 --> 00:04:12.120
<v Speaker 2>And the geometry here it's just a beautiful physical manifestation

88
00:04:12.240 --> 00:04:13.280
<v Speaker 2>of eucliding division.

89
00:04:13.360 --> 00:04:14.919
<v Speaker 1>It's actually kind of wild to picture.

90
00:04:15.080 --> 00:04:17.879
<v Speaker 2>It is because when you drop a perpendicular line to

91
00:04:17.920 --> 00:04:21.279
<v Speaker 2>the axes and form that triangle, moving to the sharp

92
00:04:21.319 --> 00:04:24.279
<v Speaker 2>angle is literally just subtracting the smaller number from the

93
00:04:24.360 --> 00:04:24.920
<v Speaker 2>larger number.

94
00:04:25.000 --> 00:04:25.360
<v Speaker 1>Ah.

95
00:04:25.399 --> 00:04:27.560
<v Speaker 2>So, if you are at two fifty nine to one eleven,

96
00:04:28.040 --> 00:04:32.519
<v Speaker 2>the smaller side is one eleven. Moving the pebble physically

97
00:04:32.600 --> 00:04:36.079
<v Speaker 2>shifts your ex coordinate down by one eleven, landing you

98
00:04:36.120 --> 00:04:36.920
<v Speaker 2>at one forty eight.

99
00:04:37.040 --> 00:04:39.839
<v Speaker 1>You are physically watching subtraction happen in space.

100
00:04:40.000 --> 00:04:43.279
<v Speaker 2>Yes, and you repeat that geometric slide over and over.

101
00:04:43.399 --> 00:04:45.519
<v Speaker 2>You keep moving the pebble down and over, down and

102
00:04:45.560 --> 00:04:48.800
<v Speaker 2>over until it eventually hits that diagonal line where X

103
00:04:48.839 --> 00:04:49.519
<v Speaker 2>and Y are I.

104
00:04:49.560 --> 00:04:52.000
<v Speaker 1>Tentacle, and wherever it lands on that line, that coordinate

105
00:04:52.120 --> 00:04:55.000
<v Speaker 1>is your greatest common divisor exactly. Now, I have to

106
00:04:55.000 --> 00:04:58.199
<v Speaker 1>be honest, My initial reaction to this was pure pushback.

107
00:04:58.439 --> 00:05:00.560
<v Speaker 1>Oh really, yeah, I mean, wait, so, so instead of

108
00:05:00.600 --> 00:05:02.759
<v Speaker 1>just giving me a calculator, you've made me play a

109
00:05:02.800 --> 00:05:06.160
<v Speaker 1>tedious board game across a quarter of a million potential

110
00:05:06.160 --> 00:05:08.160
<v Speaker 1>starting squares just to get the same results. Right.

111
00:05:08.199 --> 00:05:09.399
<v Speaker 2>It feels like way more work.

112
00:05:09.439 --> 00:05:11.040
<v Speaker 1>But then the genius of the trade offf hits you.

113
00:05:11.240 --> 00:05:14.480
<v Speaker 2>Because the tradeoff is the entire point. By establishing that

114
00:05:14.600 --> 00:05:20.079
<v Speaker 2>one single compact rule the mathematical invariant, Right, you haven't

115
00:05:20.120 --> 00:05:22.360
<v Speaker 2>just solved the problem for two fifty nine and one eleven.

116
00:05:23.000 --> 00:05:26.759
<v Speaker 2>You have instantly proven the outcome for all two hundred

117
00:05:26.759 --> 00:05:29.639
<v Speaker 2>and fifty thousand possible starting positions on that board.

118
00:05:29.920 --> 00:05:33.720
<v Speaker 1>You trade the immediate, unverified convenience of the first machine

119
00:05:34.040 --> 00:05:38.439
<v Speaker 1>for the undeniable, mathematically proven truth of the second machine.

120
00:05:38.480 --> 00:05:43.720
<v Speaker 2>Exactly, a single elegant argument governs every possible game played

121
00:05:43.800 --> 00:05:44.519
<v Speaker 2>on that cardboard.

122
00:05:44.560 --> 00:05:46.879
<v Speaker 1>And that is the true essence of an algorithm. It's

123
00:05:46.879 --> 00:05:50.000
<v Speaker 1>not about rushing to an output. It's about establishing absolute

124
00:05:50.079 --> 00:05:52.319
<v Speaker 1>confidence in the rules that dictate the output.

125
00:05:52.519 --> 00:05:55.319
<v Speaker 2>Right. But if the immense power of an algorithm comes

126
00:05:55.319 --> 00:05:59.439
<v Speaker 2>from that absolute mathematical certainty, you face a new problem.

127
00:05:59.519 --> 00:06:01.439
<v Speaker 1>How do you actually communicate those rules?

128
00:06:01.480 --> 00:06:05.399
<v Speaker 2>Exactly? You cannot build a system of flawless, rigid logic

129
00:06:05.959 --> 00:06:09.279
<v Speaker 2>using a medium that is fundamentally designed for ambiguity. And

130
00:06:09.360 --> 00:06:12.639
<v Speaker 2>this lead Dikstra to deliver a massive warning about what

131
00:06:12.680 --> 00:06:14.680
<v Speaker 2>we currently call programming languages.

132
00:06:15.000 --> 00:06:17.839
<v Speaker 1>Yeah, he argues that calling them languages is actually a

133
00:06:17.879 --> 00:06:20.879
<v Speaker 1>really dangerous mixed blessing. It's a huge trap because we

134
00:06:21.000 --> 00:06:24.839
<v Speaker 1>use natural languages you know, English, Manner and whatever specifically

135
00:06:24.920 --> 00:06:28.319
<v Speaker 1>because they are vague. The imprecision of human language is

136
00:06:28.360 --> 00:06:29.720
<v Speaker 1>a feature, not a bug.

137
00:06:29.920 --> 00:06:33.839
<v Speaker 2>Right. It allows for poetry and context and nuance reading

138
00:06:33.839 --> 00:06:34.879
<v Speaker 2>between the lines.

139
00:06:34.839 --> 00:06:37.439
<v Speaker 1>But formal notation has to be the exact opposite.

140
00:06:37.560 --> 00:06:40.240
<v Speaker 2>It has to be perfectly rigid. If you write the

141
00:06:40.319 --> 00:06:43.959
<v Speaker 2>rules of the pebble game using informal words like Euclid

142
00:06:43.959 --> 00:06:45.800
<v Speaker 2>originally did thousands of years.

143
00:06:45.600 --> 00:06:48.040
<v Speaker 1>Ago, which was just in Greek, right, right, it.

144
00:06:47.959 --> 00:06:52.079
<v Speaker 2>Remains completely unfit for formal mathematical treatment by an automaton.

145
00:06:52.639 --> 00:06:56.160
<v Speaker 2>If we want to create automatic computers, we need unambiguous

146
00:06:56.240 --> 00:06:57.079
<v Speaker 2>formal notation.

147
00:06:57.560 --> 00:07:01.279
<v Speaker 1>Calling them programming languages tricks us into reading them like conversations.

148
00:07:01.279 --> 00:07:04.160
<v Speaker 1>And you see this constantly today with large language models.

149
00:07:04.399 --> 00:07:05.439
<v Speaker 2>All the time people try to.

150
00:07:05.360 --> 00:07:09.800
<v Speaker 1>Prompt an AI to write highly specific, flawless code using

151
00:07:09.920 --> 00:07:13.639
<v Speaker 1>just conversational English, and they get incredibly frustrated when the

152
00:07:13.680 --> 00:07:18.160
<v Speaker 1>AI you know, hallucinates or produces unpredictable garbage.

153
00:07:17.680 --> 00:07:19.879
<v Speaker 2>Because the natural language is too vague to hold the

154
00:07:19.920 --> 00:07:22.839
<v Speaker 2>strict and variant logic. We are literally using the wrong

155
00:07:22.920 --> 00:07:23.759
<v Speaker 2>tool for the job.

156
00:07:23.920 --> 00:07:26.600
<v Speaker 1>And Dykstra saw this trap forming decades ago.

157
00:07:26.800 --> 00:07:30.279
<v Speaker 2>He really did and he pairs this linguistic warning with

158
00:07:30.360 --> 00:07:33.720
<v Speaker 2>a sharp critique of early computer history, because in the

159
00:07:33.720 --> 00:07:36.680
<v Speaker 2>early days of computing, the hardware was the bottleneck.

160
00:07:36.879 --> 00:07:40.399
<v Speaker 1>It was astronomically expensive and massive, massive.

161
00:07:40.279 --> 00:07:46.399
<v Speaker 2>Highly limited, just incredibly clunky. Consequently, efficiency became the absolute

162
00:07:46.800 --> 00:07:49.639
<v Speaker 2>supreme quality criterion for programming.

163
00:07:49.720 --> 00:07:52.079
<v Speaker 1>So whatever made the vacuum tubes or the you know,

164
00:07:52.079 --> 00:07:55.319
<v Speaker 1>the magnetic drums spin the fastest was ground the quote

165
00:07:55.399 --> 00:07:56.720
<v Speaker 1>unquote best.

166
00:07:56.519 --> 00:08:00.240
<v Speaker 2>Code, which is exactly the problem. Because physical hardware is

167
00:08:00.279 --> 00:08:04.680
<v Speaker 2>inherently messy. It's full of bizarre physical quirks. So programmers

168
00:08:04.680 --> 00:08:08.399
<v Speaker 2>started writing code that catered to those specific physical anomalies.

169
00:08:08.480 --> 00:08:11.040
<v Speaker 1>They were optimizing for the machine, not for the math.

170
00:08:11.319 --> 00:08:15.319
<v Speaker 2>Right, the code became a truthful reflection of the hardware's weirdness,

171
00:08:15.720 --> 00:08:18.480
<v Speaker 2>completely sacrificing the logical beauty of the algorithm.

172
00:08:18.480 --> 00:08:21.319
<v Speaker 1>We were hacking the limitations of the cardboard instead of

173
00:08:21.319 --> 00:08:23.040
<v Speaker 1>focusing on the pebble game itself.

174
00:08:23.120 --> 00:08:25.600
<v Speaker 2>That's a great way to put it, and Dykstra argues

175
00:08:25.680 --> 00:08:28.040
<v Speaker 2>vehemently that we have to redress this balance. We have

176
00:08:28.120 --> 00:08:30.199
<v Speaker 2>to put the pure algorithm back in the center of

177
00:08:30.240 --> 00:08:30.800
<v Speaker 2>the universe.

178
00:08:30.920 --> 00:08:33.159
<v Speaker 1>I love how he phrased it in his view, the

179
00:08:33.200 --> 00:08:35.799
<v Speaker 1>fact that a piece of metal and silicon can actually

180
00:08:35.840 --> 00:08:39.159
<v Speaker 1>execute the algorithm is just a lucky accidental circumstance.

181
00:08:39.240 --> 00:08:42.399
<v Speaker 2>It's such a radical reframing. The execution is secondary, the

182
00:08:42.399 --> 00:08:43.600
<v Speaker 2>mathematics are primary.

183
00:08:43.879 --> 00:08:47.000
<v Speaker 1>So what does this all mean? If we accept that

184
00:08:47.039 --> 00:08:50.039
<v Speaker 1>the physical machine is just a lucky accident, we have

185
00:08:50.120 --> 00:08:53.399
<v Speaker 1>to ask how a program actually organizes its reality in.

186
00:08:53.360 --> 00:08:55.840
<v Speaker 2>The abstract, right, how does it manage what we call

187
00:08:55.960 --> 00:08:56.879
<v Speaker 2>a state space?

188
00:08:57.039 --> 00:08:59.360
<v Speaker 1>And the way he describes building this state space is

189
00:08:59.399 --> 00:09:04.240
<v Speaker 1>fascinating because it's historically humans named numbers haphazardly. Right, We

190
00:09:04.399 --> 00:09:06.360
<v Speaker 1>just invented new words as we needed them.

191
00:09:06.320 --> 00:09:08.440
<v Speaker 2>Like a child counting, just making up sounds.

192
00:09:08.240 --> 00:09:12.120
<v Speaker 1>Exactly, which is impossible to scale. It wasn't until we

193
00:09:12.159 --> 00:09:16.080
<v Speaker 1>adopted systematic nomenclature rules that let you drive the next thing,

194
00:09:16.320 --> 00:09:19.679
<v Speaker 1>like the decimal system, that mathematics really exploded.

195
00:09:19.759 --> 00:09:23.519
<v Speaker 2>Because systematic nomenclature is about defining boundaries rather than trying

196
00:09:23.519 --> 00:09:26.919
<v Speaker 2>to memorize infinite lists. And in computing we build state

197
00:09:26.960 --> 00:09:28.399
<v Speaker 2>spaces the exact same way.

198
00:09:28.519 --> 00:09:29.559
<v Speaker 1>Okay, walk us through that.

199
00:09:29.879 --> 00:09:33.320
<v Speaker 2>So Deekster ask us to imagine the mechanical register. Picture

200
00:09:33.360 --> 00:09:36.080
<v Speaker 2>a machine with eight wheels, and each wheel holds ten

201
00:09:36.159 --> 00:09:37.559
<v Speaker 2>digits zero through nine.

202
00:09:37.480 --> 00:09:38.440
<v Speaker 1>Like a combination lock.

203
00:09:38.600 --> 00:09:41.440
<v Speaker 2>Exactly like a lock, but simply combining those constraints you

204
00:09:41.480 --> 00:09:44.919
<v Speaker 2>create a Cartesian product. You instantly define a rigid state

205
00:09:45.000 --> 00:09:49.639
<v Speaker 2>space containing exactly one hundred million distinct possible states.

206
00:09:50.000 --> 00:09:53.840
<v Speaker 1>Wow, and once you have that perfectly defined mathematical space,

207
00:09:54.399 --> 00:09:57.279
<v Speaker 1>you don't have to wander through it blindly. The source

208
00:09:57.320 --> 00:10:01.320
<v Speaker 1>provides this incredibly elegant example of using equations what he

209
00:10:01.399 --> 00:10:06.519
<v Speaker 1>calls predicates to define specific conditions within that massive space

210
00:10:06.960 --> 00:10:08.759
<v Speaker 1>without ever listing them all out.

211
00:10:08.720 --> 00:10:12.080
<v Speaker 2>Right, because listing one hundred million states would be impossible.

212
00:10:12.279 --> 00:10:15.279
<v Speaker 1>Yeah, so you don't have to list out all three

213
00:10:15.399 --> 00:10:17.279
<v Speaker 1>hundred and sixty five days of the year to tell

214
00:10:17.279 --> 00:10:18.519
<v Speaker 1>a system what Christmas is.

215
00:10:18.559 --> 00:10:20.399
<v Speaker 2>Well, you just define the state, right, You just.

216
00:10:20.360 --> 00:10:23.039
<v Speaker 1>Define it as month equals December and day equals tots

217
00:10:23.080 --> 00:10:25.039
<v Speaker 1>five or day equals twenty.

218
00:10:24.759 --> 00:10:28.679
<v Speaker 2>Six, or defining payday is simply day equals twenty three.

219
00:10:29.320 --> 00:10:32.080
<v Speaker 2>It is a compact, flawless way to slice through a

220
00:10:32.120 --> 00:10:35.240
<v Speaker 2>massive Cartesian product. It's so clean it is. And this

221
00:10:35.360 --> 00:10:39.159
<v Speaker 2>exact mechanism leads to Diykstra's first major surprise while writing

222
00:10:39.159 --> 00:10:42.200
<v Speaker 2>this book, The immense power of predicate transformers.

223
00:10:42.399 --> 00:10:45.519
<v Speaker 1>Okay, now this sounds incredibly theoretical, but the application is

224
00:10:45.679 --> 00:10:47.120
<v Speaker 1>deeply practical, isn't it.

225
00:10:47.159 --> 00:10:50.320
<v Speaker 2>Oh completely, Because in the early days, programmers would get

226
00:10:50.360 --> 00:10:53.679
<v Speaker 2>lost trying to track every single intermediate state a machine

227
00:10:53.720 --> 00:10:55.600
<v Speaker 2>passed through during execution.

228
00:10:55.279 --> 00:10:57.600
<v Speaker 1>Like tracking a pinball bouncing around exactly.

229
00:10:57.679 --> 00:11:01.360
<v Speaker 2>It was just total mental overload. Credicut transformers allow a

230
00:11:01.399 --> 00:11:04.440
<v Speaker 2>programmer to skip that MetalMan. They let you define a

231
00:11:04.480 --> 00:11:07.840
<v Speaker 2>direct relation between your starting state and your final state. Okay,

232
00:11:08.000 --> 00:11:11.240
<v Speaker 2>They introduce the formal concept of ROUP, which stands for

233
00:11:11.279 --> 00:11:15.320
<v Speaker 2>the weakest precondition. The notation literally looks like rupip and

234
00:11:15.360 --> 00:11:19.120
<v Speaker 2>then in parentheses S comma R, where.

235
00:11:19.039 --> 00:11:21.720
<v Speaker 1>S is the system or the program you are running,

236
00:11:21.759 --> 00:11:24.200
<v Speaker 1>and are is the result like the post condition you're

237
00:11:24.240 --> 00:11:25.440
<v Speaker 1>desperately trying to achieve.

238
00:11:25.600 --> 00:11:29.039
<v Speaker 2>Right, So calculating the weakest precondition is essentially asking what

239
00:11:29.279 --> 00:11:32.720
<v Speaker 2>is the absolute broadest, most lenient safety net I need

240
00:11:32.759 --> 00:11:36.559
<v Speaker 2>to string up before I hit GO to mathematically guarantee

241
00:11:36.919 --> 00:11:39.679
<v Speaker 2>that this system will land exactly on my target.

242
00:11:39.840 --> 00:11:42.879
<v Speaker 1>So you are fundamentally working backwards, entirely backwards. Instead of

243
00:11:42.879 --> 00:11:44.679
<v Speaker 1>starting a program and just hoping it gets to the

244
00:11:44.759 --> 00:11:47.600
<v Speaker 1>right answer, you start with the undeniably true answer and

245
00:11:47.679 --> 00:11:51.000
<v Speaker 1>calculate the exact conditions necessary to make it inevitable.

246
00:11:51.200 --> 00:11:54.759
<v Speaker 2>Yes. And this mathematical rigorousness brings us to property one

247
00:11:55.120 --> 00:11:58.279
<v Speaker 2>of his predicate transformers, and I just have to say

248
00:11:58.360 --> 00:12:01.159
<v Speaker 2>it possesses quite possibly the most poetic name in the

249
00:12:01.320 --> 00:12:02.919
<v Speaker 2>entire history of computer science.

250
00:12:03.279 --> 00:12:06.799
<v Speaker 1>Oh, it really does. The law of the excluded miracle.

251
00:12:06.960 --> 00:12:08.600
<v Speaker 2>Law the excluded miracle.

252
00:12:08.360 --> 00:12:13.200
<v Speaker 1>Which, beyond just sounding beautiful, it perfectly grounds this abstract

253
00:12:13.279 --> 00:12:17.279
<v Speaker 1>math in an unbending reality because it states that if

254
00:12:17.320 --> 00:12:20.600
<v Speaker 1>your final goal, your desired post condition are is a

255
00:12:20.720 --> 00:12:24.639
<v Speaker 1>logical impossibility, which is represented by the state of false right,

256
00:12:25.000 --> 00:12:27.440
<v Speaker 1>then there is no starting condition in the universe that

257
00:12:27.480 --> 00:12:28.879
<v Speaker 1>can guarantee you will get there.

258
00:12:29.360 --> 00:12:33.279
<v Speaker 2>In formulaic terms, wop of s false equals false.

259
00:12:33.480 --> 00:12:35.279
<v Speaker 1>You cannot ask the machine for magic.

260
00:12:35.440 --> 00:12:40.440
<v Speaker 2>No, if your desired destination contradicts logical reality, no amount

261
00:12:40.480 --> 00:12:44.200
<v Speaker 2>of clever programming, no perfect starting conditions, nothing will bend

262
00:12:44.200 --> 00:12:46.919
<v Speaker 2>the universe to reach it. The system will fail. The

263
00:12:46.960 --> 00:12:48.799
<v Speaker 2>miracle is excluded.

264
00:12:48.399 --> 00:12:50.519
<v Speaker 1>Which is deeply comforting in a way. You know it

265
00:12:50.559 --> 00:12:54.320
<v Speaker 1>provides a bedrock of certainty. But all of this flawless

266
00:12:54.399 --> 00:12:58.440
<v Speaker 1>invariant logic relies on one massive assumption. What's that It

267
00:12:58.480 --> 00:13:01.399
<v Speaker 1>assumes that if you set the starting conditions perfectly, the

268
00:13:01.440 --> 00:13:04.399
<v Speaker 1>mechanism itself will carry out the steps exactly as planned.

269
00:13:04.879 --> 00:13:07.120
<v Speaker 1>But anyone who has ever used a piece of technology

270
00:13:07.200 --> 00:13:09.399
<v Speaker 1>knows that things don't always go according to plan.

271
00:13:09.799 --> 00:13:11.279
<v Speaker 2>The hardware betrays the math.

272
00:13:11.320 --> 00:13:13.440
<v Speaker 1>Exactly the hardware betrays the math.

273
00:13:13.840 --> 00:13:17.799
<v Speaker 2>And this realization leads directly to Dykstra's second and perhaps

274
00:13:17.840 --> 00:13:21.600
<v Speaker 2>most profound surprise in the book, Because up to this

275
00:13:21.679 --> 00:13:27.000
<v Speaker 2>point in computer science history, deterministic machines were the unquestioned holy.

276
00:13:26.720 --> 00:13:29.639
<v Speaker 1>Grail, deterministic meaning perfectly predictable.

277
00:13:29.720 --> 00:13:33.320
<v Speaker 2>Right, The entire discipline was built on the assumption that

278
00:13:33.480 --> 00:13:37.000
<v Speaker 2>identical initial states must one hundred percent of the time

279
00:13:37.399 --> 00:13:41.679
<v Speaker 2>yield identical outcomes, utter unbreakable predictability.

280
00:13:41.840 --> 00:13:44.960
<v Speaker 1>But the physical world doesn't really like perfect predictability, does

281
00:13:45.000 --> 00:13:45.720
<v Speaker 1>it not at all?

282
00:13:45.840 --> 00:13:49.879
<v Speaker 2>And Dykester shares this genuinely harrowing story from nineteen fifty eight.

283
00:13:49.960 --> 00:13:51.279
<v Speaker 1>Yeah, this part blew my mind.

284
00:13:51.679 --> 00:13:53.919
<v Speaker 2>He was working with a new machine that featured an

285
00:13:53.960 --> 00:13:58.159
<v Speaker 2>io interrupt, basically an external hardware signal that could asynchronously

286
00:13:58.200 --> 00:14:01.440
<v Speaker 2>pause the current process. Right, And because this interrupt was

287
00:14:01.440 --> 00:14:04.639
<v Speaker 2>tied to physical timing rather than logical steps. It caused

288
00:14:04.720 --> 00:14:07.440
<v Speaker 2>irreproducible nondeterministic behavior.

289
00:14:07.120 --> 00:14:09.960
<v Speaker 1>Meaning the machine would execute differently even when provided the

290
00:14:10.000 --> 00:14:12.360
<v Speaker 1>exact same initial state exactly.

291
00:14:12.679 --> 00:14:16.519
<v Speaker 2>A hardware glitch or you know, a microsecond timing delay

292
00:14:16.759 --> 00:14:20.960
<v Speaker 2>would evoke an erratic error that you couldn't reliably reproduce

293
00:14:21.279 --> 00:14:23.279
<v Speaker 2>to study. It was a ghost in the machine, a

294
00:14:23.360 --> 00:14:27.559
<v Speaker 2>total ghost, and Dyscher was paralyzed by this. He literally

295
00:14:27.600 --> 00:14:30.559
<v Speaker 2>referred to the machine as an intractable beast.

296
00:14:30.759 --> 00:14:31.799
<v Speaker 1>Intractable beast.

297
00:14:31.879 --> 00:14:34.159
<v Speaker 2>He was so terrified by the prospect of having to

298
00:14:34.159 --> 00:14:39.360
<v Speaker 2>build reliable, flawless software on top of a fundamentally unpredictable

299
00:14:39.399 --> 00:14:43.600
<v Speaker 2>foundation that he delayed a major software design decision for

300
00:14:43.759 --> 00:14:45.399
<v Speaker 2>three entire months.

301
00:14:45.480 --> 00:14:49.600
<v Speaker 1>Wait, three whole months, three months over one unpredictable interrupt.

302
00:14:50.279 --> 00:14:54.399
<v Speaker 1>That is just It really illustrates how foundational perfect determinism

303
00:14:54.480 --> 00:14:55.840
<v Speaker 1>was to their entire worldview.

304
00:14:55.879 --> 00:14:57.559
<v Speaker 2>Back then, it was everything to them.

305
00:14:57.679 --> 00:15:00.279
<v Speaker 1>Unpredictability wasn't just a bug, It was the colle apse

306
00:15:00.320 --> 00:15:01.919
<v Speaker 1>of mathematical certainty itself.

307
00:15:02.000 --> 00:15:06.320
<v Speaker 2>Right. But eventually he has this massive psychological and mathematical breakthrough.

308
00:15:06.600 --> 00:15:08.879
<v Speaker 2>He realizes that his terror wasn't because the machine was

309
00:15:08.919 --> 00:15:12.720
<v Speaker 2>inherently broken. His terror stemmed entirely from a lack of methodology.

310
00:15:12.799 --> 00:15:16.840
<v Speaker 1>He didn't have the mental models to process the unpredictability.

311
00:15:16.240 --> 00:15:20.440
<v Speaker 2>Exactly, and when he finally develops those models, he flips

312
00:15:20.480 --> 00:15:24.120
<v Speaker 2>the entire paradigm of computer science on its head. He

313
00:15:24.200 --> 00:15:28.919
<v Speaker 2>comes to regard nondeterminacy as the normal default situation of

314
00:15:29.000 --> 00:15:29.919
<v Speaker 2>complex systems.

315
00:15:30.000 --> 00:15:32.840
<v Speaker 1>He decides that perfect determinism, the thing they had worshiped

316
00:15:32.879 --> 00:15:37.240
<v Speaker 1>for decades, is actually just a special, highly restricted, and

317
00:15:37.399 --> 00:15:41.399
<v Speaker 1>in his own words, not even very interesting case of nondeterminacy.

318
00:15:41.759 --> 00:15:45.000
<v Speaker 2>It completely shatters the illusion. It's like accepting that friction

319
00:15:45.480 --> 00:15:48.559
<v Speaker 2>is the reality of the physical world and a frictionless

320
00:15:48.639 --> 00:15:51.639
<v Speaker 2>vacuum is just a highly specialized laboratory condition.

321
00:15:51.759 --> 00:15:52.919
<v Speaker 1>That's a perfect analogy.

322
00:15:53.000 --> 00:15:56.200
<v Speaker 2>And once Diyster accepts this, he begins building constructs that

323
00:15:56.320 --> 00:16:00.120
<v Speaker 2>actively embrace a level of nondeterminacy rather than fighting it.

324
00:16:00.360 --> 00:16:02.679
<v Speaker 2>He stops overspecifying how the machine.

325
00:16:02.440 --> 00:16:05.919
<v Speaker 1>Should behave Here's where it gets really interesting. The source

326
00:16:05.960 --> 00:16:08.600
<v Speaker 1>gives a brilliant example of this with his concept of

327
00:16:08.679 --> 00:16:13.120
<v Speaker 1>concurrent assignment. Yes, the concurrent assignment, because in traditional highly

328
00:16:13.120 --> 00:16:16.320
<v Speaker 1>deterministic programming, if you want to swap the values of

329
00:16:16.399 --> 00:16:17.799
<v Speaker 1>variable x and variable Y.

330
00:16:17.840 --> 00:16:19.440
<v Speaker 2>You can't just swap them, No, you can't.

331
00:16:19.559 --> 00:16:23.039
<v Speaker 1>You have to create a temporary third variable. You move

332
00:16:23.159 --> 00:16:24.840
<v Speaker 1>x to tempt, then you move Y to X, then

333
00:16:24.840 --> 00:16:27.559
<v Speaker 1>you move temp to hy. It is a rigid, hyper

334
00:16:27.679 --> 00:16:29.720
<v Speaker 1>sequential step by step march.

335
00:16:29.919 --> 00:16:34.639
<v Speaker 2>It forces a strict chronological sequence where none is logically necessary.

336
00:16:34.919 --> 00:16:37.720
<v Speaker 2>You're basically over constraining the machine.

337
00:16:37.279 --> 00:16:41.440
<v Speaker 1>Right, and Deekstra's concurrent assignment elegantly sidesteps this whole dance

338
00:16:41.480 --> 00:16:45.200
<v Speaker 1>by simply writing X comma Y becomes y comma x right.

339
00:16:45.320 --> 00:16:46.840
<v Speaker 2>Just swap them simultaneously.

340
00:16:47.000 --> 00:16:49.720
<v Speaker 1>You define the post condition, the values are swapped, and

341
00:16:49.759 --> 00:16:53.799
<v Speaker 1>you leave the exact mechanical sequencing slightly ambiguous. You allow

342
00:16:53.879 --> 00:16:57.759
<v Speaker 1>for nondeterminacy in the how safely bounded by the mathematical

343
00:16:57.799 --> 00:16:58.559
<v Speaker 1>invariant of the what.

344
00:16:58.799 --> 00:17:02.679
<v Speaker 2>You stop micromanaging the intractable beast and you start guiding

345
00:17:02.720 --> 00:17:04.839
<v Speaker 2>it with flawless logic.

346
00:17:04.559 --> 00:17:08.319
<v Speaker 1>Which perfectly synthesizes the massive journey Diekstra takes us on

347
00:17:08.359 --> 00:17:10.079
<v Speaker 1>in this book. I mean he wanted to pull us

348
00:17:10.079 --> 00:17:13.839
<v Speaker 1>away from being glorified mechanics just endlessly catering to the

349
00:17:13.880 --> 00:17:18.200
<v Speaker 1>physical anomalies and sequential limitations of whatever metal box happen

350
00:17:18.240 --> 00:17:19.400
<v Speaker 1>to be sitting on our desks.

351
00:17:19.799 --> 00:17:23.720
<v Speaker 2>We start with that massive cardboard grid, realizing that true

352
00:17:23.759 --> 00:17:27.559
<v Speaker 2>algorithmic beauty isn't about getting a fast answer, It's about

353
00:17:27.640 --> 00:17:31.319
<v Speaker 2>establishing a mathematical invariant that proves the truth across a

354
00:17:31.400 --> 00:17:33.960
<v Speaker 2>quarter of a million possibilities right.

355
00:17:33.920 --> 00:17:37.440
<v Speaker 1>And we learn to abandon the dangerous vagueness of natural languages,

356
00:17:37.559 --> 00:17:41.079
<v Speaker 1>recognizing that human ambiguity has absolutely no place in the

357
00:17:41.160 --> 00:17:42.920
<v Speaker 1>rigid architecture of an automaton.

358
00:17:43.160 --> 00:17:46.920
<v Speaker 2>Exactly, we arm ourselves with predica transformers. We learned to

359
00:17:46.960 --> 00:17:50.799
<v Speaker 2>work backwards from our desired reality to find that weakest precondition,

360
00:17:51.480 --> 00:17:54.720
<v Speaker 2>always always respecting the law of the excluded miracle.

361
00:17:54.799 --> 00:17:56.079
<v Speaker 1>We cannot ask for magic.

362
00:17:56.160 --> 00:17:57.279
<v Speaker 2>We cannot ask for magic.

363
00:17:57.400 --> 00:17:59.559
<v Speaker 1>And finally, we watch one of the greatest minds in

364
00:17:59.559 --> 00:18:02.119
<v Speaker 1>the field suffer a three month panic attack over an

365
00:18:02.240 --> 00:18:06.200
<v Speaker 1>unpredictable interrupt, only to emerge with the absolute revelation that

366
00:18:06.319 --> 00:18:08.000
<v Speaker 1>rigid determinism is a myth.

367
00:18:08.240 --> 00:18:12.079
<v Speaker 2>Nondeterminacy is the true nature of complex systems, and true

368
00:18:12.079 --> 00:18:16.359
<v Speaker 2>programming elegance is learning to mathematically guide that unpredictability rather

369
00:18:16.400 --> 00:18:17.039
<v Speaker 2>than fearing it.

370
00:18:17.200 --> 00:18:19.880
<v Speaker 1>He elevates software from a mechanical chore to a goal

371
00:18:19.960 --> 00:18:23.720
<v Speaker 1>directed activity of profound mathematical beauty. He asked us to

372
00:18:23.759 --> 00:18:26.240
<v Speaker 1>look past machine and marvel at the logic itself.

373
00:18:26.279 --> 00:18:28.759
<v Speaker 2>It's a beautiful way to look at the world, which leaves.

374
00:18:28.440 --> 00:18:32.200
<v Speaker 1>You, the listener, with a really fascinating lens through which

375
00:18:32.279 --> 00:18:35.680
<v Speaker 1>to view the technology surrounding you today. Because we live

376
00:18:35.720 --> 00:18:39.960
<v Speaker 1>in an era that is increasingly dominated by massive AI

377
00:18:40.000 --> 00:18:44.519
<v Speaker 1>models and neural networks that are fundamentally, by their very architecture,

378
00:18:44.599 --> 00:18:45.519
<v Speaker 1>non deterministic.

379
00:18:45.599 --> 00:18:46.400
<v Speaker 2>They absolutely are.

380
00:18:46.440 --> 00:18:51.799
<v Speaker 1>They hallucinate, They surprise us. They produce irreproducible outputs. If

381
00:18:51.839 --> 00:18:55.440
<v Speaker 1>a pioneer like Diikstra realized way back in nineteen seventy

382
00:18:55.480 --> 00:18:59.799
<v Speaker 1>six that unpredictable, non deterministic systems are the normal state

383
00:18:59.799 --> 00:19:02.799
<v Speaker 1>of reality rather than a glitch to be feared.

384
00:19:02.559 --> 00:19:05.759
<v Speaker 2>How should that change your expectations exactly.

385
00:19:05.400 --> 00:19:08.240
<v Speaker 1>When an algorithm surfaces a bizarre result, or an AI

386
00:19:08.359 --> 00:19:10.960
<v Speaker 1>gives you an answer you didn't anticipate. Perhaps the system

387
00:19:11.000 --> 00:19:14.920
<v Speaker 1>isn't broken. Perhaps we are simply still stubbornly demanding the

388
00:19:14.960 --> 00:19:18.960
<v Speaker 1>flawless cardboard determinism of the past from the wonderfully and

389
00:19:19.039 --> 00:19:20.920
<v Speaker 1>tractable beasts running our future.
