WEBVTT

1
00:00:05.100 --> 00:00:09.200
it

2
00:00:11.900 --> 00:00:14.500
<00:00:11.900>I'm <00:00:12.075>really <00:00:12.250>glad <00:00:12.425>that <00:00:12.600>you <00:00:12.775>followed <00:00:12.950>our <00:00:13.125>invitation <00:00:13.300>to

3
00:00:14.500 --> 00:00:17.600
<00:00:14.500>come <00:00:14.627>here <00:00:14.754>today <00:00:14.881>and <00:00:15.009>to <00:00:15.136>tell <00:00:15.263>people <00:00:15.390>a <00:00:15.518>little <00:00:15.645>bit <00:00:15.772>about <00:00:15.900>your

4
00:00:17.600 --> 00:00:21.400
<00:00:17.600>programming <00:00:17.880>language. <00:00:18.160>Okay? <00:00:18.440>Yeah. <00:00:18.720>Sure. <00:00:19.000>I'll

5
00:00:20.400 --> 00:00:21.500
<00:00:20.400>do <00:00:21.390>that.

6
00:00:24.200 --> 00:00:27.400
<00:00:24.200>About <00:00:24.400>40 <00:00:24.599>years <00:00:24.800>ago. <00:00:25.000>You <00:00:25.200>invented <00:00:25.400>c++, <00:00:25.599>some

7
00:00:27.400 --> 00:00:30.700
<00:00:27.400>of <00:00:27.527>you <00:00:27.654>most <00:00:27.781>of <00:00:27.909>you <00:00:28.036>I <00:00:28.163>hope <00:00:28.290>know <00:00:28.418>about <00:00:28.545>that. <00:00:28.672>And <00:00:28.799>yeah

8
00:00:30.700 --> 00:00:34.300
<00:00:30.700>right <00:00:30.827>now <00:00:30.954>we <00:00:31.081>are <00:00:31.209>going <00:00:31.336>to <00:00:31.463>get <00:00:31.590>the <00:00:31.718>evolution <00:00:31.845>of <00:00:31.972>c++, <00:00:32.100>and

9
00:00:33.300 --> 00:00:36.600
<00:00:33.300>for <00:00:33.580>those <00:00:33.860>that <00:00:34.140>are <00:00:34.419>already <00:00:34.699>seasoned

10
00:00:36.600 --> 00:00:40.300
<00:00:36.600>C++ <00:00:36.950>developers <00:00:37.300>at <00:00:37.650>12:45 <00:00:38.000>stage

11
00:00:39.300 --> 00:00:42.200
<00:00:39.300>one. <00:00:39.533>Beyond <00:00:39.766>is <00:00:40.000>going <00:00:40.233>to <00:00:40.466>give <00:00:40.699>you

12
00:00:42.200 --> 00:00:45.500
<00:00:42.200>another <00:00:42.400>hour <00:00:42.600>of <00:00:42.800>Deep <00:00:43.000>dive <00:00:43.200>C++ <00:00:43.400>in <00:00:43.600>constrained

13
00:00:45.500 --> 00:00:48.900
<00:00:45.500>environments. <00:00:45.966>Yeah. <00:00:46.433>Okay. <00:00:46.900>Thank

14
00:00:48.900 --> 00:00:49.500
<00:00:48.900>you. <00:00:49.170>Thank <00:00:49.440>you.

15
00:00:57.500 --> 00:01:01.300
<00:00:57.500>Good <00:00:57.733>morning. <00:00:57.966>Good <00:00:58.200>morning, <00:00:58.433>Morgan. <00:00:58.666>I'm <00:00:58.900>going

16
00:01:01.300 --> 00:01:04.500
<00:01:01.300>to <00:01:01.455>tell <00:01:01.611>you <00:01:01.766>a <00:01:01.922>little <00:01:02.077>bit <00:01:02.233>about <00:01:02.388>c++, <00:01:02.544>how <00:01:02.699>it

17
00:01:04.500 --> 00:01:07.700
<00:01:04.500>came <00:01:04.675>about <00:01:04.849>what <00:01:05.025>it <00:01:05.200>was <00:01:05.375>supposed <00:01:05.550>to <00:01:05.725>do <00:01:05.900>and

18
00:01:07.700 --> 00:01:10.200
<00:01:07.700>what <00:01:07.875>it <00:01:08.050>is. <00:01:08.225>And <00:01:08.400>of <00:01:08.575>course <00:01:08.750>I <00:01:08.925>don't <00:01:09.100>have

19
00:01:10.200 --> 00:01:14.800
<00:01:10.200>enough <00:01:10.307>time <00:01:10.415>for <00:01:10.523>that. <00:01:10.630>So <00:01:10.738>I'm <00:01:10.846>going <00:01:10.953>to <00:01:11.061>rush <00:01:11.169>through <00:01:11.276>a <00:01:11.384>bit. <00:01:11.492>There <00:01:11.600>are

20
00:01:14.800 --> 00:01:17.400
<00:01:14.800>some <00:01:15.000>pictures <00:01:15.200>on <00:01:15.399>my <00:01:15.600>slides. <00:01:15.800>So <00:01:16.000>if <00:01:16.200>you

21
00:01:17.400 --> 00:01:21.400
<00:01:17.400>get <00:01:17.500>bored, <00:01:17.600>you <00:01:17.700>can <00:01:17.800>try <00:01:17.900>and <00:01:18.000>guess <00:01:18.100>what <00:01:18.200>they <00:01:18.300>have <00:01:18.400>to <00:01:18.500>do <00:01:18.600>is <00:01:18.700>C++ <00:01:18.800>and

22
00:01:20.400 --> 00:01:23.900
<00:01:20.400>part <00:01:20.750>of <00:01:21.100>the <00:01:21.450>purpose <00:01:21.800>of

23
00:01:23.900 --> 00:01:26.100
<00:01:23.900>this <00:01:24.100>is <00:01:24.300>is <00:01:24.500>trying <00:01:24.700>to <00:01:24.900>explain <00:01:25.100>to <00:01:25.300>you

24
00:01:26.100 --> 00:01:28.400
<00:01:26.100>why <00:01:26.300>somebody <00:01:26.500>would <00:01:26.699>run <00:01:26.899>it <00:01:27.100>at <00:01:27.300>ill <00:01:27.500>too.

25
00:01:29.200 --> 00:01:30.300
<00:01:29.200>and <00:01:29.530>other <00:01:29.860>strange <00:01:30.190>places

26
00:01:31.800 --> 00:01:34.400
<00:01:31.800>so <00:01:32.149>C++ <00:01:32.500>was <00:01:32.850>born <00:01:33.200>at

27
00:01:34.400 --> 00:01:37.300
<00:01:34.400>Bell <00:01:34.555>labs <00:01:34.711>in <00:01:34.866>Murray <00:01:35.022>Hill, <00:01:35.177>New <00:01:35.333>Jersey, <00:01:35.488>which <00:01:35.644>was <00:01:35.800>an

28
00:01:37.300 --> 00:01:41.500
<00:01:37.300>absolutely <00:01:37.580>great <00:01:37.860>place <00:01:38.140>huge <00:01:38.420>challenges <00:01:38.700>really

29
00:01:40.500 --> 00:01:44.200
<00:01:40.500>interesting <00:01:41.200>technical <00:01:41.900>backup

30
00:01:43.200 --> 00:01:46.100
<00:01:43.200>and <00:01:43.480>great <00:01:43.760>people. <00:01:44.040>I <00:01:44.320>was <00:01:44.600>actually

31
00:01:46.100 --> 00:01:50.200
<00:01:46.100>exchanging <00:01:46.333>email <00:01:46.566>with <00:01:46.800>L <00:01:47.033>and <00:01:47.266>Brian <00:01:47.500>this

32
00:01:49.200 --> 00:01:52.700
<00:01:49.200>morning. <00:01:49.433>We're <00:01:49.666>still <00:01:49.900>keeping <00:01:50.133>in <00:01:50.366>touch. <00:01:50.600>The

33
00:01:52.700 --> 00:01:55.800
<00:01:52.700>place <00:01:52.855>is <00:01:53.011>not <00:01:53.166>quite <00:01:53.322>what <00:01:53.477>it <00:01:53.633>was <00:01:53.788>but <00:01:53.944>the <00:01:54.100>community

34
00:01:55.800 --> 00:01:59.100
<00:01:55.800>is <00:01:56.266>I <00:01:56.733>started <00:01:57.200>C++

35
00:01:58.100 --> 00:02:01.600
<00:01:58.100>to <00:01:58.300>try <00:01:58.500>and <00:01:58.699>solve <00:01:58.899>a <00:01:59.100>problem. <00:01:59.300>I <00:01:59.500>wanted

36
00:02:01.600 --> 00:02:04.400
<00:02:01.600>to <00:02:01.800>build <00:02:02.000>something <00:02:02.199>that <00:02:02.399>if <00:02:02.600>I <00:02:02.800>managed <00:02:03.000>to

37
00:02:04.400 --> 00:02:09.000
<00:02:04.400>do <00:02:04.540>it <00:02:04.680>would <00:02:04.820>have <00:02:04.960>been <00:02:05.100>the <00:02:05.240>first <00:02:05.380>Unix <00:02:05.520>cluster <00:02:05.660>and <00:02:05.800>I

38
00:02:07.500 --> 00:02:10.300
<00:02:07.500>soon <00:02:07.966>realized <00:02:08.433>I <00:02:08.900>couldn't

39
00:02:10.300 --> 00:02:10.600
<00:02:10.300>do <00:02:10.570>it.

40
00:02:11.400 --> 00:02:14.500
<00:02:11.400>Not <00:02:11.540>for <00:02:11.680>the <00:02:11.820>obvious <00:02:11.960>reason <00:02:12.100>that <00:02:12.240>I <00:02:12.380>wasn't <00:02:12.520>capable <00:02:12.660>of <00:02:12.800>building

41
00:02:14.500 --> 00:02:17.500
<00:02:14.500>such <00:02:14.700>a <00:02:14.900>system <00:02:15.100>myself, <00:02:15.300>but <00:02:15.500>because <00:02:15.700>there <00:02:15.900>was

42
00:02:17.500 --> 00:02:20.600
<00:02:17.500>no <00:02:17.616>language <00:02:17.733>that <00:02:17.850>could <00:02:17.966>help <00:02:18.083>me <00:02:18.200>to <00:02:18.316>do <00:02:18.433>it. <00:02:18.550>I <00:02:18.666>needed <00:02:18.783>something <00:02:18.900>for

43
00:02:20.600 --> 00:02:23.600
<00:02:20.600>the <00:02:20.799>low-level <00:02:21.000>part <00:02:21.200>of <00:02:21.400>the <00:02:21.600>system <00:02:21.799>the <00:02:22.000>device

44
00:02:23.600 --> 00:02:26.800
<00:02:23.600>drivers <00:02:23.833>the <00:02:24.066>memory <00:02:24.299>managers <00:02:24.533>the <00:02:24.766>process <00:02:25.000>schedulers

45
00:02:26.800 --> 00:02:29.200
<00:02:26.800>things <00:02:27.000>like <00:02:27.200>that, <00:02:27.400>and <00:02:27.600>then <00:02:27.800>I <00:02:28.000>wanted <00:02:28.200>to

46
00:02:29.200 --> 00:02:32.200
<00:02:29.200>abstract <00:02:29.339>to <00:02:29.480>get <00:02:29.619>away <00:02:29.760>from <00:02:29.899>the <00:02:30.040>hardware <00:02:30.179>to <00:02:30.320>be <00:02:30.459>able <00:02:30.600>to

47
00:02:32.200 --> 00:02:32.500
get

48
00:02:34.200 --> 00:02:37.500
<00:02:34.200>The <00:02:34.327>ability <00:02:34.454>to <00:02:34.581>say <00:02:34.709>this <00:02:34.836>part <00:02:34.963>of <00:02:35.090>the <00:02:35.218>system <00:02:35.345>runs <00:02:35.472>there <00:02:35.600>this

49
00:02:37.500 --> 00:02:40.600
<00:02:37.500>part <00:02:37.655>of <00:02:37.811>the <00:02:37.966>system <00:02:38.122>runs <00:02:38.277>there <00:02:38.433>and <00:02:38.588>they <00:02:38.744>communicate <00:02:38.900>in

50
00:02:40.600 --> 00:02:43.400
<00:02:40.600>this <00:02:40.880>specific <00:02:41.160>way <00:02:41.440>and <00:02:41.720>Miss <00:02:42.000>of

51
00:02:43.400 --> 00:02:46.400
<00:02:43.400>pointers <00:02:43.633>and <00:02:43.866>data <00:02:44.100>structures <00:02:44.333>and <00:02:44.566>such <00:02:44.800>just

52
00:02:46.400 --> 00:02:50.400
<00:02:46.400>wouldn't <00:02:46.555>do <00:02:46.711>that. <00:02:46.866>Doesn't <00:02:47.022>it <00:02:47.177>work <00:02:47.333>in <00:02:47.488>between <00:02:47.644>particular <00:02:47.800>and

53
00:02:49.400 --> 00:02:52.000
<00:02:49.400>no <00:02:49.750>language <00:02:50.100>could <00:02:50.450>do <00:02:50.800>both.

54
00:02:52.800 --> 00:02:55.500
<00:02:52.800>But <00:02:52.940>C <00:02:53.080>could <00:02:53.220>do <00:02:53.360>most <00:02:53.500>of <00:02:53.640>the <00:02:53.780>low <00:02:53.920>level <00:02:54.060>stuff <00:02:54.200>and

55
00:02:55.500 --> 00:02:59.800
<00:02:55.500>similar <00:02:55.733>which <00:02:55.966>I <00:02:56.200>had <00:02:56.433>learned <00:02:56.666>earlier <00:02:56.900>could

56
00:02:58.800 --> 00:03:02.000
<00:02:58.800>do <00:02:59.266>the <00:02:59.733>code <00:03:00.200>organization.

57
00:03:01.400 --> 00:03:04.100
<00:03:01.400>So <00:03:01.680>I <00:03:01.960>decided <00:03:02.240>to <00:03:02.520>sort <00:03:02.800>of

58
00:03:04.100 --> 00:03:07.700
<00:03:04.100>merge <00:03:04.333>them <00:03:04.566>together <00:03:04.799>by <00:03:05.033>putting <00:03:05.266>simular <00:03:05.500>classes

59
00:03:07.700 --> 00:03:10.600
<00:03:07.700>into <00:03:08.399>c++, <00:03:09.100>and

60
00:03:10.600 --> 00:03:13.400
<00:03:10.600>one <00:03:10.833>thing <00:03:11.066>I <00:03:11.299>realized <00:03:11.533>very <00:03:11.766>early <00:03:12.000>on

61
00:03:13.400 --> 00:03:16.600
<00:03:13.400>was <00:03:13.680>I <00:03:13.960>couldn't <00:03:14.240>just <00:03:14.520>solve <00:03:14.800>a

62
00:03:16.600 --> 00:03:19.100
<00:03:16.600>particular <00:03:16.775>problem <00:03:16.950>and <00:03:17.125>put <00:03:17.299>the <00:03:17.475>solution <00:03:17.650>into <00:03:17.825>the <00:03:18.000>language.

63
00:03:20.800 --> 00:03:23.400
<00:03:20.800>Therefore <00:03:20.975>I <00:03:21.150>had <00:03:21.325>to <00:03:21.500>build <00:03:21.675>abstraction <00:03:21.850>mechanisms <00:03:22.025>so <00:03:22.200>that

64
00:03:23.400 --> 00:03:27.000
<00:03:23.400>I <00:03:23.575>and <00:03:23.750>other <00:03:23.925>users <00:03:24.100>could <00:03:24.275>put <00:03:24.450>their <00:03:24.625>Solutions <00:03:24.800>in

65
00:03:26.300 --> 00:03:29.600
<00:03:26.300>their <00:03:26.533>code <00:03:26.766>and <00:03:27.000>that's <00:03:27.233>where <00:03:27.466>the <00:03:27.700>classes

66
00:03:29.600 --> 00:03:32.300
<00:03:29.600>come <00:03:29.833>from <00:03:30.066>and <00:03:30.299>no <00:03:30.533>I <00:03:30.766>never <00:03:31.000>got

67
00:03:32.300 --> 00:03:36.000
<00:03:32.300>to <00:03:32.500>write <00:03:32.700>that <00:03:32.900>system. <00:03:33.100>I <00:03:33.300>got <00:03:33.500>busy <00:03:33.700>supporting

68
00:03:35.500 --> 00:03:38.300
<00:03:35.500>people <00:03:35.850>doing <00:03:36.200>civil <00:03:36.550>classes <00:03:36.900>and

69
00:03:38.300 --> 00:03:42.200
<00:03:38.300>later <00:03:38.650>see <00:03:39.000>the <00:03:39.350>c++? <00:03:39.700>So

70
00:03:41.200 --> 00:03:44.800
<00:03:41.200>I <00:03:41.399>want <00:03:41.600>a <00:03:41.799>stronger <00:03:42.000>type <00:03:42.200>shaking <00:03:42.399>like <00:03:42.600>in

71
00:03:44.800 --> 00:03:48.100
<00:03:44.800>simula <00:03:45.266>simula <00:03:45.733>was <00:03:46.200>headed

72
00:03:47.100 --> 00:03:50.500
<00:03:47.100>type <00:03:47.380>system <00:03:47.660>that <00:03:47.940>was <00:03:48.220>perfectly <00:03:48.500>safe

73
00:03:50.500 --> 00:03:53.700
<00:03:50.500>and <00:03:50.850>extensible <00:03:51.200>and <00:03:51.550>I <00:03:51.900>wanted

74
00:03:53.700 --> 00:03:56.200
<00:03:53.700>the <00:03:53.980>classes <00:03:54.260>without <00:03:54.540>the <00:03:54.820>overhead <00:03:55.100>that

75
00:03:56.200 --> 00:03:59.500
<00:03:56.200>you <00:03:56.433>got <00:03:56.666>in <00:03:56.899>simula <00:03:57.133>because <00:03:57.366>that <00:03:57.600>wouldn't

76
00:03:59.500 --> 00:04:02.700
<00:03:59.500>be <00:03:59.850>useful <00:04:00.200>for <00:04:00.550>sort <00:04:00.900>of

77
00:04:02.700 --> 00:04:05.200
<00:04:02.700>really <00:04:03.049>tough <00:04:03.399>systems <00:04:03.750>programming <00:04:04.100>which

78
00:04:05.200 --> 00:04:09.000
<00:04:05.200>I <00:04:05.433>needed <00:04:05.666>and <00:04:05.899>I <00:04:06.133>also <00:04:06.366>needed <00:04:06.600>generic

79
00:04:08.500 --> 00:04:11.200
<00:04:08.500>programming <00:04:08.733>so <00:04:08.966>that <00:04:09.200>I <00:04:09.433>wouldn't <00:04:09.666>have <00:04:09.900>to

80
00:04:11.200 --> 00:04:14.200
<00:04:11.200>write <00:04:11.375>a <00:04:11.549>vector <00:04:11.725>of <00:04:11.899>doubles <00:04:12.075>and <00:04:12.250>a <00:04:12.424>Victor <00:04:12.600>in

81
00:04:14.200 --> 00:04:18.000
<00:04:14.200>a <00:04:14.339>victor <00:04:14.480>of <00:04:14.619>whatever <00:04:14.760>I <00:04:14.899>want <00:04:15.040>a <00:04:15.179>victor <00:04:15.320>of <00:04:15.459>tea <00:04:15.600>parameterized

82
00:04:17.300 --> 00:04:18.500
<00:04:17.300>with <00:04:18.380>she

83
00:04:19.100 --> 00:04:22.500
<00:04:19.100>I <00:04:19.333>started <00:04:19.566>with <00:04:19.800>macros <00:04:20.033>and <00:04:20.266>overloading <00:04:20.500>and

84
00:04:22.500 --> 00:04:26.000
<00:04:22.500>then <00:04:22.780>I <00:04:23.060>needed <00:04:23.340>coroutines <00:04:23.620>which <00:04:23.900>actually

85
00:04:25.300 --> 00:04:28.200
<00:04:25.300>was <00:04:25.455>my <00:04:25.611>bread <00:04:25.766>and <00:04:25.922>butter <00:04:26.077>for <00:04:26.233>the <00:04:26.388>first <00:04:26.544>10 <00:04:26.700>years.

86
00:04:28.200 --> 00:04:31.900
<00:04:28.200>One <00:04:28.400>of <00:04:28.599>the <00:04:28.800>reasons <00:04:29.000>C++ <00:04:29.200>was <00:04:29.400>successful <00:04:29.599>was

87
00:04:31.900 --> 00:04:35.000
<00:04:31.900>that <00:04:32.099>you <00:04:32.299>could <00:04:32.500>do <00:04:32.700>multiple <00:04:32.900>threads <00:04:33.099>of <00:04:33.299>computation

88
00:04:34.700 --> 00:04:37.500
<00:04:34.700>very <00:04:35.050>cheaply. <00:04:35.400>I <00:04:35.750>was <00:04:36.099>running

89
00:04:37.500 --> 00:04:40.700
<00:04:37.500>700 <00:04:38.200>cold <00:04:38.900>chains.

90
00:04:41.300 --> 00:04:45.600
<00:04:41.300>In <00:04:41.650>250k <00:04:42.000>of <00:04:42.350>memory, <00:04:42.700>that's

91
00:04:44.600 --> 00:04:47.100
<00:04:44.600>a <00:04:45.066>high <00:04:45.533>degree <00:04:46.000>of

92
00:04:47.100 --> 00:04:50.500
<00:04:47.100>concurrency <00:04:47.300>for <00:04:47.500>a <00:04:47.700>very <00:04:47.900>small <00:04:48.100>system. <00:04:48.300>So <00:04:48.500>the

93
00:04:50.500 --> 00:04:52.500
<00:04:50.500>aim <00:04:51.200>was <00:04:51.900>that

94
00:04:54.400 --> 00:04:55.500
<00:04:54.400>we <00:04:54.895>want <00:04:55.390>to

95
00:04:57.300 --> 00:05:00.900
<00:04:57.300>Sort <00:04:57.475>of <00:04:57.650>object <00:04:57.825>oriented <00:04:58.000>programming <00:04:58.175>as <00:04:58.350>in <00:04:58.525>simula, <00:04:58.700>the

96
00:05:00.900 --> 00:05:03.900
<00:05:00.900>statically <00:05:01.250>checked <00:05:01.599>interfaces <00:05:01.950>and <00:05:02.299>extensible

97
00:05:03.900 --> 00:05:06.900
<00:05:03.900>type <00:05:04.133>system <00:05:04.366>that's <00:05:04.599>very <00:05:04.833>important <00:05:05.066>and <00:05:05.299>the

98
00:05:06.900 --> 00:05:10.300
<00:05:06.900>rest <00:05:07.075>of <00:05:07.250>the <00:05:07.424>stuff <00:05:07.599>and <00:05:07.775>I <00:05:07.950>wanted <00:05:08.125>compatibility <00:05:08.299>to

99
00:05:09.300 --> 00:05:12.700
<00:05:09.300>see <00:05:09.475>as <00:05:09.650>close <00:05:09.825>to <00:05:10.000>see <00:05:10.175>as <00:05:10.350>possible <00:05:10.525>but <00:05:10.700>no

100
00:05:12.700 --> 00:05:15.100
<00:05:12.700>closer <00:05:12.933>see <00:05:13.166>in <00:05:13.400>those <00:05:13.633>days <00:05:13.866>did <00:05:14.099>not

101
00:05:15.100 --> 00:05:19.600
<00:05:15.100>have <00:05:15.300>type <00:05:15.500>checking <00:05:15.700>of <00:05:15.900>function <00:05:16.100>arguments <00:05:16.300>it <00:05:16.500>barely

102
00:05:18.600 --> 00:05:22.400
<00:05:18.600>had <00:05:18.880>a <00:05:19.160>type <00:05:19.440>system <00:05:19.720>and <00:05:20.000>that

103
00:05:21.400 --> 00:05:25.000
<00:05:21.400>I <00:05:21.599>couldn't <00:05:21.799>live <00:05:22.000>with <00:05:22.200>so <00:05:22.400>I <00:05:22.599>introduced <00:05:22.799>the

104
00:05:24.700 --> 00:05:27.400
<00:05:24.700>checking <00:05:24.933>that <00:05:25.166>you <00:05:25.400>now <00:05:25.633>see <00:05:25.866>in <00:05:26.099>C++

105
00:05:27.400 --> 00:05:30.200
<00:05:27.400>and <00:05:27.633>in <00:05:27.866>C <00:05:28.099>and <00:05:28.333>for <00:05:28.566>10 <00:05:28.799>years,

106
00:05:30.200 --> 00:05:33.700
<00:05:30.200>I <00:05:30.375>had <00:05:30.550>to <00:05:30.724>take <00:05:30.900>criticism <00:05:31.075>for <00:05:31.250>not <00:05:31.425>being <00:05:31.599>compatible

107
00:05:33.700 --> 00:05:36.400
<00:05:33.700>enough <00:05:33.900>because <00:05:34.099>I <00:05:34.300>didn't <00:05:34.500>allow <00:05:34.700>that <00:05:34.900>class <00:05:35.099>of

108
00:05:36.400 --> 00:05:36.700
bugs.

109
00:05:37.500 --> 00:05:40.600
<00:05:37.500>And <00:05:37.733>one <00:05:37.966>thing <00:05:38.200>I <00:05:38.433>needed <00:05:38.666>specifically <00:05:38.900>for

110
00:05:40.600 --> 00:05:43.400
<00:05:40.600>generic <00:05:40.950>programming <00:05:41.300>was <00:05:41.650>I <00:05:42.000>wanted

111
00:05:43.400 --> 00:05:46.500
<00:05:43.400>uniform <00:05:43.750>treatment <00:05:44.099>of <00:05:44.450>user <00:05:44.799>refined

112
00:05:46.500 --> 00:05:49.800
<00:05:46.500>types <00:05:46.780>and <00:05:47.060>building <00:05:47.340>types. <00:05:47.620>So <00:05:47.900>built-in

113
00:05:49.800 --> 00:05:52.200
<00:05:49.800>types <00:05:50.000>and <00:05:50.200>more <00:05:50.400>languages <00:05:50.600>can <00:05:50.800>be <00:05:51.000>on <00:05:51.200>the

114
00:05:52.200 --> 00:05:55.700
<00:05:52.200>stack <00:05:52.355>and <00:05:52.511>things <00:05:52.666>like <00:05:52.822>that <00:05:52.977>and <00:05:53.133>in <00:05:53.288>many <00:05:53.444>languages <00:05:53.599>from

115
00:05:55.700 --> 00:05:58.700
<00:05:55.700>similar <00:05:56.050>onward <00:05:56.400>through <00:05:56.750>Javan <00:05:57.099>search,

116
00:05:58.700 --> 00:06:03.000
<00:05:58.700>they <00:05:58.840>tend <00:05:58.979>to <00:05:59.120>live <00:05:59.260>on <00:05:59.400>the <00:05:59.539>heat <00:05:59.680>and <00:05:59.820>you <00:05:59.960>can't <00:06:00.099>interchangeably

117
00:06:01.500 --> 00:06:04.600
<00:06:01.500>use <00:06:02.200>building <00:06:02.900>and

118
00:06:04.600 --> 00:06:07.400
<00:06:04.600>user-defined <00:06:04.950>types. <00:06:05.300>I <00:06:05.650>needed <00:06:06.000>that.

119
00:06:08.100 --> 00:06:08.400
so

120
00:06:09.700 --> 00:06:13.000
<00:06:09.700>see <00:06:09.875>the <00:06:10.050>classes <00:06:10.224>turned <00:06:10.400>out <00:06:10.575>to <00:06:10.750>be <00:06:10.925>be <00:06:11.099>useful

121
00:06:12.700 --> 00:06:15.300
<00:06:12.700>not <00:06:12.933>just <00:06:13.166>for <00:06:13.400>me, <00:06:13.633>but <00:06:13.866>for <00:06:14.099>others

122
00:06:15.300 --> 00:06:18.400
<00:06:15.300>and <00:06:15.580>I <00:06:15.860>ended <00:06:16.140>up <00:06:16.420>supporting <00:06:16.700>my

123
00:06:18.400 --> 00:06:21.400
<00:06:18.400>friends <00:06:18.575>in <00:06:18.750>search <00:06:18.924>this <00:06:19.099>this <00:06:19.275>was <00:06:19.450>a <00:06:19.625>time <00:06:19.799>where

124
00:06:21.400 --> 00:06:24.500
<00:06:21.400>that <00:06:21.750>computer <00:06:22.099>there <00:06:22.450>named <00:06:22.799>research

125
00:06:24.500 --> 00:06:28.800
<00:06:24.500>a <00:06:24.780>PDP <00:06:25.060>1170 <00:06:25.340>serving <00:06:25.620>40 <00:06:25.900>researchers

126
00:06:27.800 --> 00:06:30.700
<00:06:27.800>including <00:06:29.200>Kent

127
00:06:30.700 --> 00:06:33.800
<00:06:30.700>Thompson <00:06:30.875>and <00:06:31.050>density <00:06:31.224>as <00:06:31.400>you <00:06:31.575>see <00:06:31.750>by <00:06:31.925>there <00:06:32.099>that

128
00:06:33.800 --> 00:06:36.400
<00:06:33.800>was <00:06:34.033>a <00:06:34.266>machine <00:06:34.500>where <00:06:34.733>C++ <00:06:34.966>started <00:06:35.200>to

129
00:06:36.400 --> 00:06:36.900
<00:06:36.400>be <00:06:36.849>developed.

130
00:06:37.700 --> 00:06:38.900
<00:06:37.700>and <00:06:38.780>I

131
00:06:39.900 --> 00:06:43.200
<00:06:39.900>Built <00:06:40.179>a <00:06:40.460>highly <00:06:40.739>portable <00:06:41.020>implementation <00:06:41.299>because

132
00:06:42.200 --> 00:06:45.200
<00:06:42.200>well <00:06:42.433>I <00:06:42.666>needed <00:06:42.900>I <00:06:43.133>didn't <00:06:43.366>know <00:06:43.599>what

133
00:06:45.200 --> 00:06:48.600
<00:06:45.200>the <00:06:45.327>hardware <00:06:45.454>would <00:06:45.581>be <00:06:45.709>in <00:06:45.836>the <00:06:45.963>end. <00:06:46.090>So <00:06:46.218>I <00:06:46.345>had <00:06:46.472>to <00:06:46.599>and

134
00:06:48.600 --> 00:06:51.200
<00:06:48.600>that <00:06:48.775>turned <00:06:48.950>out <00:06:49.125>to <00:06:49.300>be <00:06:49.475>really <00:06:49.650>useful. <00:06:49.825>It <00:06:50.000>was

135
00:06:51.200 --> 00:06:54.600
<00:06:51.200>a <00:06:51.400>native <00:06:51.599>cross <00:06:51.800>compiler. <00:06:52.000>So <00:06:52.200>very <00:06:52.400>soon <00:06:52.599>it

136
00:06:54.600 --> 00:06:57.500
<00:06:54.600>worked <00:06:54.800>on <00:06:55.000>more <00:06:55.200>computers <00:06:55.400>than <00:06:55.600>I <00:06:55.800>knew <00:06:56.000>off.

137
00:06:58.200 --> 00:07:01.700
<00:06:58.200>And <00:06:58.355>it <00:06:58.511>was <00:06:58.666>cheap <00:06:58.822>in <00:06:58.977>in <00:06:59.133>the <00:06:59.288>days <00:06:59.444>before <00:06:59.599>distribution

138
00:07:01.700 --> 00:07:04.700
<00:07:01.700>over <00:07:01.900>the <00:07:02.099>Internet <00:07:02.300>Because <00:07:02.500>the <00:07:02.700>Internet <00:07:02.900>barely <00:07:03.099>was

139
00:07:04.700 --> 00:07:07.600
<00:07:04.700>there <00:07:04.875>you <00:07:05.050>had <00:07:05.224>to <00:07:05.400>send <00:07:05.575>them <00:07:05.750>act <00:07:05.925>tape. <00:07:06.099>So

140
00:07:07.600 --> 00:07:10.400
<00:07:07.600>the <00:07:07.833>implementation <00:07:08.066>source <00:07:08.300>and <00:07:08.533>the <00:07:08.766>whole <00:07:09.000>works

141
00:07:10.400 --> 00:07:14.300
<00:07:10.400>was <00:07:10.679>75 <00:07:10.960>dollars, <00:07:11.239>which <00:07:11.520>was <00:07:11.799>rather

142
00:07:13.300 --> 00:07:17.000
<00:07:13.300>cheap <00:07:13.533>even <00:07:13.766>in <00:07:14.000>those <00:07:14.233>days <00:07:14.466>and <00:07:14.700>the

143
00:07:16.400 --> 00:07:19.500
<00:07:16.400>commercial <00:07:16.679>you <00:07:16.960>started <00:07:17.239>only <00:07:17.520>five <00:07:17.799>years

144
00:07:19.500 --> 00:07:23.500
<00:07:19.500>after <00:07:19.780>I <00:07:20.060>started <00:07:20.340>building <00:07:20.620>c++, <00:07:20.900>as

145
00:07:22.500 --> 00:07:25.400
<00:07:22.500>a <00:07:22.700>matter <00:07:22.900>of <00:07:23.100>fact, <00:07:23.300>I <00:07:23.500>served <00:07:23.700>my <00:07:23.900>first

146
00:07:25.400 --> 00:07:26.600
nun.

147
00:07:27.600 --> 00:07:30.700
<00:07:27.600>the <00:07:27.880>sort <00:07:28.160>of <00:07:28.440>first <00:07:28.720>user <00:07:29.000>that

148
00:07:30.700 --> 00:07:32.200
<00:07:30.700>needed <00:07:31.375>C++ <00:07:32.050>for

149
00:07:33.100 --> 00:07:37.300
<00:07:33.100>production <00:07:33.275>work <00:07:33.450>which <00:07:33.625>was <00:07:33.800>to <00:07:33.975>do <00:07:34.150>with <00:07:34.325>analysis <00:07:34.500>of

150
00:07:36.300 --> 00:07:40.600
<00:07:36.300>communication <00:07:37.000>protocols <00:07:37.700>six

151
00:07:39.600 --> 00:07:42.800
<00:07:39.600>months <00:07:39.880>after <00:07:40.160>I <00:07:40.440>started <00:07:40.720>so <00:07:41.000>C++

152
00:07:42.800 --> 00:07:45.600
<00:07:42.800>is <00:07:43.033>always <00:07:43.266>been <00:07:43.500>a <00:07:43.733>language <00:07:43.966>for <00:07:44.200>use.

153
00:07:45.600 --> 00:07:49.000
<00:07:45.600>It's <00:07:45.755>been <00:07:45.911>in <00:07:46.066>use <00:07:46.222>it <00:07:46.377>has <00:07:46.533>served <00:07:46.688>users. <00:07:46.844>So <00:07:47.000>basically

154
00:07:48.400 --> 00:07:52.200
<00:07:48.400>code <00:07:48.599>is <00:07:48.799>written <00:07:49.000>for <00:07:49.200>people <00:07:49.400>and <00:07:49.599>by <00:07:49.799>people

155
00:07:52.200 --> 00:07:55.900
<00:07:52.200>when <00:07:52.479>you <00:07:52.760>look <00:07:53.039>at <00:07:53.320>books <00:07:53.599>and

156
00:07:55.900 --> 00:07:59.200
<00:07:55.900>articles <00:07:56.599>about <00:07:57.299>programming

157
00:08:00.200 --> 00:08:04.100
<00:08:00.200>people <00:08:00.433>often <00:08:00.666>forget <00:08:00.900>this <00:08:01.133>and <00:08:01.366>talk <00:08:01.599>about

158
00:08:05.400 --> 00:08:08.500
<00:08:05.400>All <00:08:05.575>kinds <00:08:05.750>of <00:08:05.924>technical <00:08:06.099>details, <00:08:06.275>but <00:08:06.450>basically <00:08:06.625>the <00:08:06.799>programming

159
00:08:08.500 --> 00:08:11.500
<00:08:08.500>language <00:08:08.675>is <00:08:08.850>a <00:08:09.025>tool. <00:08:09.200>It's <00:08:09.375>one <00:08:09.550>part <00:08:09.725>of <00:08:09.900>our

160
00:08:11.500 --> 00:08:14.400
<00:08:11.500>world. <00:08:11.780>You <00:08:12.060>don't <00:08:12.340>write <00:08:12.620>code <00:08:12.900>in

161
00:08:14.400 --> 00:08:17.200
<00:08:14.400>the <00:08:14.575>manual <00:08:14.750>you <00:08:14.924>write <00:08:15.099>code <00:08:15.275>with <00:08:15.450>a <00:08:15.625>compiler <00:08:15.799>with

162
00:08:17.200 --> 00:08:21.300
<00:08:17.200>analyzers <00:08:17.479>with <00:08:17.760>linkers <00:08:18.039>with <00:08:18.320>all <00:08:18.599>kinds

163
00:08:21.300 --> 00:08:22.600
<00:08:21.300>of <00:08:21.690>stuff. <00:08:22.080>So <00:08:22.470>basically

164
00:08:23.800 --> 00:08:27.000
<00:08:23.800>When <00:08:24.033>I <00:08:24.266>had <00:08:24.500>to <00:08:24.733>document <00:08:24.966>c++? <00:08:25.200>The

165
00:08:26.100 --> 00:08:30.000
<00:08:26.100>first <00:08:26.333>sentence <00:08:26.566>in <00:08:26.800>the <00:08:27.033>book <00:08:27.266>The <00:08:27.500>C++

166
00:08:29.600 --> 00:08:32.600
<00:08:29.600>programming <00:08:29.950>language <00:08:30.300>was <00:08:30.650>C++ <00:08:31.000>is

167
00:08:32.600 --> 00:08:35.000
<00:08:32.600>a <00:08:32.800>general <00:08:33.000>purpose <00:08:33.200>programming <00:08:33.400>language <00:08:33.600>designed <00:08:33.800>to <00:08:34.000>make

168
00:08:35.600 --> 00:08:38.600
<00:08:35.600>programming <00:08:35.880>more <00:08:36.159>enjoyable <00:08:36.440>for <00:08:36.720>serious <00:08:37.000>programmers

169
00:08:38.600 --> 00:08:41.200
<00:08:38.600>and <00:08:38.880>by <00:08:39.159>serious <00:08:39.440>programmers. <00:08:39.720>I <00:08:40.000>mean

170
00:08:41.200 --> 00:08:44.300
<00:08:41.200>people <00:08:41.375>who <00:08:41.550>write <00:08:41.725>code <00:08:41.900>for <00:08:42.075>others <00:08:42.250>there <00:08:42.425>was <00:08:42.600>endless

171
00:08:44.300 --> 00:08:47.100
<00:08:44.300>objections <00:08:44.533>to <00:08:44.766>that <00:08:45.000>my <00:08:45.233>editors <00:08:45.466>removed <00:08:45.699>it

172
00:08:47.100 --> 00:08:51.200
<00:08:47.100>three <00:08:47.255>times <00:08:47.411>because <00:08:47.566>you're <00:08:47.722>supposed <00:08:47.877>to <00:08:48.033>talk <00:08:48.188>about <00:08:48.344>productivity <00:08:48.500>and

173
00:08:50.200 --> 00:08:53.900
<00:08:50.200>object <00:08:50.900>oriented <00:08:51.600>and

174
00:08:53.900 --> 00:08:56.600
<00:08:53.900>all <00:08:54.133>kinds <00:08:54.366>of <00:08:54.600>buzzwords. <00:08:54.833>No, <00:08:55.066>I <00:08:55.300>left

175
00:08:56.600 --> 00:08:58.600
<00:08:56.600>that <00:08:57.066>one <00:08:57.533>in <00:08:58.000>basically.

176
00:09:00.100 --> 00:09:03.700
<00:09:00.100>We <00:09:00.275>write <00:09:00.450>code <00:09:00.625>for <00:09:00.800>people <00:09:00.975>to <00:09:01.150>use <00:09:01.325>people <00:09:01.500>don't

177
00:09:03.700 --> 00:09:04.500
<00:09:03.700>actually <00:09:04.420>want.

178
00:09:05.900 --> 00:09:07.300
<00:09:05.900>programming <00:09:06.530>language <00:09:07.160>except

179
00:09:08.300 --> 00:09:11.400
<00:09:08.300>the <00:09:08.579>programmers <00:09:08.859>the <00:09:09.140>users <00:09:09.420>or <00:09:09.699>users

180
00:09:11.400 --> 00:09:14.300
<00:09:11.400>want <00:09:11.555>systems. <00:09:11.711>They <00:09:11.866>want <00:09:12.022>to <00:09:12.177>actually <00:09:12.333>want <00:09:12.488>to <00:09:12.644>see <00:09:12.800>the

181
00:09:14.300 --> 00:09:17.200
<00:09:14.300>programming <00:09:14.455>language. <00:09:14.611>If <00:09:14.766>you <00:09:14.922>can <00:09:15.077>see <00:09:15.233>that <00:09:15.388>a <00:09:15.544>system <00:09:15.699>is

182
00:09:17.200 --> 00:09:20.100
<00:09:17.200>written <00:09:17.400>in <00:09:17.600>c++, <00:09:17.800>that's <00:09:18.000>probably <00:09:18.200>something <00:09:18.400>wrong <00:09:18.600>with

183
00:09:20.100 --> 00:09:23.800
<00:09:20.100>your <00:09:20.333>software. <00:09:20.566>The <00:09:20.800>value <00:09:21.033>of <00:09:21.266>a <00:09:21.500>language

184
00:09:23.800 --> 00:09:26.700
<00:09:23.800>is <00:09:24.033>in <00:09:24.266>the <00:09:24.500>quality <00:09:24.733>of <00:09:24.966>its <00:09:25.199>applications.

185
00:09:27.500 --> 00:09:30.400
<00:09:27.500>And <00:09:27.733>in <00:09:27.966>that <00:09:28.200>I <00:09:28.433>think <00:09:28.666>C++ <00:09:28.900>did

186
00:09:30.400 --> 00:09:33.800
<00:09:30.400>pretty <00:09:30.633>well. <00:09:30.866>There's <00:09:31.100>a <00:09:31.333>sampling <00:09:31.566>up <00:09:31.800>on

187
00:09:33.800 --> 00:09:36.800
<00:09:33.800>the <00:09:34.150>screen <00:09:34.500>and <00:09:34.849>the <00:09:35.199>range

188
00:09:36.800 --> 00:09:39.000
<00:09:36.800>of <00:09:37.079>uses <00:09:37.359>of <00:09:37.640>C++. <00:09:37.920>Of <00:09:38.199>course

189
00:09:39.300 --> 00:09:42.300
<00:09:39.300>completely <00:09:39.579>wildly <00:09:39.859>wider <00:09:40.140>than <00:09:40.420>what <00:09:40.699>I

190
00:09:42.300 --> 00:09:45.900
<00:09:42.300>could <00:09:42.474>imagine <00:09:42.650>at <00:09:42.824>the <00:09:43.000>time. <00:09:43.175>So <00:09:43.349>the <00:09:43.525>design <00:09:43.699>aim

191
00:09:45.900 --> 00:09:48.800
<00:09:45.900>of <00:09:46.180>C++ <00:09:46.459>of <00:09:46.740>generality <00:09:47.020>and <00:09:47.300>extensibility

192
00:09:48.800 --> 00:09:52.600
<00:09:48.800>turned <00:09:49.033>out <00:09:49.266>to <00:09:49.500>be <00:09:49.733>quite <00:09:49.966>useful <00:09:50.199>all

193
00:09:51.600 --> 00:09:54.500
<00:09:51.600>good <00:09:52.066>engineering <00:09:52.533>relies <00:09:53.000>on

194
00:09:54.500 --> 00:09:54.900
feedback.

195
00:09:55.600 --> 00:09:58.700
<00:09:55.600>That <00:09:55.833>is <00:09:56.066>we <00:09:56.300>don't <00:09:56.533>actually <00:09:56.766>really <00:09:57.000>know

196
00:09:58.700 --> 00:10:01.300
<00:09:58.700>how <00:09:58.980>things <00:09:59.260>work. <00:09:59.540>So <00:09:59.820>we've <00:10:00.100>tried

197
00:10:01.300 --> 00:10:01.500
<00:10:01.300>them <00:10:01.480>out.

198
00:10:02.200 --> 00:10:05.900
<00:10:02.200>So <00:10:02.355>we <00:10:02.511>built <00:10:02.666>something <00:10:02.822>we <00:10:02.977>see <00:10:03.133>how <00:10:03.288>it <00:10:03.444>works <00:10:03.600>and

199
00:10:05.900 --> 00:10:08.200
<00:10:05.900>then <00:10:06.366>we <00:10:06.833>fix <00:10:07.300>what

200
00:10:08.200 --> 00:10:11.300
<00:10:08.200>doesn't <00:10:08.400>work <00:10:08.600>and <00:10:08.800>add <00:10:09.000>what <00:10:09.200>is <00:10:09.400>necessary <00:10:09.600>to

201
00:10:11.300 --> 00:10:12.300
<00:10:11.300>solve <00:10:11.750>the <00:10:12.199>next.

202
00:10:13.900 --> 00:10:15.800
<00:10:13.900>next <00:10:14.366>set <00:10:14.833>of <00:10:15.300>problems

203
00:10:16.800 --> 00:10:19.100
<00:10:16.800>I <00:10:17.079>was <00:10:17.359>very <00:10:17.640>nice <00:10:17.920>pleased <00:10:18.199>to

204
00:10:19.100 --> 00:10:22.200
<00:10:19.100>see <00:10:19.275>the <00:10:19.450>flight <00:10:19.625>software <00:10:19.800>for <00:10:19.975>the <00:10:20.150>mascot <00:10:20.325>of <00:10:20.500>being

205
00:10:22.200 --> 00:10:25.700
<00:10:22.200>c++, <00:10:22.400>it <00:10:22.600>comes <00:10:22.800>up <00:10:23.000>in <00:10:23.200>strange <00:10:23.400>places <00:10:23.600>that

206
00:10:25.700 --> 00:10:29.100
<00:10:25.700>I <00:10:25.933>had <00:10:26.166>an <00:10:26.400>imagined <00:10:26.633>and <00:10:26.866>there's <00:10:27.100>a

207
00:10:28.100 --> 00:10:31.200
<00:10:28.100>chip <00:10:28.450>factory <00:10:28.800>essentially <00:10:29.150>all <00:10:29.500>of

208
00:10:31.200 --> 00:10:34.500
<00:10:31.200>your <00:10:31.480>chips <00:10:31.760>build <00:10:32.040>with <00:10:32.320>c++? <00:10:32.600>So

209
00:10:34.500 --> 00:10:35.100
basically

210
00:10:36.900 --> 00:10:39.500
<00:10:36.900>C++ <00:10:37.250>relies <00:10:37.600>on <00:10:37.949>two <00:10:38.300>pillars

211
00:10:39.500 --> 00:10:42.000
<00:10:39.500>coming <00:10:39.675>from <00:10:39.850>the <00:10:40.025>first <00:10:40.200>ideas <00:10:40.375>of <00:10:40.550>what <00:10:40.725>it <00:10:40.900>was.

212
00:10:42.600 --> 00:10:45.600
<00:10:42.600>There's <00:10:42.727>a <00:10:42.854>direct <00:10:42.981>map <00:10:43.109>to <00:10:43.236>the <00:10:43.363>hardware <00:10:43.490>so <00:10:43.618>we <00:10:43.745>can <00:10:43.872>manipulate <00:10:44.000>hardware

213
00:10:45.600 --> 00:10:48.400
<00:10:45.600>and <00:10:45.775>we <00:10:45.950>constantly <00:10:46.125>have <00:10:46.300>to <00:10:46.475>improve <00:10:46.650>the <00:10:46.825>way <00:10:47.000>that

214
00:10:48.400 --> 00:10:51.800
<00:10:48.400>is <00:10:48.574>done <00:10:48.750>so <00:10:48.925>that <00:10:49.100>we <00:10:49.275>can <00:10:49.449>handle <00:10:49.625>the <00:10:49.800>new

215
00:10:51.800 --> 00:10:54.400
<00:10:51.800>and <00:10:52.033>more <00:10:52.266>interesting <00:10:52.500>more <00:10:52.733>powerful. <00:10:52.966>We <00:10:53.199>had

216
00:10:54.400 --> 00:10:57.800
<00:10:54.400>a <00:10:54.540>hardware <00:10:54.680>that <00:10:54.819>we <00:10:54.959>get <00:10:55.100>and <00:10:55.240>then <00:10:55.380>we <00:10:55.520>have <00:10:55.660>to <00:10:55.800>abstract

217
00:10:57.800 --> 00:10:58.700
<00:10:57.800>away <00:10:58.610>from

218
00:11:00.100 --> 00:11:04.500
<00:11:00.100>the <00:11:00.275>hardware <00:11:00.450>which <00:11:00.625>is <00:11:00.800>too <00:11:00.975>messy <00:11:01.150>to <00:11:01.325>be <00:11:01.500>productive

219
00:11:03.500 --> 00:11:07.300
<00:11:03.500>and <00:11:03.733>safe <00:11:03.966>and <00:11:04.200>all <00:11:04.433>of <00:11:04.666>that <00:11:04.900>and

220
00:11:09.100 --> 00:11:12.100
<00:11:09.100>The <00:11:09.227>abstraction <00:11:09.354>doesn't <00:11:09.481>just <00:11:09.609>have <00:11:09.736>to <00:11:09.863>be <00:11:09.990>an <00:11:10.118>abstraction. <00:11:10.245>It <00:11:10.372>has <00:11:10.500>to

221
00:11:12.100 --> 00:11:15.400
<00:11:12.100>be <00:11:12.227>an <00:11:12.354>affordable <00:11:12.481>to <00:11:12.609>start <00:11:12.736>abstraction <00:11:12.863>so <00:11:12.990>that <00:11:13.118>you <00:11:13.245>can <00:11:13.372>use <00:11:13.500>it

222
00:11:15.400 --> 00:11:18.500
<00:11:15.400>for <00:11:15.633>the <00:11:15.866>kind <00:11:16.100>of <00:11:16.333>challenges <00:11:16.566>that <00:11:16.800>that

223
00:11:18.500 --> 00:11:19.100
<00:11:18.500>you <00:11:19.040>face.

224
00:11:19.800 --> 00:11:22.300
<00:11:19.800>and <00:11:20.000>I <00:11:20.199>soon <00:11:20.400>realized <00:11:20.599>that <00:11:20.800>you <00:11:21.000>couldn't <00:11:21.199>just

225
00:11:22.300 --> 00:11:25.600
<00:11:22.300>assign <00:11:22.500>the <00:11:22.699>language <00:11:22.900>you <00:11:23.099>have <00:11:23.300>to <00:11:23.500>articulate <00:11:23.699>some

226
00:11:25.600 --> 00:11:28.100
<00:11:25.600>principles <00:11:25.950>some <00:11:26.300>ideas <00:11:26.650>that <00:11:27.000>you

227
00:11:29.100 --> 00:11:33.600
<00:11:29.100>that <00:11:29.380>that <00:11:29.660>guides <00:11:29.940>you <00:11:30.220>otherwise <00:11:30.500>as

228
00:11:32.600 --> 00:11:35.400
<00:11:32.600>everybody <00:11:32.950>comes <00:11:33.300>and <00:11:33.650>ask <00:11:34.000>for

229
00:11:35.400 --> 00:11:38.500
<00:11:35.400>new <00:11:35.555>features <00:11:35.711>and <00:11:35.866>new <00:11:36.022>improvements. <00:11:36.177>You <00:11:36.333>don't <00:11:36.488>actually <00:11:36.644>know <00:11:36.800>which

230
00:11:38.500 --> 00:11:42.100
<00:11:38.500>to <00:11:38.733>accept <00:11:38.966>and <00:11:39.200>why <00:11:39.433>so <00:11:39.666>over <00:11:39.900>the

231
00:11:41.100 --> 00:11:45.700
<00:11:41.100>ages <00:11:41.566>I <00:11:42.033>outlined <00:11:42.500>a

232
00:11:45.700 --> 00:11:48.600
<00:11:45.700>set <00:11:45.875>of <00:11:46.050>principles <00:11:46.225>because <00:11:46.400>he <00:11:46.575>plus <00:11:46.750>plus <00:11:46.925>I <00:11:47.100>documented

233
00:11:48.600 --> 00:11:52.100
<00:11:48.600>in <00:11:48.833>that <00:11:49.066>book <00:11:49.300>there <00:11:49.533>in <00:11:49.766>95, <00:11:50.000>but

234
00:11:51.100 --> 00:11:54.600
<00:11:51.100>a <00:11:51.300>lot <00:11:51.500>of <00:11:51.700>these <00:11:51.900>ideals <00:11:52.100>were <00:11:52.300>much <00:11:52.500>earlier

235
00:11:54.600 --> 00:11:58.500
<00:11:54.600>and <00:11:54.755>you <00:11:54.911>can <00:11:55.066>see <00:11:55.222>the <00:11:55.377>reflection <00:11:55.533>of <00:11:55.688>the <00:11:55.844>original <00:11:56.000>ideas

236
00:11:57.500 --> 00:12:01.500
<00:11:57.500>there <00:11:57.966>type <00:11:58.433>safety <00:11:58.900>expressiveness

237
00:12:00.500 --> 00:12:03.700
<00:12:00.500>use <00:12:01.900>Hardware

238
00:12:03.700 --> 00:12:07.800
<00:12:03.700>zero <00:12:03.980>or <00:12:04.260>hit <00:12:04.540>abstraction. <00:12:04.820>It <00:12:05.100>was

239
00:12:07.800 --> 00:12:10.400
<00:12:07.800>all <00:12:08.079>there <00:12:08.359>and <00:12:08.640>it's <00:12:08.920>still <00:12:09.199>guides

240
00:12:10.400 --> 00:12:12.400
<00:12:10.400>c++, <00:12:11.800>Whoops

241
00:12:13.600 --> 00:12:16.400
<00:12:13.600>When <00:12:13.950>you <00:12:14.300>develop <00:12:14.650>a <00:12:15.000>language

242
00:12:16.400 --> 00:12:19.800
<00:12:16.400>not <00:12:16.600>enough <00:12:16.800>to <00:12:17.000>build <00:12:17.199>a <00:12:17.400>language. <00:12:17.600>That <00:12:17.800>is

243
00:12:19.800 --> 00:12:22.000
<00:12:19.800>the <00:12:19.955>best <00:12:20.111>that <00:12:20.266>one <00:12:20.422>or <00:12:20.577>two <00:12:20.733>things. <00:12:20.888>You <00:12:21.044>have <00:12:21.199>to

244
00:12:22.600 --> 00:12:25.700
<00:12:22.600>balance <00:12:22.833>a <00:12:23.066>lot <00:12:23.300>of <00:12:23.533>concerns <00:12:23.766>and <00:12:24.000>a

245
00:12:25.700 --> 00:12:28.700
<00:12:25.700>lot <00:12:25.875>there <00:12:26.050>has <00:12:26.225>to <00:12:26.400>be <00:12:26.575>trade-offs <00:12:26.750>in <00:12:26.925>places <00:12:27.100>and

246
00:12:30.100 --> 00:12:33.900
<00:12:30.100>About <00:12:30.240>twice <00:12:30.380>a <00:12:30.520>month, <00:12:30.660>at <00:12:30.800>least <00:12:30.940>I <00:12:31.080>get <00:12:31.220>the <00:12:31.360>following <00:12:31.500>set

247
00:12:33.900 --> 00:12:34.500
<00:12:33.900>of <00:12:34.440>requests.

248
00:12:35.500 --> 00:12:38.600
<00:12:35.500>You <00:12:35.733>really <00:12:35.966>must <00:12:36.200>simplify <00:12:36.433>C++. <00:12:36.666>It's <00:12:36.900>too

249
00:12:38.600 --> 00:12:41.500
<00:12:38.600>complicated. <00:12:38.800>Well, <00:12:39.000>we <00:12:39.200>all <00:12:39.400>agree <00:12:39.600>about <00:12:39.800>that, <00:12:40.000>of

250
00:12:41.500 --> 00:12:44.400
<00:12:41.500>course <00:12:41.733>and <00:12:41.966>while <00:12:42.200>you <00:12:42.433>are <00:12:42.666>simplifying <00:12:42.900>it,

251
00:12:44.400 --> 00:12:47.200
<00:12:44.400>please <00:12:44.633>add <00:12:44.866>these <00:12:45.100>two <00:12:45.333>features. <00:12:45.566>They <00:12:45.800>are

252
00:12:47.200 --> 00:12:49.000
<00:12:47.200>absolutely <00:12:47.433>essential <00:12:47.666>for <00:12:47.900>me <00:12:48.133>and <00:12:48.366>my <00:12:48.600>friends.

253
00:12:50.500 --> 00:12:53.700
<00:12:50.500>Oh <00:12:50.780>and <00:12:51.060>don't <00:12:51.340>break <00:12:51.620>my <00:12:51.900>coat.

254
00:12:53.700 --> 00:12:56.200
<00:12:53.700>I <00:12:53.855>have <00:12:54.011>a <00:12:54.166>million <00:12:54.322>lines <00:12:54.477>of <00:12:54.633>it <00:12:54.788>and <00:12:54.944>I <00:12:55.100>can't

255
00:12:56.200 --> 00:12:57.300
<00:12:56.200>afford <00:12:56.530>to <00:12:56.860>rewrite <00:12:57.189>it.

256
00:12:58.100 --> 00:13:01.000
<00:12:58.100>This <00:12:58.255>this <00:12:58.411>dilemma <00:12:58.566>trilemma. <00:12:58.722>You <00:12:58.877>have <00:12:59.033>to <00:12:59.188>find <00:12:59.344>a <00:12:59.500>way

257
00:13:01.400 --> 00:13:04.700
<00:13:01.400>out <00:13:01.527>of <00:13:01.654>and <00:13:01.781>I'm <00:13:01.909>going <00:13:02.036>to <00:13:02.163>try <00:13:02.290>and <00:13:02.418>explain <00:13:02.545>how <00:13:02.672>you <00:13:02.800>sort

258
00:13:04.700 --> 00:13:07.900
<00:13:04.700>of <00:13:04.900>get <00:13:05.100>out <00:13:05.300>of <00:13:05.500>that <00:13:05.700>problem. <00:13:05.900>But <00:13:06.100>this

259
00:13:07.900 --> 00:13:10.100
<00:13:07.900>leads <00:13:08.055>to <00:13:08.211>the <00:13:08.366>problem. <00:13:08.522>Why <00:13:08.677>do <00:13:08.833>you <00:13:08.988>evolve <00:13:09.144>in <00:13:09.300>first

260
00:13:10.100 --> 00:13:12.700
<00:13:10.100>place? <00:13:10.275>Why <00:13:10.450>don't <00:13:10.625>you <00:13:10.800>just <00:13:10.975>build <00:13:11.150>the <00:13:11.325>right <00:13:11.500>language?

261
00:13:13.600 --> 00:13:16.300
<00:13:13.600>At <00:13:13.775>first <00:13:13.950>and <00:13:14.125>when <00:13:14.300>it's <00:13:14.475>not <00:13:14.650>the <00:13:14.825>right <00:13:15.000>language

262
00:13:16.300 --> 00:13:19.200
<00:13:16.300>anymore <00:13:16.455>just <00:13:16.611>rewrite <00:13:16.766>all <00:13:16.922>your <00:13:17.077>code <00:13:17.233>in <00:13:17.388>the <00:13:17.544>new <00:13:17.699>language

263
00:13:19.200 --> 00:13:20.200
<00:13:19.200>that <00:13:19.425>is <00:13:19.650>just <00:13:19.875>right <00:13:20.100>now.

264
00:13:21.400 --> 00:13:24.300
<00:13:21.400>Well, <00:13:21.600>we <00:13:21.800>probably <00:13:22.000>can <00:13:22.199>do <00:13:22.400>not <00:13:22.600>do <00:13:22.800>that

265
00:13:24.300 --> 00:13:27.500
<00:13:24.300>and <00:13:24.533>the <00:13:24.766>world <00:13:25.000>change <00:13:25.233>we <00:13:25.466>change <00:13:25.699>so

266
00:13:27.500 --> 00:13:30.800
<00:13:27.500>we <00:13:27.733>have <00:13:27.966>to <00:13:28.200>do <00:13:28.433>something <00:13:28.666>and <00:13:28.900>just

267
00:13:30.800 --> 00:13:33.400
<00:13:30.800>throwing <00:13:30.974>away <00:13:31.150>all <00:13:31.324>the <00:13:31.500>old <00:13:31.675>stuff <00:13:31.849>and <00:13:32.025>coming <00:13:32.199>with

268
00:13:33.400 --> 00:13:37.200
<00:13:33.400>new <00:13:33.555>stuff <00:13:33.711>doesn't <00:13:33.866>quite <00:13:34.022>work <00:13:34.177>when <00:13:34.333>you <00:13:34.488>have <00:13:34.644>got <00:13:34.800>many

269
00:13:36.200 --> 00:13:39.300
<00:13:36.200>billions <00:13:36.480>of <00:13:36.760>lines <00:13:37.040>of <00:13:37.320>code <00:13:37.600>out

270
00:13:39.300 --> 00:13:43.600
<00:13:39.300>there. <00:13:39.455>Some <00:13:39.611>of <00:13:39.766>them <00:13:39.922>that <00:13:40.077>can't <00:13:40.233>easily <00:13:40.388>be <00:13:40.544>replaced. <00:13:40.699>There's

271
00:13:42.600 --> 00:13:45.400
<00:13:42.600>lots <00:13:42.880>of <00:13:43.160>places <00:13:43.440>where <00:13:43.720>you <00:13:44.000>can't

272
00:13:45.400 --> 00:13:48.400
<00:13:45.400>afford <00:13:45.600>to <00:13:45.800>send <00:13:46.000>a <00:13:46.199>repairman <00:13:46.400>or <00:13:46.600>an <00:13:46.800>update.

273
00:13:48.400 --> 00:13:53.100
<00:13:48.400>So <00:13:48.600>you <00:13:48.800>have <00:13:49.000>to <00:13:49.199>do <00:13:49.400>something <00:13:49.600>and <00:13:49.800>I

274
00:13:51.100 --> 00:13:54.300
<00:13:51.100>don't <00:13:51.566>believe <00:13:52.033>in <00:13:52.500>the

275
00:13:54.300 --> 00:13:57.900
<00:13:54.300>idea <00:13:54.500>of <00:13:54.699>a <00:13:54.900>perfect <00:13:55.099>language <00:13:55.300>for <00:13:55.500>everybody <00:13:55.699>and

276
00:13:57.900 --> 00:14:00.600
<00:13:57.900>and <00:13:58.133>for <00:13:58.366>all <00:13:58.600>time <00:13:58.833>so <00:13:59.066>I <00:13:59.300>am

277
00:14:00.600 --> 00:14:03.500
<00:14:00.600>sort <00:14:00.800>of <00:14:01.000>waited <00:14:01.200>to <00:14:01.400>the <00:14:01.600>idea <00:14:01.800>that <00:14:02.000>you

278
00:14:03.500 --> 00:14:06.500
<00:14:03.500>you <00:14:03.675>must <00:14:03.850>study <00:14:04.025>what <00:14:04.200>is <00:14:04.375>happening <00:14:04.550>and <00:14:04.725>then <00:14:04.900>find

279
00:14:06.500 --> 00:14:09.300
<00:14:06.500>improvements <00:14:07.200>see <00:14:07.900>plus

280
00:14:09.300 --> 00:14:13.200
<00:14:09.300>plus <00:14:09.474>did <00:14:09.650>evolve <00:14:09.824>over <00:14:10.000>the <00:14:10.175>years <00:14:10.349>as <00:14:10.525>challenges <00:14:10.699>happened

281
00:14:12.200 --> 00:14:15.100
<00:14:12.200>and <00:14:12.666>it <00:14:13.133>grew <00:14:13.600>and

282
00:14:15.100 --> 00:14:18.400
<00:14:15.100>I <00:14:15.380>can <00:14:15.660>give <00:14:15.940>long <00:14:16.220>talks <00:14:16.500>about

283
00:14:18.400 --> 00:14:20.000
<00:14:18.400>that <00:14:19.100>kind <00:14:19.800>of

284
00:14:21.400 --> 00:14:24.400
<00:14:21.400>Light <00:14:21.750>notice <00:14:22.100>the <00:14:22.449>tip <00:14:22.800>up

285
00:14:24.400 --> 00:14:27.700
<00:14:24.400>there <00:14:24.555>and <00:14:24.711>then <00:14:24.866>the <00:14:25.022>rise <00:14:25.177>again <00:14:25.333>just <00:14:25.488>explaining <00:14:25.644>that <00:14:25.800>take

286
00:14:27.700 --> 00:14:30.500
<00:14:27.700>some <00:14:27.933>time. <00:14:28.166>But <00:14:28.400>basically <00:14:28.633>what <00:14:28.866>happened <00:14:29.100>was

287
00:14:30.500 --> 00:14:33.900
<00:14:30.500>that <00:14:30.733>the <00:14:30.966>hardware <00:14:31.200>stopped <00:14:31.433>getting <00:14:31.666>faster <00:14:31.900>that

288
00:14:33.900 --> 00:14:36.600
<00:14:33.900>is <00:14:34.366>single <00:14:34.833>thread <00:14:35.300>processing.

289
00:14:37.500 --> 00:14:40.300
<00:14:37.500>Stopped <00:14:37.675>improving. <00:14:37.850>So <00:14:38.025>you <00:14:38.200>couldn't <00:14:38.375>afford <00:14:38.550>to <00:14:38.725>waste <00:14:38.900>as

290
00:14:40.300 --> 00:14:43.400
<00:14:40.300>much <00:14:40.455>compute <00:14:40.611>power <00:14:40.766>and <00:14:40.922>at <00:14:41.077>the <00:14:41.233>same <00:14:41.388>time <00:14:41.544>all <00:14:41.699>the

291
00:14:43.400 --> 00:14:46.700
<00:14:43.400>proprietary <00:14:43.866>platforms <00:14:44.333>started <00:14:44.800>fighting

292
00:14:46.700 --> 00:14:50.100
<00:14:46.700>and <00:14:46.875>you <00:14:47.050>had <00:14:47.225>to <00:14:47.400>use <00:14:47.575>their <00:14:47.750>favorite <00:14:47.925>language <00:14:48.100>being

293
00:14:49.100 --> 00:14:55.100
<00:14:49.100>it <00:14:49.450>Objective <00:14:49.800>C <00:14:50.150>Java <00:14:50.500>c-sharp

294
00:14:52.100 --> 00:14:55.300
or

295
00:14:55.300 --> 00:14:59.000
<00:14:55.300>whatever <00:14:55.474>and <00:14:55.650>so <00:14:55.824>a <00:14:56.000>lot <00:14:56.175>of <00:14:56.349>developers <00:14:56.525>decided <00:14:56.699>that

296
00:14:58.300 --> 00:15:01.300
<00:14:58.300>they <00:14:58.500>had <00:14:58.699>to <00:14:58.900>use <00:14:59.099>C++ <00:14:59.300>because <00:14:59.500>there <00:14:59.699>was

297
00:15:01.300 --> 00:15:04.300
<00:15:01.300>the <00:15:01.416>only <00:15:01.533>thing <00:15:01.650>that <00:15:01.766>worked <00:15:01.883>on <00:15:02.000>all <00:15:02.116>the <00:15:02.233>platforms <00:15:02.349>and <00:15:02.466>you <00:15:02.583>can <00:15:02.699>always

298
00:15:04.300 --> 00:15:07.300
<00:15:04.300>put <00:15:04.474>a <00:15:04.650>facade <00:15:04.824>on <00:15:05.000>top <00:15:05.175>of <00:15:05.349>it. <00:15:05.525>There's <00:15:05.699>lots

299
00:15:07.300 --> 00:15:09.400
<00:15:07.300>of <00:15:07.500>talk <00:15:07.699>today, <00:15:07.900>but <00:15:08.099>that's <00:15:08.300>not <00:15:08.500>this <00:15:08.699>talk.

300
00:15:11.400 --> 00:15:11.700
so

301
00:15:13.100 --> 00:15:16.500
<00:15:13.100>after <00:15:13.333>a <00:15:13.566>while, <00:15:13.800>I <00:15:14.033>got <00:15:14.266>a <00:15:14.500>lot

302
00:15:16.500 --> 00:15:20.500
<00:15:16.500>of <00:15:16.675>users <00:15:16.850>as <00:15:17.025>you <00:15:17.200>can <00:15:17.375>see <00:15:17.550>there <00:15:17.725>and <00:15:17.900>sometime

303
00:15:19.500 --> 00:15:21.400
<00:15:19.500>in <00:15:20.900>89.

304
00:15:22.200 --> 00:15:24.800
<00:15:22.200>three <00:15:22.666>people <00:15:23.133>representing <00:15:23.600>IBM

305
00:15:25.400 --> 00:15:28.400
<00:15:25.400>Son <00:15:25.680>and <00:15:25.959>HP, <00:15:26.240>which <00:15:26.520>was <00:15:26.800>at

306
00:15:28.400 --> 00:15:32.300
<00:15:28.400>the <00:15:28.600>time <00:15:28.800>the <00:15:29.000>major <00:15:29.199>computer <00:15:29.400>producers <00:15:29.600>and <00:15:29.800>system

307
00:15:31.300 --> 00:15:34.700
<00:15:31.300>delivers <00:15:32.699>in

308
00:15:34.700 --> 00:15:37.500
<00:15:34.700>the <00:15:34.875>world <00:15:35.050>came <00:15:35.225>to <00:15:35.400>my <00:15:35.575>office <00:15:35.750>at <00:15:35.925>Bell <00:15:36.100>labs

309
00:15:37.500 --> 00:15:41.000
<00:15:37.500>and <00:15:37.675>said <00:15:37.850>Hey, <00:15:38.025>Brianna, <00:15:38.200>you <00:15:38.375>want <00:15:38.550>to <00:15:38.725>standardize <00:15:38.900>C++

310
00:15:40.500 --> 00:15:42.700
<00:15:40.500>on <00:15:40.966>the <00:15:41.433>iso <00:15:41.900>rules?

311
00:15:43.400 --> 00:15:46.700
<00:15:43.400>And <00:15:43.540>of <00:15:43.680>course <00:15:43.819>I <00:15:43.959>said <00:15:44.100>no, <00:15:44.240>I'm <00:15:44.380>not <00:15:44.520>ready. <00:15:44.660>It's <00:15:44.800>still

312
00:15:46.700 --> 00:15:49.400
<00:15:46.700>developing. <00:15:46.900>We <00:15:47.100>can't <00:15:47.300>stand <00:15:47.500>that <00:15:47.700>eyes <00:15:47.900>it. <00:15:48.100>I'm

313
00:15:49.400 --> 00:15:52.400
<00:15:49.400>afraid <00:15:49.555>of <00:15:49.711>committees <00:15:49.866>and <00:15:50.022>all <00:15:50.177>of <00:15:50.333>this <00:15:50.488>stuff <00:15:50.644>and <00:15:50.800>they

314
00:15:52.400 --> 00:15:55.400
<00:15:52.400>twisted <00:15:52.574>my <00:15:52.750>arm <00:15:52.925>and <00:15:53.100>said, <00:15:53.275>of <00:15:53.449>course, <00:15:53.625>we'll <00:15:53.800>trust

315
00:15:55.400 --> 00:15:58.600
<00:15:55.400>you, <00:15:55.540>but <00:15:55.680>we <00:15:55.819>can't <00:15:55.959>trust <00:15:56.100>your <00:15:56.240>company. <00:15:56.380>They <00:15:56.520>might <00:15:56.660>go <00:15:56.800>into

316
00:15:58.600 --> 00:16:02.000
<00:15:58.600>competitive <00:15:58.833>stuff <00:15:59.066>with <00:15:59.300>us. <00:15:59.533>And <00:15:59.766>anyway, <00:16:00.000>you

317
00:16:01.200 --> 00:16:04.700
<00:16:01.200>might <00:16:01.375>get <00:16:01.550>run <00:16:01.725>over <00:16:01.900>by <00:16:02.075>a <00:16:02.250>boss. <00:16:02.425>Oh, <00:16:02.600>oh,

318
00:16:04.700 --> 00:16:07.200
<00:16:04.700>okay. <00:16:04.933>So <00:16:05.166>I <00:16:05.400>agreed <00:16:05.633>I <00:16:05.866>really <00:16:06.100>really

319
00:16:07.200 --> 00:16:11.200
<00:16:07.200>wanted <00:16:07.480>to <00:16:07.760>standardized <00:16:08.040>C++ <00:16:08.320>under <00:16:08.600>ISO

320
00:16:10.200 --> 00:16:13.200
<00:16:10.200>rules. <00:16:10.400>And <00:16:10.600>by <00:16:10.800>the <00:16:11.000>way, <00:16:11.200>what's <00:16:11.400>I <00:16:11.600>know

321
00:16:13.200 --> 00:16:17.000
<00:16:13.200>ISO <00:16:13.355>rules? <00:16:13.511>I <00:16:13.666>didn't <00:16:13.822>know <00:16:13.977>that <00:16:14.133>when <00:16:14.288>I <00:16:14.444>agreed, <00:16:14.600>but

322
00:16:16.400 --> 00:16:19.100
<00:16:16.400>basically <00:16:16.680>it <00:16:16.959>had <00:16:17.240>to <00:16:17.520>be <00:16:17.800>done.

323
00:16:19.800 --> 00:16:22.900
<00:16:19.800>And <00:16:20.150>it's <00:16:20.500>not <00:16:20.849>ideal. <00:16:21.199>My

324
00:16:22.900 --> 00:16:25.300
<00:16:22.900>ideal <00:16:23.100>for <00:16:23.300>a <00:16:23.500>language <00:16:23.699>development <00:16:23.900>is <00:16:24.100>a <00:16:24.300>small

325
00:16:25.300 --> 00:16:28.300
<00:16:25.300>Secretariat <00:16:25.500>of <00:16:25.699>very <00:16:25.900>experienced <00:16:26.099>people <00:16:26.300>that <00:16:26.500>care <00:16:26.699>about

326
00:16:28.300 --> 00:16:31.200
<00:16:28.300>the <00:16:28.455>whole <00:16:28.611>language <00:16:28.766>and <00:16:28.922>then <00:16:29.077>a <00:16:29.233>huge <00:16:29.388>Community <00:16:29.544>coming <00:16:29.699>up

327
00:16:31.200 --> 00:16:34.400
<00:16:31.200>with <00:16:31.480>ideas. <00:16:31.760>Well, <00:16:32.040>it's <00:16:32.320>not <00:16:32.600>what

328
00:16:34.400 --> 00:16:37.100
<00:16:34.400>you <00:16:34.600>what <00:16:34.800>we <00:16:35.000>have <00:16:35.199>because <00:16:35.400>I <00:16:35.600>never <00:16:35.800>had

329
00:16:37.100 --> 00:16:42.100
<00:16:37.100>any <00:16:37.275>money <00:16:37.450>to <00:16:37.625>do <00:16:37.800>this <00:16:37.975>kind <00:16:38.150>of <00:16:38.325>organized <00:16:38.500>development.

330
00:16:41.100 --> 00:16:44.100
<00:16:41.100>What <00:16:41.450>we <00:16:41.800>have <00:16:42.150>instead <00:16:42.500>is

331
00:16:44.100 --> 00:16:47.600
<00:16:44.100>a <00:16:44.333>very <00:16:44.566>unsushiastic <00:16:44.800>large <00:16:45.033>committee. <00:16:45.266>This <00:16:45.500>is

332
00:16:47.600 --> 00:16:52.300
<00:16:47.600>when <00:16:47.800>we <00:16:48.000>voted <00:16:48.200>out <00:16:48.400>C++ <00:16:48.600>20 <00:16:48.800>in <00:16:49.000>2020

333
00:16:51.300 --> 00:16:54.700
<00:16:51.300>about <00:16:51.579>a <00:16:51.859>month <00:16:52.140>before <00:16:52.420>covid <00:16:52.699>hit

334
00:16:54.700 --> 00:16:57.200
<00:16:54.700>and <00:16:55.050>those <00:16:55.400>250 <00:16:55.750>or <00:16:56.100>so

335
00:16:57.200 --> 00:17:00.400
<00:16:57.200>of <00:16:57.433>us <00:16:57.666>in <00:16:57.900>Prague <00:16:58.133>and <00:16:58.366>we <00:16:58.600>all

336
00:17:00.400 --> 00:17:04.300
<00:17:00.400>agree <00:17:00.527>that <00:17:00.654>this <00:17:00.781>was <00:17:00.909>the <00:17:01.036>best <00:17:01.163>language <00:17:01.290>we're <00:17:01.418>going <00:17:01.545>to <00:17:01.672>get <00:17:01.800>and

337
00:17:03.300 --> 00:17:06.700
<00:17:03.300>everybody <00:17:03.579>then <00:17:03.859>started <00:17:04.139>working <00:17:04.419>on <00:17:04.700>further

338
00:17:06.700 --> 00:17:07.300
improvements.

339
00:17:08.000 --> 00:17:08.500
but

340
00:17:09.800 --> 00:17:13.000
<00:17:09.800>So <00:17:10.000>to <00:17:10.200>get <00:17:10.399>something <00:17:10.599>interest <00:17:10.800>C++ <00:17:11.000>you <00:17:11.200>have

341
00:17:12.100 --> 00:17:15.700
<00:17:12.099>to <00:17:12.300>have <00:17:12.500>a <00:17:12.699>crowd <00:17:12.899>like <00:17:13.099>that <00:17:13.300>agree <00:17:13.500>that

342
00:17:15.700 --> 00:17:19.100
<00:17:15.700>it's <00:17:15.855>the <00:17:16.011>best <00:17:16.166>thing <00:17:16.322>and <00:17:16.477>we <00:17:16.633>work <00:17:16.788>on <00:17:16.944>consensus <00:17:17.100>none

343
00:17:18.100 --> 00:17:22.400
<00:17:18.099>of <00:17:18.379>this <00:17:18.659>52 <00:17:18.939>verses <00:17:19.219>48% <00:17:19.500>and

344
00:17:22.400 --> 00:17:26.500
<00:17:22.400>then <00:17:22.600>we <00:17:22.800>go <00:17:23.000>ahead <00:17:23.200>we <00:17:23.400>prefer <00:17:23.600>1995 <00:17:23.800>percent

345
00:17:26.500 --> 00:17:29.000
<00:17:26.500>or <00:17:26.733>better <00:17:26.966>and <00:17:27.200>that <00:17:27.433>takes <00:17:27.666>a <00:17:27.900>lot

346
00:17:29.100 --> 00:17:32.100
<00:17:29.100>of <00:17:29.240>talking. <00:17:29.379>It <00:17:29.520>means <00:17:29.659>that <00:17:29.800>there <00:17:29.939>is <00:17:30.080>it <00:17:30.219>takes <00:17:30.360>a <00:17:30.500>lot

347
00:17:32.100 --> 00:17:35.200
<00:17:32.100>of <00:17:32.274>time <00:17:32.449>which <00:17:32.625>is <00:17:32.800>a <00:17:32.975>real <00:17:33.149>nuisance <00:17:33.324>on <00:17:33.500>the

348
00:17:35.200 --> 00:17:40.000
<00:17:35.200>other <00:17:35.375>hand. <00:17:35.550>I <00:17:35.725>hope <00:17:35.900>we <00:17:36.075>make <00:17:36.250>fewer <00:17:36.425>mistakes. <00:17:36.600>Basically

349
00:17:38.500 --> 00:17:41.300
<00:17:38.500>the <00:17:39.200>committee <00:17:39.900>is

350
00:17:41.300 --> 00:17:42.600
<00:17:41.300>organized <00:17:42.469>in.

351
00:17:43.400 --> 00:17:46.900
<00:17:43.400>Well, <00:17:43.540>I'm <00:17:43.680>sorry <00:17:43.820>to <00:17:43.960>say <00:17:44.100>that <00:17:44.240>we <00:17:44.380>have <00:17:44.520>to <00:17:44.660>organize <00:17:44.800>since

352
00:17:46.900 --> 00:17:49.500
<00:17:46.900>there's <00:17:47.133>so <00:17:47.366>many <00:17:47.600>people <00:17:47.833>you <00:17:48.066>can <00:17:48.300>look

353
00:17:49.500 --> 00:17:53.200
<00:17:49.500>it <00:17:49.780>up <00:17:50.060>at <00:17:50.340>the <00:17:50.620>C++ <00:17:50.900>foundation's

354
00:17:52.200 --> 00:17:56.800
<00:17:52.200>website <00:17:52.666>isot <00:17:53.133>cpp.org <00:17:53.600>but

355
00:17:56.800 --> 00:17:59.600
<00:17:56.800>we <00:17:57.149>have <00:17:57.500>four <00:17:57.850>working <00:17:58.200>groups

356
00:17:59.600 --> 00:18:03.100
<00:17:59.600>19 <00:17:59.879>study <00:18:00.159>groups <00:18:00.439>studying <00:18:00.719>specific <00:18:01.000>areas

357
00:18:02.100 --> 00:18:05.600
<00:18:02.100>and <00:18:02.566>problems <00:18:03.033>four <00:18:03.500>groups

358
00:18:05.600 --> 00:18:09.500
<00:18:05.600>looking <00:18:05.833>at <00:18:06.066>cross-cutting <00:18:06.300>things <00:18:06.533>like <00:18:06.766>security <00:18:07.000>and

359
00:18:08.500 --> 00:18:11.500
<00:18:08.500>then <00:18:08.780>a <00:18:09.060>Direction <00:18:09.340>group <00:18:09.620>that <00:18:09.900>tries

360
00:18:11.500 --> 00:18:14.400
<00:18:11.500>to <00:18:11.616>make <00:18:11.733>sense <00:18:11.850>of <00:18:11.966>all <00:18:12.083>of <00:18:12.200>this <00:18:12.316>and <00:18:12.433>write <00:18:12.550>a <00:18:12.666>document <00:18:12.783>the <00:18:12.900>saying

361
00:18:14.400 --> 00:18:16.700
<00:18:14.400>we <00:18:14.600>really <00:18:14.800>ought <00:18:15.000>to <00:18:15.200>do <00:18:15.400>something <00:18:15.600>like <00:18:15.800>this.

362
00:18:18.500 --> 00:18:19.800
<00:18:18.500>Let's <00:18:19.670>see.

363
00:18:20.300 --> 00:18:23.300
<00:18:20.300>90 <00:18:20.475>plus <00:18:20.649>percent <00:18:20.825>of <00:18:21.000>the <00:18:21.175>people <00:18:21.350>are <00:18:21.524>from <00:18:21.700>industry.

364
00:18:23.300 --> 00:18:27.500
<00:18:23.300>It's <00:18:23.533>is <00:18:23.766>and <00:18:24.000>always <00:18:24.233>was <00:18:24.466>industrial <00:18:24.700>language

365
00:18:27.500 --> 00:18:31.400
<00:18:27.500>the <00:18:27.780>academics <00:18:28.060>tend <00:18:28.340>to <00:18:28.620>like <00:18:28.900>simple

366
00:18:30.400 --> 00:18:33.900
<00:18:30.400>or <00:18:30.680>more <00:18:30.960>pure <00:18:31.240>languages, <00:18:31.520>even <00:18:31.800>if

367
00:18:33.900 --> 00:18:36.900
<00:18:33.900>they <00:18:34.133>don't <00:18:34.366>solve <00:18:34.600>the <00:18:34.833>industrial <00:18:35.066>scale <00:18:35.300>problems.

368
00:18:37.600 --> 00:18:41.300
<00:18:37.600>Currently <00:18:37.949>we <00:18:38.300>have <00:18:38.649>17 <00:18:39.000>Nations

369
00:18:40.300 --> 00:18:44.500
<00:18:40.300>represented <00:18:41.000>at <00:18:41.700>meetings.

370
00:18:43.500 --> 00:18:46.500
<00:18:43.500>And <00:18:43.850>for <00:18:44.200>the <00:18:44.550>vote <00:18:44.900>of

371
00:18:46.500 --> 00:18:50.000
<00:18:46.500>a <00:18:46.640>new <00:18:46.780>standard. <00:18:46.920>We <00:18:47.060>need <00:18:47.200>a <00:18:47.340>vote <00:18:47.480>of <00:18:47.620>the <00:18:47.760>Nations <00:18:47.900>and

372
00:18:49.300 --> 00:18:52.300
<00:18:49.300>it <00:18:49.500>has <00:18:49.700>never <00:18:49.899>been <00:18:50.100>less <00:18:50.300>than <00:18:50.500>21 <00:18:50.700>to

373
00:18:52.300 --> 00:18:55.200
<00:18:52.300>zero. <00:18:52.500>So <00:18:52.700>we <00:18:52.899>work <00:18:53.100>hard <00:18:53.300>to <00:18:53.500>make <00:18:53.700>sure

374
00:18:55.200 --> 00:18:58.300
<00:18:55.200>that <00:18:55.375>this <00:18:55.550>happens. <00:18:55.725>This <00:18:55.900>is <00:18:56.075>also <00:18:56.250>why <00:18:56.425>the <00:18:56.600>language

375
00:18:58.300 --> 00:19:01.400
<00:18:58.300>hasn't <00:18:58.533>fractured <00:18:58.766>more <00:18:59.000>than <00:18:59.233>it <00:18:59.466>it <00:18:59.700>has.

376
00:19:03.900 --> 00:19:06.600
<00:19:03.900>So <00:19:04.055>and <00:19:04.211>you <00:19:04.366>can <00:19:04.522>find <00:19:04.677>all <00:19:04.833>the <00:19:04.988>papers <00:19:05.144>more <00:19:05.300>you

377
00:19:06.600 --> 00:19:09.700
<00:19:06.600>and <00:19:06.755>then <00:19:06.911>you <00:19:07.066>ever <00:19:07.222>wanted <00:19:07.377>to <00:19:07.533>know <00:19:07.688>about <00:19:07.844>c++, <00:19:08.000>by

378
00:19:09.700 --> 00:19:13.300
<00:19:09.700>typing <00:19:10.050>wg21 <00:19:10.400>into <00:19:10.750>your <00:19:11.100>browser.

379
00:19:12.300 --> 00:19:15.800
<00:19:12.300>That's <00:19:12.580>the <00:19:12.860>official <00:19:13.139>name. <00:19:13.419>Actually. <00:19:13.700>It's

380
00:19:15.800 --> 00:19:19.300
<00:19:15.800>oh <00:19:15.975>it's <00:19:16.149>it's <00:19:16.325>a <00:19:16.500>long <00:19:16.675>name <00:19:16.850>is <00:19:17.024>c22 <00:19:17.200>/

381
00:19:18.300 --> 00:19:21.400
<00:19:18.300>wg21 <00:19:19.000>and <00:19:19.700>such

382
00:19:21.400 --> 00:19:23.400
<00:19:21.400>that's <00:19:21.680>part <00:19:21.960>of <00:19:22.240>the <00:19:22.520>iso <00:19:22.800>rules.

383
00:19:24.200 --> 00:19:27.200
<00:19:24.200>So <00:19:24.400>let's <00:19:24.600>look <00:19:24.800>at <00:19:25.000>technical <00:19:25.200>things. <00:19:25.400>One <00:19:25.600>of

384
00:19:27.200 --> 00:19:30.800
<00:19:27.200>the <00:19:27.375>challenges <00:19:27.550>that <00:19:27.725>I <00:19:27.900>faced <00:19:28.075>immediately <00:19:28.250>was <00:19:28.425>Resource <00:19:28.600>Management.

385
00:19:30.800 --> 00:19:33.800
<00:19:30.800>Basically <00:19:31.149>a <00:19:31.500>resource <00:19:31.850>is <00:19:32.200>something

386
00:19:33.800 --> 00:19:36.400
<00:19:33.800>that <00:19:33.975>you <00:19:34.149>must <00:19:34.325>acquire <00:19:34.500>and <00:19:34.675>then <00:19:34.850>have <00:19:35.024>to <00:19:35.200>remember

387
00:19:36.400 --> 00:19:37.000
<00:19:36.400>to <00:19:36.670>give <00:19:36.940>back.

388
00:19:37.900 --> 00:19:40.700
<00:19:37.900>A <00:19:38.100>choir <00:19:38.300>is <00:19:38.500>easy. <00:19:38.700>Ask <00:19:38.900>any <00:19:39.100>librarian <00:19:39.300>people

389
00:19:40.700 --> 00:19:41.700
<00:19:40.700>will <00:19:40.925>take <00:19:41.150>out <00:19:41.375>the <00:19:41.600>books.

390
00:19:42.600 --> 00:19:45.500
<00:19:42.600>Remembering <00:19:42.800>to <00:19:43.000>hand <00:19:43.199>things <00:19:43.399>back <00:19:43.600>is <00:19:43.800>hard <00:19:44.000>again.

391
00:19:45.500 --> 00:19:48.500
<00:19:45.500>Ask <00:19:45.733>a <00:19:45.966>librarian. <00:19:46.200>It's <00:19:46.433>it's <00:19:46.666>not <00:19:46.900>a

392
00:19:48.500 --> 00:19:51.900
<00:19:48.500>computer <00:19:48.675>problem. <00:19:48.850>It's <00:19:49.025>sort <00:19:49.200>of <00:19:49.375>a <00:19:49.550>fundamental <00:19:49.725>problem <00:19:49.900>of

393
00:19:51.900 --> 00:19:54.000
<00:19:51.900>complexity <00:19:52.133>and <00:19:52.366>humans <00:19:52.600>and <00:19:52.833>things <00:19:53.066>like <00:19:53.300>that.

394
00:19:54.900 --> 00:19:57.500
<00:19:54.900>And <00:19:55.366>so <00:19:55.833>resource <00:19:56.300>release

395
00:19:57.500 --> 00:20:00.400
<00:19:57.500>has <00:19:57.700>to <00:19:57.900>be <00:19:58.100>implicit <00:19:58.300>because <00:19:58.500>we <00:19:58.700>allows <00:19:58.900>the

396
00:20:00.400 --> 00:20:00.600
added.

397
00:20:01.400 --> 00:20:04.200
<00:20:01.400>And <00:20:01.575>it <00:20:01.750>has <00:20:01.925>to <00:20:02.100>be <00:20:02.275>guaranteed <00:20:02.450>if <00:20:02.625>I <00:20:02.800>take

398
00:20:04.200 --> 00:20:07.200
<00:20:04.200>a <00:20:04.375>book <00:20:04.550>out <00:20:04.725>want <00:20:04.900>to <00:20:05.075>make <00:20:05.250>sure <00:20:05.425>it <00:20:05.600>goes

399
00:20:07.200 --> 00:20:10.200
<00:20:07.200>back. <00:20:07.400>One <00:20:07.600>of <00:20:07.800>the <00:20:08.000>things <00:20:08.200>that <00:20:08.400>I'm <00:20:08.600>interested

400
00:20:10.200 --> 00:20:14.000
<00:20:10.200>in <00:20:10.355>is <00:20:10.511>systems <00:20:10.666>that <00:20:10.822>has <00:20:10.977>to <00:20:11.133>run <00:20:11.288>forever <00:20:11.444>and <00:20:11.600>you

401
00:20:13.400 --> 00:20:18.600
<00:20:13.400>must <00:20:13.680>guarantee <00:20:13.960>come <00:20:14.240>back <00:20:14.520>furthermore. <00:20:14.800>It

402
00:20:18.600 --> 00:20:20.400
<00:20:18.600>has <00:20:18.879>to <00:20:19.159>be <00:20:19.439>predictable <00:20:19.719>and <00:20:20.000>prompt.

403
00:20:21.400 --> 00:20:24.600
<00:20:21.400>I <00:20:21.575>mean, <00:20:21.750>it's <00:20:21.925>not <00:20:22.100>good <00:20:22.275>enough <00:20:22.450>that <00:20:22.625>something <00:20:22.800>comes

404
00:20:24.600 --> 00:20:25.400
<00:20:24.600>back <00:20:25.320>tomorrow.

405
00:20:26.300 --> 00:20:28.400
<00:20:26.300>if <00:20:26.533>I <00:20:26.766>just <00:20:27.000>took <00:20:27.233>it, <00:20:27.466>I <00:20:27.700>mean

406
00:20:29.100 --> 00:20:32.000
<00:20:29.100>if <00:20:29.379>we <00:20:29.659>don't <00:20:29.939>have <00:20:30.219>a <00:20:30.500>reasonable.

407
00:20:33.600 --> 00:20:36.200
<00:20:33.600>Lifetime <00:20:33.833>for <00:20:34.066>the <00:20:34.300>objects <00:20:34.533>that <00:20:34.766>we <00:20:35.000>are

408
00:20:36.200 --> 00:20:38.700
<00:20:36.200>using <00:20:36.480>that <00:20:36.760>we <00:20:37.040>need <00:20:37.320>bigger <00:20:37.600>machines.

409
00:20:39.500 --> 00:20:42.800
<00:20:39.500>If <00:20:39.675>I <00:20:39.850>have <00:20:40.025>if <00:20:40.200>I <00:20:40.375>use <00:20:40.550>if <00:20:40.725>memory <00:20:40.900>is

410
00:20:42.800 --> 00:20:45.400
<00:20:42.800>Hell <00:20:42.975>twice <00:20:43.149>for <00:20:43.325>twice <00:20:43.500>as <00:20:43.675>long <00:20:43.850>I <00:20:44.024>need <00:20:44.200>twice

411
00:20:45.400 --> 00:20:48.700
<00:20:45.400>as <00:20:45.600>much <00:20:45.800>memory <00:20:46.000>same <00:20:46.200>will <00:20:46.400>file <00:20:46.600>handles <00:20:46.800>same

412
00:20:48.700 --> 00:20:51.300
<00:20:48.700>with <00:20:48.840>locks <00:20:48.980>and <00:20:49.120>things <00:20:49.260>like <00:20:49.400>that. <00:20:49.540>So <00:20:49.680>it <00:20:49.820>has <00:20:49.960>to <00:20:50.100>be

413
00:20:51.300 --> 00:20:54.500
<00:20:51.300>predictable <00:20:52.000>and <00:20:52.700>prompt

414
00:20:54.500 --> 00:20:57.300
<00:20:54.500>and <00:20:54.733>furthermore <00:20:54.966>at <00:20:55.200>the <00:20:55.433>time <00:20:55.666>and <00:20:55.900>still

415
00:20:57.300 --> 00:21:01.900
<00:20:57.300>in <00:20:57.500>many <00:20:57.700>systems. <00:20:57.899>I <00:20:58.100>couldn't <00:20:58.300>afford <00:20:58.500>a <00:20:58.700>complex.

416
00:21:02.800 --> 00:21:06.000
<00:21:02.800>It's <00:21:03.033>a <00:21:03.266>runtime <00:21:03.500>support <00:21:03.733>system. <00:21:03.966>So <00:21:04.200>up

417
00:21:05.200 --> 00:21:08.700
<00:21:05.200>came <00:21:05.433>the <00:21:05.666>simple <00:21:05.900>idea <00:21:06.133>of <00:21:06.366>a <00:21:06.600>user-defined

418
00:21:08.700 --> 00:21:11.800
<00:21:08.700>class <00:21:08.980>basically <00:21:09.260>borrowed <00:21:09.540>from <00:21:09.820>simula, <00:21:10.100>but

419
00:21:11.800 --> 00:21:14.700
<00:21:11.800>it <00:21:12.000>worked <00:21:12.200>with <00:21:12.399>two <00:21:12.600>things <00:21:12.800>that <00:21:13.000>I <00:21:13.200>introduced

420
00:21:14.700 --> 00:21:17.300
<00:21:14.700>Constructors. <00:21:15.050>This <00:21:15.400>is <00:21:15.750>this <00:21:16.100>is

421
00:21:17.300 --> 00:21:18.700
<00:21:17.300>the <00:21:17.510>way <00:21:17.720>you <00:21:17.930>build <00:21:18.140>such <00:21:18.350>an <00:21:18.560>object.

422
00:21:19.400 --> 00:21:22.600
<00:21:19.400>And <00:21:19.555>destructors <00:21:19.711>it <00:21:19.866>says <00:21:20.022>this <00:21:20.177>is <00:21:20.333>how <00:21:20.488>you <00:21:20.644>clean <00:21:20.800>the

423
00:21:22.600 --> 00:21:25.400
<00:21:22.600>miss <00:21:22.879>when <00:21:23.159>it's <00:21:23.439>when <00:21:23.719>it's <00:21:24.000>lifetime

424
00:21:25.400 --> 00:21:28.400
<00:21:25.400>it's <00:21:25.575>over <00:21:25.750>and <00:21:25.925>basically <00:21:26.100>you <00:21:26.275>can <00:21:26.450>see <00:21:26.625>there. <00:21:26.800>I'm

425
00:21:28.400 --> 00:21:31.400
<00:21:28.400>lifting <00:21:28.600>from <00:21:28.800>one <00:21:29.000>level <00:21:29.200>of <00:21:29.400>abstraction <00:21:29.600>pointers <00:21:29.800>and

426
00:21:31.400 --> 00:21:34.900
<00:21:31.400>integers, <00:21:31.575>which <00:21:31.750>is <00:21:31.925>basically <00:21:32.100>the <00:21:32.275>machines <00:21:32.450>level <00:21:32.625>to <00:21:32.800>a

427
00:21:34.900 --> 00:21:38.200
<00:21:34.900>level <00:21:35.366>with <00:21:35.833>constructures <00:21:36.300>destructors

428
00:21:37.200 --> 00:21:40.500
<00:21:37.200>assignment <00:21:37.900>controlled <00:21:38.600>access

429
00:21:40.500 --> 00:21:43.100
<00:21:40.500>all <00:21:40.640>kinds <00:21:40.780>of <00:21:40.920>stuff <00:21:41.060>like <00:21:41.200>that. <00:21:41.340>So <00:21:41.480>when <00:21:41.620>I <00:21:41.760>have <00:21:41.900>a

430
00:21:43.100 --> 00:21:46.400
<00:21:43.100>function, <00:21:43.255>I <00:21:43.411>want <00:21:43.566>a <00:21:43.722>vector <00:21:43.877>of <00:21:44.033>an <00:21:44.188>integers <00:21:44.344>I <00:21:44.500>can

431
00:21:46.400 --> 00:21:50.000
<00:21:46.400>use <00:21:46.555>it <00:21:46.711>and <00:21:46.866>at <00:21:47.022>the <00:21:47.177>bottom <00:21:47.333>there <00:21:47.488>the <00:21:47.644>destructive <00:21:47.800>fires

432
00:21:49.300 --> 00:21:51.500
<00:21:49.300>and <00:21:49.766>everything <00:21:50.233>cleaned <00:21:50.700>up.

433
00:21:52.100 --> 00:21:55.500
<00:21:52.100>That <00:21:52.274>was <00:21:52.449>an <00:21:52.625>idea <00:21:52.800>from <00:21:52.975>the <00:21:53.149>first <00:21:53.324>or <00:21:53.500>the

434
00:21:55.500 --> 00:21:59.400
<00:21:55.500>second <00:21:55.655>week <00:21:55.811>of <00:21:55.966>the <00:21:56.122>development <00:21:56.277>of <00:21:56.433>civil <00:21:56.588>classes. <00:21:56.744>It's <00:21:56.900>basically

435
00:21:58.400 --> 00:22:01.600
<00:21:58.400>been <00:21:58.680>the <00:21:58.960>basis <00:21:59.240>of <00:21:59.520>good <00:21:59.800>C++

436
00:22:01.600 --> 00:22:05.200
<00:22:01.600>ever <00:22:01.949>since <00:22:02.300>so <00:22:02.649>basically <00:22:03.000>that's

437
00:22:04.200 --> 00:22:07.600
<00:22:04.200>it <00:22:04.433>is <00:22:04.666>I <00:22:04.900>don't <00:22:05.133>like <00:22:05.366>littering. <00:22:05.600>I

438
00:22:07.600 --> 00:22:10.900
<00:22:07.600>don't <00:22:07.774>like <00:22:07.949>little <00:22:08.125>we <00:22:08.300>have <00:22:08.475>to <00:22:08.649>make <00:22:08.824>sure <00:22:09.000>that

439
00:22:10.900 --> 00:22:13.500
<00:22:10.900>we <00:22:11.133>can <00:22:11.366>manage <00:22:11.600>our <00:22:11.833>resources <00:22:12.066>and <00:22:12.300>in

440
00:22:13.500 --> 00:22:16.300
<00:22:13.500>particular <00:22:13.655>we <00:22:13.811>have <00:22:13.966>to <00:22:14.122>make <00:22:14.277>sure <00:22:14.433>that <00:22:14.588>it's <00:22:14.744>guaranteed <00:22:14.900>that

441
00:22:16.300 --> 00:22:20.400
<00:22:16.300>it <00:22:16.455>goes <00:22:16.611>away <00:22:16.766>when <00:22:16.922>we're <00:22:17.077>finished <00:22:17.233>using <00:22:17.388>it <00:22:17.544>that <00:22:17.700>scope-based

442
00:22:19.400 --> 00:22:22.600
<00:22:19.400>and <00:22:19.680>it's <00:22:19.960>pervasive <00:22:20.240>in <00:22:20.520>the <00:22:20.800>standard

443
00:22:22.600 --> 00:22:24.700
<00:22:22.600>Library. <00:22:22.949>All <00:22:23.300>the <00:22:23.649>containers <00:22:24.000>are

444
00:22:25.500 --> 00:22:28.600
<00:22:25.500>Working <00:22:25.780>with <00:22:26.060>this <00:22:26.340>thing. <00:22:26.620>Oh, <00:22:26.900>yeah

445
00:22:28.600 --> 00:22:31.200
<00:22:28.600>raii <00:22:29.066>resource <00:22:29.533>acquisition <00:22:30.000>is

446
00:22:31.200 --> 00:22:34.500
<00:22:31.200>initialization. <00:22:31.433>It's <00:22:31.666>a <00:22:31.900>really <00:22:32.133>awful <00:22:32.366>name. <00:22:32.600>It

447
00:22:34.500 --> 00:22:37.600
<00:22:34.500>was <00:22:34.616>the <00:22:34.733>best <00:22:34.850>I <00:22:34.966>could <00:22:35.083>come <00:22:35.200>up <00:22:35.316>with. <00:22:35.433>I <00:22:35.550>was <00:22:35.666>very <00:22:35.783>busy <00:22:35.900>at

448
00:22:37.600 --> 00:22:37.800
<00:22:37.600>the <00:22:37.780>time.

449
00:22:38.500 --> 00:22:42.000
<00:22:38.500>And <00:22:38.966>also <00:22:39.433>non-resources <00:22:39.900>non-memory

450
00:22:41.500 --> 00:22:44.200
<00:22:41.500>resources <00:22:42.200>follow <00:22:42.900>this

451
00:22:44.200 --> 00:22:48.400
<00:22:44.200>pattern <00:22:44.666>threads <00:22:45.133>locks <00:22:45.600>file

452
00:22:47.400 --> 00:22:50.200
<00:22:47.400>streams <00:22:47.750>and <00:22:48.100>such <00:22:48.450>and <00:22:48.800>that

453
00:22:50.200 --> 00:22:53.200
<00:22:50.200>means <00:22:50.340>for <00:22:50.480>instance <00:22:50.620>a <00:22:50.760>plugging <00:22:50.900>in <00:22:51.040>a <00:22:51.180>garbage <00:22:51.320>collector <00:22:51.460>will <00:22:51.600>solve

454
00:22:53.200 --> 00:22:56.100
<00:22:53.200>about <00:22:53.400>half <00:22:53.600>the <00:22:53.800>problem <00:22:54.000>and <00:22:54.200>that <00:22:54.400>a <00:22:54.600>large

455
00:22:56.100 --> 00:23:00.800
<00:22:56.100>cost. <00:22:56.300>So <00:22:56.500>it's <00:22:56.699>it's <00:22:56.899>neither <00:22:57.100>idea <00:22:57.300>nor <00:22:57.500>sufficient

456
00:22:59.800 --> 00:23:02.400
<00:22:59.800>as <00:23:00.149>far <00:23:00.500>as <00:23:00.850>I'm <00:23:01.200>concerned.

457
00:23:03.400 --> 00:23:03.800
and

458
00:23:05.300 --> 00:23:08.200
<00:23:05.300>then <00:23:05.580>you <00:23:05.860>can <00:23:06.139>have <00:23:06.419>just <00:23:06.700>about

459
00:23:08.200 --> 00:23:12.300
<00:23:08.200>anything <00:23:08.480>as <00:23:08.760>a <00:23:09.040>resource <00:23:09.320>and <00:23:09.600>here's

460
00:23:11.300 --> 00:23:12.600
<00:23:11.300>an <00:23:12.469>example.

461
00:23:14.600 --> 00:23:17.600
<00:23:14.600>I <00:23:14.833>would <00:23:15.066>like <00:23:15.300>to <00:23:15.533>have <00:23:15.766>an <00:23:16.000>action

462
00:23:17.600 --> 00:23:20.600
<00:23:17.600>happening <00:23:17.774>at <00:23:17.949>the <00:23:18.125>end <00:23:18.300>of <00:23:18.475>a <00:23:18.649>scope <00:23:18.824>a <00:23:19.000>final

463
00:23:20.600 --> 00:23:20.900
action.

464
00:23:21.800 --> 00:23:25.400
<00:23:21.800>And <00:23:21.975>so <00:23:22.149>I <00:23:22.325>just <00:23:22.500>define <00:23:22.675>a <00:23:22.850>class <00:23:23.024>that <00:23:23.200>you

465
00:23:24.400 --> 00:23:28.200
<00:23:24.400>give <00:23:24.633>an <00:23:24.866>action <00:23:25.100>to <00:23:25.333>be <00:23:25.566>executed <00:23:25.800>it

466
00:23:27.200 --> 00:23:30.800
<00:23:27.200>then <00:23:27.480>make <00:23:27.760>sure <00:23:28.040>that <00:23:28.320>it's <00:23:28.600>Destructor.

467
00:23:31.700 --> 00:23:34.400
<00:23:31.700>Will <00:23:31.933>execute <00:23:32.166>it <00:23:32.400>then <00:23:32.633>I <00:23:32.866>provide <00:23:33.100>a

468
00:23:34.400 --> 00:23:36.100
<00:23:34.400>little <00:23:34.680>help <00:23:34.960>of <00:23:35.240>function <00:23:35.520>called <00:23:35.800>finally.

469
00:23:36.900 --> 00:23:39.300
<00:23:36.900>You <00:23:37.250>give <00:23:37.600>finally <00:23:37.950>an <00:23:38.300>action

470
00:23:39.300 --> 00:23:43.100
<00:23:39.300>you <00:23:39.475>want <00:23:39.649>to <00:23:39.825>do <00:23:40.000>and <00:23:40.175>then <00:23:40.350>you <00:23:40.524>return <00:23:40.700>the

471
00:23:42.100 --> 00:23:45.500
<00:23:42.100>action <00:23:42.379>we <00:23:42.659>use <00:23:42.939>no <00:23:43.219>discard <00:23:43.500>to

472
00:23:45.500 --> 00:23:48.400
<00:23:45.500>make <00:23:45.627>sure <00:23:45.754>that <00:23:45.881>you <00:23:46.009>don't <00:23:46.136>forget <00:23:46.263>get <00:23:46.390>to <00:23:46.518>assign <00:23:46.645>that <00:23:46.772>to <00:23:46.900>somewhere

473
00:23:48.400 --> 00:23:51.500
<00:23:48.400>it <00:23:48.527>because <00:23:48.654>it <00:23:48.781>has <00:23:48.909>to <00:23:49.036>live <00:23:49.163>in <00:23:49.290>a <00:23:49.418>scope <00:23:49.545>and <00:23:49.672>so <00:23:49.800>down

474
00:23:51.500 --> 00:23:52.300
<00:23:51.500>there <00:23:51.860>he <00:23:52.220>says.

475
00:23:53.300 --> 00:23:56.300
<00:23:53.300>Finally, <00:23:53.475>I <00:23:53.649>would <00:23:53.825>like <00:23:54.000>to <00:23:54.175>Say <00:23:54.350>Goodbye <00:23:54.524>cruel <00:23:54.700>world.

476
00:23:56.300 --> 00:23:59.200
<00:23:56.300>So <00:23:56.500>I <00:23:56.700>say <00:23:56.899>hello <00:23:57.100>world <00:23:57.300>and <00:23:57.500>at <00:23:57.700>the

477
00:23:59.200 --> 00:24:02.900
<00:23:59.200>endoscope <00:23:59.400>finally <00:23:59.600>fires, <00:23:59.800>and <00:24:00.000>we <00:24:00.200>get <00:24:00.400>the <00:24:00.600>goodbye.

478
00:24:03.700 --> 00:24:06.900
<00:24:03.700>And <00:24:03.875>this <00:24:04.050>is <00:24:04.225>by <00:24:04.400>the <00:24:04.575>way <00:24:04.750>why <00:24:04.925>C++ <00:24:05.100>doesn't

479
00:24:06.900 --> 00:24:07.700
<00:24:06.900>have <00:24:07.260>a <00:24:07.620>finally.

480
00:24:08.300 --> 00:24:12.300
<00:24:08.300>Because <00:24:08.440>you <00:24:08.580>can <00:24:08.720>write <00:24:08.860>it <00:24:09.000>yourself <00:24:09.139>on <00:24:09.280>one <00:24:09.419>slide. <00:24:09.560>There <00:24:09.700>will

481
00:24:12.300 --> 00:24:15.500
<00:24:12.300>be <00:24:12.440>something <00:24:12.580>in <00:24:12.720>the <00:24:12.860>next <00:24:13.000>standard. <00:24:13.139>I <00:24:13.280>believe <00:24:13.419>that <00:24:13.560>will <00:24:13.700>do

482
00:24:15.500 --> 00:24:18.300
<00:24:15.500>this. <00:24:15.780>I've <00:24:16.060>been <00:24:16.340>very <00:24:16.620>surprised <00:24:16.900>that

483
00:24:18.300 --> 00:24:21.200
<00:24:18.300>it <00:24:18.580>hasn't <00:24:18.860>been <00:24:19.139>standardized. <00:24:19.419>I <00:24:19.700>mean,

484
00:24:21.200 --> 00:24:23.900
<00:24:21.200>I <00:24:21.400>I <00:24:21.600>built <00:24:21.800>this <00:24:22.000>130 <00:24:22.200>years <00:24:22.400>ago, <00:24:22.600>right?

485
00:24:24.800 --> 00:24:27.500
<00:24:24.800>Okay, <00:24:25.500>efficiency <00:24:26.200>challenges.

486
00:24:27.500 --> 00:24:31.100
<00:24:27.500>There's <00:24:27.780>a <00:24:28.060>resources <00:24:28.340>there's <00:24:28.620>deficiency. <00:24:28.900>There's

487
00:24:30.100 --> 00:24:33.500
<00:24:30.100>type <00:24:30.333>system. <00:24:30.566>These <00:24:30.800>are <00:24:31.033>challenges <00:24:31.266>that <00:24:31.500>come

488
00:24:33.500 --> 00:24:33.600
in.

489
00:24:34.300 --> 00:24:37.800
<00:24:34.300>From <00:24:34.440>a <00:24:34.580>language <00:24:34.720>technical <00:24:34.860>point <00:24:35.000>of <00:24:35.139>view <00:24:35.280>from <00:24:35.419>the <00:24:35.560>users <00:24:35.700>that

490
00:24:37.800 --> 00:24:41.100
<00:24:37.800>has <00:24:38.000>to <00:24:38.200>be <00:24:38.399>handled. <00:24:38.600>So <00:24:38.800>efficiency <00:24:39.000>I <00:24:39.200>decided

491
00:24:40.100 --> 00:24:44.000
<00:24:40.100>if <00:24:40.255>I <00:24:40.411>was <00:24:40.566>as <00:24:40.722>good <00:24:40.877>as <00:24:41.033>C <00:24:41.188>at <00:24:41.344>everything <00:24:41.500>I

492
00:24:43.200 --> 00:24:46.500
<00:24:43.200>was <00:24:43.340>good <00:24:43.480>enough <00:24:43.620>because <00:24:43.760>C <00:24:43.900>was <00:24:44.040>close <00:24:44.180>to <00:24:44.320>the <00:24:44.460>best <00:24:44.600>at

493
00:24:46.500 --> 00:24:50.200
<00:24:46.500>the <00:24:46.607>time. <00:24:46.715>If <00:24:46.823>you <00:24:46.930>wanted <00:24:47.038>to <00:24:47.146>beat <00:24:47.253>C <00:24:47.361>you <00:24:47.469>have <00:24:47.576>to <00:24:47.684>use <00:24:47.792>assembler <00:24:47.900>and

494
00:24:49.200 --> 00:24:52.400
<00:24:49.200>you <00:24:49.480>can <00:24:49.760>still <00:24:50.040>embed <00:24:50.320>in <00:24:50.600>simple

495
00:24:52.400 --> 00:24:55.400
<00:24:52.400>and <00:24:52.555>C++ <00:24:52.711>when <00:24:52.866>you <00:24:53.022>need <00:24:53.177>to <00:24:53.333>it's <00:24:53.488>very <00:24:53.644>useful <00:24:53.800>when

496
00:24:55.400 --> 00:24:59.200
<00:24:55.400>there's <00:24:55.555>instructions. <00:24:55.711>There <00:24:55.866>are <00:24:56.022>not <00:24:56.177>supported <00:24:56.333>by <00:24:56.488>your <00:24:56.644>compiler, <00:24:56.800>but

497
00:24:58.200 --> 00:25:01.900
<00:24:58.200>most <00:24:58.355>of <00:24:58.511>the <00:24:58.666>time <00:24:58.822>we <00:24:58.977>don't <00:24:59.133>do <00:24:59.288>that <00:24:59.444>and <00:24:59.600>so

498
00:25:01.900 --> 00:25:04.600
<00:25:01.900>we <00:25:02.100>wanted <00:25:02.300>to <00:25:02.500>improve <00:25:02.700>the <00:25:02.900>language <00:25:03.100>and <00:25:03.300>the

499
00:25:04.600 --> 00:25:07.700
<00:25:04.600>Improvement <00:25:04.800>came <00:25:05.000>in <00:25:05.199>in <00:25:05.399>a <00:25:05.600>whole <00:25:05.800>area <00:25:06.000>a

500
00:25:07.700 --> 00:25:10.200
<00:25:07.700>lot <00:25:07.933>of <00:25:08.166>areas <00:25:08.400>inlining <00:25:08.633>so <00:25:08.866>that <00:25:09.100>we

501
00:25:10.200 --> 00:25:13.600
<00:25:10.200>didn't <00:25:10.433>have <00:25:10.666>to <00:25:10.900>have <00:25:11.133>function <00:25:11.366>Preamble <00:25:11.600>post

502
00:25:13.600 --> 00:25:19.200
<00:25:13.600>and <00:25:13.800>wolves <00:25:14.000>register <00:25:14.199>management <00:25:14.399>and <00:25:14.600>such <00:25:14.800>constants <00:25:15.000>so

503
00:25:17.200 --> 00:25:20.900
<00:25:17.200>that <00:25:17.900>you <00:25:18.600>could

504
00:25:20.900 --> 00:25:21.200
use

505
00:25:23.200 --> 00:25:24.800
<00:25:23.200>her <00:25:23.480>arms, <00:25:23.760>so <00:25:24.040>that <00:25:24.320>you <00:25:24.600>could

506
00:25:26.800 --> 00:25:29.900
<00:25:26.800>Not <00:25:27.149>or <00:25:27.500>write <00:25:27.850>things <00:25:28.200>easily

507
00:25:29.900 --> 00:25:33.300
<00:25:29.900>easy <00:25:30.600>optimizations <00:25:31.300>templates

508
00:25:32.300 --> 00:25:35.500
<00:25:32.300>came <00:25:32.533>in <00:25:32.766>so <00:25:33.000>it <00:25:33.233>great <00:25:33.466>generic <00:25:33.700>code

509
00:25:35.500 --> 00:25:39.800
<00:25:35.500>that <00:25:35.700>could <00:25:35.900>be <00:25:36.100>inlined <00:25:36.300>and <00:25:36.500>work <00:25:36.700>these <00:25:36.900>years.

510
00:25:39.800 --> 00:25:42.500
<00:25:39.800>We <00:25:39.955>have <00:25:40.111>done <00:25:40.266>a <00:25:40.422>lot <00:25:40.577>of <00:25:40.733>work <00:25:40.888>on <00:25:41.044>compile <00:25:41.200>time

511
00:25:42.500 --> 00:25:45.200
<00:25:42.500>evaluation. <00:25:42.675>If <00:25:42.850>you <00:25:43.025>can <00:25:43.200>figure <00:25:43.375>out <00:25:43.550>how <00:25:43.725>to <00:25:43.900>do

512
00:25:45.200 --> 00:25:48.200
<00:25:45.200>it <00:25:45.355>at <00:25:45.511>compile <00:25:45.666>time. <00:25:45.822>You <00:25:45.977>don't <00:25:46.133>have <00:25:46.288>to <00:25:46.444>do <00:25:46.600>it

513
00:25:48.200 --> 00:25:52.700
<00:25:48.200>later <00:25:48.666>and <00:25:49.133>basically <00:25:49.600>concurrency

514
00:25:51.700 --> 00:25:54.600
<00:25:51.700>had <00:25:51.933>to <00:25:52.166>be <00:25:52.400>handled <00:25:52.633>from <00:25:52.866>day <00:25:53.100>one.

515
00:25:54.600 --> 00:25:57.700
<00:25:54.600>It <00:25:54.879>wasn't <00:25:55.159>standardized <00:25:55.439>to <00:25:55.719>C++ <00:25:56.000>11

516
00:25:57.700 --> 00:26:00.400
<00:25:57.700>2011, <00:25:57.980>but <00:25:58.260>it <00:25:58.540>was <00:25:58.820>always <00:25:59.100>there

517
00:26:00.400 --> 00:26:04.400
<00:26:00.400>and <00:26:00.633>so <00:26:00.866>we <00:26:01.100>have <00:26:01.333>two <00:26:01.566>look <00:26:01.800>into

518
00:26:04.400 --> 00:26:07.600
<00:26:04.400>to <00:26:04.680>those <00:26:04.960>problems. <00:26:05.240>One <00:26:05.520>thing <00:26:05.800>that

519
00:26:07.600 --> 00:26:11.000
<00:26:07.600>is <00:26:07.879>pretty <00:26:08.159>fundamental <00:26:08.439>in <00:26:08.719>how <00:26:09.000>C++

520
00:26:10.600 --> 00:26:14.000
<00:26:10.600>works <00:26:10.879>is <00:26:11.159>that <00:26:11.439>we <00:26:11.719>adopted <00:26:12.000>to

521
00:26:13.200 --> 00:26:16.400
<00:26:13.200>see <00:26:13.480>memory <00:26:13.760>model <00:26:14.040>as <00:26:14.320>opposed <00:26:14.600>to

522
00:26:16.400 --> 00:26:19.400
<00:26:16.400>the <00:26:16.633>truly <00:26:16.866>object-oriented <00:26:17.100>memory <00:26:17.333>model. <00:26:17.566>And <00:26:17.800>so

523
00:26:19.400 --> 00:26:23.300
<00:26:19.400>if <00:26:19.680>you <00:26:19.960>have <00:26:20.240>abstract <00:26:20.520>type <00:26:20.800>there

524
00:26:22.300 --> 00:26:25.400
<00:26:22.300>a <00:26:22.533>Victor <00:26:22.766>points <00:26:23.000>and <00:26:23.233>you <00:26:23.466>initialize <00:26:23.700>it

525
00:26:25.400 --> 00:26:26.300
<00:26:25.400>to <00:26:25.602>a <00:26:25.805>bunch <00:26:26.007>of <00:26:26.210>points.

526
00:26:26.800 --> 00:26:30.300
<00:26:26.800>And <00:26:27.080>the <00:26:27.360>C++ <00:26:27.639>way <00:26:27.919>has <00:26:28.200>inherited

527
00:26:29.300 --> 00:26:33.200
<00:26:29.300>roughly <00:26:29.649>from <00:26:30.000>C. <00:26:30.350>The <00:26:30.700>Sea

528
00:26:32.200 --> 00:26:36.000
<00:26:32.200>of <00:26:32.433>course <00:26:32.666>can't <00:26:32.900>do <00:26:33.133>the <00:26:33.366>user-defined <00:26:33.600>types.

529
00:26:35.100 --> 00:26:38.400
<00:26:35.100>You <00:26:35.449>simply <00:26:35.800>lay <00:26:36.149>down <00:26:36.500>the

530
00:26:38.400 --> 00:26:39.000
<00:26:38.400>objects <00:26:38.940>there.

531
00:26:39.700 --> 00:26:42.000
<00:26:39.700>If <00:26:39.875>you <00:26:40.050>are <00:26:40.225>truly <00:26:40.400>object <00:26:40.575>oriented, <00:26:40.750>then <00:26:40.925>you <00:26:41.100>have

532
00:26:42.600 --> 00:26:45.600
<00:26:42.600>references <00:26:42.774>to <00:26:42.949>objects <00:26:43.125>those <00:26:43.300>references <00:26:43.475>to <00:26:43.649>objects. <00:26:43.824>And <00:26:44.000>as

533
00:26:45.600 --> 00:26:48.500
<00:26:45.600>you <00:26:45.755>can <00:26:45.911>see <00:26:46.066>there <00:26:46.222>you <00:26:46.377>end <00:26:46.533>up <00:26:46.688>in <00:26:46.844>using <00:26:47.000>twice

534
00:26:48.500 --> 00:26:51.600
<00:26:48.500>as <00:26:48.733>much <00:26:48.966>memory <00:26:49.200>and <00:26:49.433>to <00:26:49.666>do <00:26:49.900>any

535
00:26:51.600 --> 00:26:54.300
<00:26:51.600>work. <00:26:51.727>You <00:26:51.854>have <00:26:51.981>to <00:26:52.109>do <00:26:52.236>two <00:26:52.363>or <00:26:52.490>three <00:26:52.618>times <00:26:52.745>as <00:26:52.872>many <00:26:53.000>in

536
00:26:54.300 --> 00:26:57.800
<00:26:54.300>directions <00:26:54.440>and <00:26:54.580>there's <00:26:54.720>a <00:26:54.860>few <00:26:55.000>things <00:26:55.139>that <00:26:55.280>are <00:26:55.419>modern <00:26:55.560>compiler <00:26:55.700>is

537
00:26:57.800 --> 00:27:00.600
<00:26:57.800>likes <00:26:58.033>as <00:26:58.266>much <00:26:58.500>as <00:26:58.733>in <00:26:58.966>directions. <00:26:59.200>So

538
00:27:00.600 --> 00:27:05.400
<00:27:00.600>the <00:27:00.833>compact <00:27:01.066>layout <00:27:01.300>is <00:27:01.533>a <00:27:01.766>fundamental <00:27:02.000>start

539
00:27:04.400 --> 00:27:07.900
<00:27:04.400>to <00:27:04.866>good <00:27:05.333>programming <00:27:05.800>at

540
00:27:07.900 --> 00:27:09.000
<00:27:07.900>many <00:27:08.890>levels.

541
00:27:09.900 --> 00:27:12.300
<00:27:09.900>Oh, <00:27:10.133>yeah, <00:27:10.366>and <00:27:10.600>the <00:27:10.833>point <00:27:11.066>is <00:27:11.300>that

542
00:27:12.300 --> 00:27:15.900
<00:27:12.300>you <00:27:12.427>don't <00:27:12.554>need <00:27:12.681>a <00:27:12.809>huge <00:27:12.936>huge <00:27:13.063>system <00:27:13.190>to <00:27:13.318>get <00:27:13.445>that <00:27:13.572>overhead. <00:27:13.700>Even

543
00:27:15.900 --> 00:27:18.300
<00:27:15.900>small <00:27:16.133>types <00:27:16.366>will <00:27:16.600>get <00:27:16.833>it <00:27:17.066>do <00:27:17.300>that

544
00:27:18.300 --> 00:27:23.200
<00:27:18.300>a <00:27:18.440>million <00:27:18.580>times <00:27:18.720>and <00:27:18.860>it <00:27:19.000>starts <00:27:19.139>be <00:27:19.280>coming <00:27:19.419>up <00:27:19.560>costly <00:27:19.700>compile

545
00:27:21.200 --> 00:27:25.700
<00:27:21.200>time <00:27:21.900>computation. <00:27:22.600>We

546
00:27:24.700 --> 00:27:27.300
<00:27:24.700>can <00:27:25.050>basically <00:27:25.400>take <00:27:25.750>functions <00:27:26.100>that

547
00:27:27.300 --> 00:27:29.000
<00:27:27.300>are <00:27:27.766>pure <00:27:28.233>functions <00:27:28.700>and

548
00:27:30.900 --> 00:27:33.600
<00:27:30.900>Execute <00:27:31.100>a <00:27:31.300>lot <00:27:31.500>of <00:27:31.700>them <00:27:31.900>at <00:27:32.100>compile <00:27:32.300>time.

549
00:27:33.600 --> 00:27:36.600
<00:27:33.600>It's <00:27:34.300>quite <00:27:35.000>hard

550
00:27:36.600 --> 00:27:40.500
<00:27:36.600>to <00:27:36.879>beat <00:27:37.159>loading <00:27:37.439>the <00:27:37.719>result <00:27:38.000>through

551
00:27:39.500 --> 00:27:42.700
<00:27:39.500>runtime <00:27:39.966>computation. <00:27:40.433>And <00:27:40.900>one

552
00:27:42.700 --> 00:27:45.300
<00:27:42.700>thing <00:27:42.933>I <00:27:43.166>like <00:27:43.400>most <00:27:43.633>about <00:27:43.866>compile <00:27:44.100>time

553
00:27:45.300 --> 00:27:48.300
<00:27:45.300>computation <00:27:45.455>is <00:27:45.611>I <00:27:45.766>don't <00:27:45.922>have <00:27:46.077>to <00:27:46.233>write <00:27:46.388>in <00:27:46.544>our <00:27:46.700>handle.

554
00:27:48.300 --> 00:27:51.400
<00:27:48.300>Our <00:27:48.455>handling <00:27:48.611>is <00:27:48.766>one <00:27:48.922>of <00:27:49.077>the <00:27:49.233>messiest <00:27:49.388>parts <00:27:49.544>of <00:27:49.700>the

555
00:27:51.400 --> 00:27:54.000
<00:27:51.400>code <00:27:51.540>and <00:27:51.680>one <00:27:51.820>of <00:27:51.960>the <00:27:52.100>most <00:27:52.240>error-prone <00:27:52.380>one. <00:27:52.520>So <00:27:52.660>if <00:27:52.800>you

556
00:27:54.200 --> 00:27:56.400
<00:27:54.200>can <00:27:54.355>get <00:27:54.511>the <00:27:54.666>compiler <00:27:54.822>to <00:27:54.977>do <00:27:55.133>it <00:27:55.288>for <00:27:55.444>you <00:27:55.600>great.

557
00:27:57.200 --> 00:28:01.700
<00:27:57.200>And <00:27:57.900>basically <00:27:58.600>constricts

558
00:28:00.700 --> 00:28:04.200
<00:28:00.700>were <00:28:01.050>functions <00:28:01.400>the <00:28:01.750>c++, <00:28:02.100>version

559
00:28:03.200 --> 00:28:06.800
<00:28:03.200>of <00:28:03.433>the <00:28:03.666>idea <00:28:03.900>of <00:28:04.133>pure <00:28:04.366>functions. <00:28:04.600>No

560
00:28:06.800 --> 00:28:10.100
<00:28:06.800>side <00:28:07.000>effect. <00:28:07.200>No <00:28:07.399>use <00:28:07.600>of <00:28:07.800>global <00:28:08.000>variables <00:28:08.200>that

561
00:28:09.100 --> 00:28:10.500
<00:28:09.100>kind <00:28:09.730>of <00:28:10.360>stuff.

562
00:28:11.400 --> 00:28:14.700
<00:28:11.400>And <00:28:11.633>it <00:28:11.866>has <00:28:12.100>been <00:28:12.333>steadily <00:28:12.566>generalized <00:28:12.800>over

563
00:28:14.700 --> 00:28:17.400
<00:28:14.700>the <00:28:14.855>years <00:28:15.011>like <00:28:15.166>you <00:28:15.322>can <00:28:15.477>of <00:28:15.633>course <00:28:15.788>have <00:28:15.944>glow <00:28:16.100>have

564
00:28:17.400 --> 00:28:20.400
<00:28:17.400>local <00:28:17.600>variables <00:28:17.800>in <00:28:18.000>a <00:28:18.200>contextual <00:28:18.400>function. <00:28:18.600>They <00:28:18.800>just

565
00:28:20.400 --> 00:28:22.300
<00:28:20.400>happen <00:28:20.680>to <00:28:20.960>live <00:28:21.240>in <00:28:21.520>the <00:28:21.800>compiler.

566
00:28:22.900 --> 00:28:25.100
<00:28:22.900>And <00:28:23.250>go <00:28:23.600>away <00:28:23.950>as <00:28:24.300>soon

567
00:28:25.100 --> 00:28:27.000
<00:28:25.100>as <00:28:25.449>the <00:28:25.800>function <00:28:26.149>is <00:28:26.500>compiled.

568
00:28:28.200 --> 00:28:31.700
<00:28:28.200>Okay, <00:28:28.355>and <00:28:28.511>it's <00:28:28.666>not <00:28:28.822>just <00:28:28.977>for <00:28:29.133>building <00:28:29.288>types. <00:28:29.444>There's <00:28:29.600>a

569
00:28:31.700 --> 00:28:34.700
<00:28:31.700>static <00:28:31.980>assert <00:28:32.260>there <00:28:32.540>using <00:28:32.820>some <00:28:33.100>facilities

570
00:28:34.700 --> 00:28:38.000
<00:28:34.700>from <00:28:34.875>the <00:28:35.050>Chrono <00:28:35.225>library <00:28:35.400>that <00:28:35.575>deals <00:28:35.750>with <00:28:35.925>type. <00:28:36.100>So

571
00:28:37.200 --> 00:28:41.600
<00:28:37.200>I <00:28:37.433>want <00:28:37.666>to <00:28:37.900>see <00:28:38.133>whether <00:28:38.366>the <00:28:38.600>weekday

572
00:28:40.600 --> 00:28:44.800
<00:28:40.600>of <00:28:41.066>August <00:28:41.533>25th. <00:28:42.000>2021

573
00:28:43.800 --> 00:28:46.000
<00:28:43.800>was <00:28:44.266>a <00:28:44.733>glance <00:28:45.200>day.

574
00:28:46.500 --> 00:28:50.900
<00:28:46.500>That <00:28:46.700>comp <00:28:46.900>program <00:28:47.100>will <00:28:47.300>not <00:28:47.500>compile <00:28:47.700>unless <00:28:47.900>that

575
00:28:50.900 --> 00:28:53.400
<00:28:50.900>is <00:28:51.100>true. <00:28:51.300>That's <00:28:51.500>just <00:28:51.700>what <00:28:51.900>aesthetic <00:28:52.100>assert <00:28:52.300>does

576
00:28:53.400 --> 00:28:57.200
<00:28:53.400>and <00:28:53.600>noticed. <00:28:53.800>I'm <00:28:54.000>doing <00:28:54.200>a <00:28:54.400>constant <00:28:54.600>expression <00:28:54.800>evaluation

577
00:28:56.200 --> 00:29:01.500
<00:28:56.200>of <00:28:56.480>a <00:28:56.760>ravan <00:28:57.040>non-trivial <00:28:57.320>set <00:28:57.600>of

578
00:29:01.500 --> 00:29:04.300
<00:29:01.500>types <00:29:01.850>and <00:29:02.200>such <00:29:02.550>weekday <00:29:02.900>and

579
00:29:04.300 --> 00:29:06.400
<00:29:04.300>dates <00:29:04.766>and <00:29:05.233>such. <00:29:05.700>Okay.

580
00:29:07.600 --> 00:29:10.400
<00:29:07.600>Oh <00:29:07.879>concurrency <00:29:08.159>back <00:29:08.439>to <00:29:08.719>concurrency <00:29:09.000>again.

581
00:29:10.400 --> 00:29:13.600
<00:29:10.400>I <00:29:10.680>started <00:29:10.960>with <00:29:11.240>coroutines. <00:29:11.520>This <00:29:11.800>was

582
00:29:13.600 --> 00:29:16.900
<00:29:13.600>why <00:29:13.800>C++ <00:29:14.000>survived <00:29:14.199>it <00:29:14.399>was <00:29:14.600>not <00:29:14.800>included <00:29:15.000>in

583
00:29:16.900 --> 00:29:20.900
<00:29:16.900>the <00:29:17.180>first <00:29:17.460>standard <00:29:17.740>because <00:29:18.020>Sun <00:29:18.300>didn't

584
00:29:19.900 --> 00:29:22.500
<00:29:19.900>want <00:29:20.250>it <00:29:20.600>implemented <00:29:20.950>on <00:29:21.300>their

585
00:29:22.500 --> 00:29:25.900
<00:29:22.500>spark <00:29:22.966>architecture <00:29:23.433>because <00:29:23.900>it

586
00:29:25.900 --> 00:29:28.200
<00:29:25.900>relied <00:29:26.180>on <00:29:26.460>stack <00:29:26.740>frames <00:29:27.020>and <00:29:27.300>they

587
00:29:28.200 --> 00:29:31.500
<00:29:28.200>didn't <00:29:28.355>like <00:29:28.511>that <00:29:28.666>and <00:29:28.822>since <00:29:28.977>they <00:29:29.133>didn't <00:29:29.288>like <00:29:29.444>in <00:29:29.600>their

588
00:29:31.500 --> 00:29:34.300
<00:29:31.500>own <00:29:31.700>compiler. <00:29:31.900>Nobody <00:29:32.100>else <00:29:32.300>could <00:29:32.500>could <00:29:32.700>do <00:29:32.900>it

589
00:29:34.300 --> 00:29:38.800
<00:29:34.300>unfortunate. <00:29:34.500>I <00:29:34.700>got <00:29:34.899>it <00:29:35.100>back <00:29:35.300>in <00:29:35.500>2020 <00:29:35.700>30

590
00:29:38.800 --> 00:29:41.000
<00:29:38.800>years <00:29:39.033>later. <00:29:39.266>Sometimes <00:29:39.500>you <00:29:39.733>have <00:29:39.966>to <00:29:40.200>wait.

591
00:29:42.400 --> 00:29:45.400
<00:29:42.400>The <00:29:42.575>most <00:29:42.750>important <00:29:42.925>thing <00:29:43.100>in <00:29:43.275>C++ <00:29:43.450>11 <00:29:43.625>was <00:29:43.800>we

592
00:29:45.400 --> 00:29:47.400
<00:29:45.400>got <00:29:45.750>a <00:29:46.100>formal <00:29:46.450>mathematical <00:29:46.800>specified.

593
00:29:49.500 --> 00:29:50.500
<00:29:49.500>memory <00:29:50.400>model

594
00:29:51.100 --> 00:29:54.000
<00:29:51.100>basically <00:29:51.333>C++ <00:29:51.566>memory <00:29:51.800>most <00:29:52.033>of <00:29:52.266>the <00:29:52.500>time

595
00:29:55.100 --> 00:29:59.100
<00:29:55.100>works <00:29:55.240>exactly <00:29:55.379>as <00:29:55.520>you <00:29:55.659>would <00:29:55.800>expect <00:29:55.939>memory <00:29:56.080>to <00:29:56.219>do <00:29:56.360>and <00:29:56.500>there's

596
00:29:58.100 --> 00:30:01.100
<00:29:58.100>little <00:29:58.333>details <00:29:58.566>that <00:29:58.800>will <00:29:59.033>allow <00:29:59.266>you <00:29:59.500>to

597
00:30:01.100 --> 00:30:04.300
<00:30:01.100>take <00:30:01.449>advantage <00:30:01.800>of <00:30:02.149>of <00:30:02.500>all

598
00:30:04.300 --> 00:30:07.900
<00:30:04.300>kinds <00:30:04.533>of <00:30:04.766>strangeness <00:30:05.000>in <00:30:05.233>the <00:30:05.466>in <00:30:05.700>in

599
00:30:07.900 --> 00:30:10.200
<00:30:07.900>the <00:30:08.250>memory <00:30:08.600>first <00:30:08.950>idea <00:30:09.300>of

600
00:30:10.200 --> 00:30:12.500
<00:30:10.200>memory <00:30:10.433>model <00:30:10.666>by <00:30:10.900>the <00:30:11.133>way <00:30:11.366>was <00:30:11.600>to

601
00:30:13.900 --> 00:30:16.300
<00:30:13.900>Take <00:30:14.100>the <00:30:14.300>one <00:30:14.500>nice <00:30:14.700>one. <00:30:14.900>They <00:30:15.100>had <00:30:15.300>from

602
00:30:16.300 --> 00:30:18.700
<00:30:16.300>java <00:30:16.580>and <00:30:16.860>just <00:30:17.139>say, <00:30:17.419>thank <00:30:17.700>you.

603
00:30:19.200 --> 00:30:22.800
<00:30:19.200>But <00:30:19.375>that <00:30:19.550>didn't <00:30:19.725>work <00:30:19.900>because <00:30:20.075>the <00:30:20.250>people <00:30:20.425>who <00:30:20.600>built

604
00:30:22.800 --> 00:30:26.000
<00:30:22.800>C+ <00:30:23.266>build <00:30:23.733>implementations <00:30:24.200>of

605
00:30:25.600 --> 00:30:28.500
<00:30:25.600>java <00:30:26.066>Java <00:30:26.533>virtual <00:30:27.000>memories

606
00:30:28.500 --> 00:30:31.200
<00:30:28.500>like <00:30:28.675>IBM <00:30:28.850>and <00:30:29.025>sun <00:30:29.200>came <00:30:29.375>and <00:30:29.550>said <00:30:29.725>you <00:30:29.900>can't

607
00:30:31.200 --> 00:30:31.500
<00:30:31.200>do <00:30:31.470>that.

608
00:30:32.700 --> 00:30:33.800
<00:30:32.700>if <00:30:33.690>C++

609
00:30:34.800 --> 00:30:38.300
<00:30:34.800>in <00:30:35.000>which <00:30:35.200>we <00:30:35.399>write <00:30:35.600>our <00:30:35.800>Java <00:30:36.000>implementations <00:30:36.200>take

610
00:30:37.300 --> 00:30:39.700
<00:30:37.300>the <00:30:37.766>Java <00:30:38.233>memory <00:30:38.700>model.

611
00:30:40.300 --> 00:30:42.200
<00:30:40.300>all <00:30:40.766>calculations <00:30:41.233>is <00:30:41.700>that

612
00:30:43.900 --> 00:30:46.800
<00:30:43.900>That <00:30:44.100>Java <00:30:44.300>will <00:30:44.500>slow <00:30:44.700>down <00:30:44.900>by <00:30:45.100>two <00:30:45.300>to

613
00:30:46.800 --> 00:30:47.500
<00:30:46.800>two <00:30:46.957>and <00:30:47.115>a <00:30:47.272>half <00:30:47.430>times.

614
00:30:48.500 --> 00:30:51.400
<00:30:48.500>Now <00:30:48.675>I've <00:30:48.850>been <00:30:49.025>interesting <00:30:49.200>thing <00:30:49.375>to <00:30:49.550>do <00:30:49.725>but <00:30:49.900>not

615
00:30:51.400 --> 00:30:54.400
<00:30:51.400>really <00:30:52.100>moral. <00:30:52.800>So

616
00:30:54.400 --> 00:30:57.800
<00:30:54.400>we <00:30:54.600>didn't <00:30:54.800>and <00:30:55.000>we <00:30:55.200>worked <00:30:55.400>for <00:30:55.600>another <00:30:55.800>couple

617
00:30:57.800 --> 00:31:00.900
<00:30:57.800>of <00:30:57.940>years <00:30:58.080>and <00:30:58.220>got <00:30:58.360>something <00:30:58.500>that <00:30:58.639>Not <00:30:58.780>only <00:30:58.919>was <00:30:59.060>saying <00:30:59.200>but

618
00:31:00.900 --> 00:31:02.300
<00:31:00.900>could <00:31:01.530>handle <00:31:02.159>Java.

619
00:31:03.200 --> 00:31:06.400
<00:31:03.200>And <00:31:03.400>now <00:31:03.600>we <00:31:03.800>get <00:31:04.000>criticized <00:31:04.200>for <00:31:04.400>being <00:31:04.600>too

620
00:31:06.400 --> 00:31:09.200
<00:31:06.400>complicated <00:31:06.575>of <00:31:06.750>course, <00:31:06.925>but <00:31:07.100>that's <00:31:07.275>fine. <00:31:07.450>We <00:31:07.625>did <00:31:07.800>the

621
00:31:09.200 --> 00:31:12.200
<00:31:09.200>right <00:31:09.400>thing. <00:31:09.600>And <00:31:09.800>then <00:31:10.000>we <00:31:10.200>have <00:31:10.400>support <00:31:10.600>for

622
00:31:12.200 --> 00:31:15.300
<00:31:12.200>Lock <00:31:12.375>Free <00:31:12.550>programming. <00:31:12.725>We <00:31:12.900>have <00:31:13.075>support <00:31:13.250>for <00:31:13.425>Threads <00:31:13.600>and

623
00:31:15.300 --> 00:31:18.800
<00:31:15.300>locks <00:31:15.766>the <00:31:16.233>standard <00:31:16.700>threatened

624
00:31:18.800 --> 00:31:21.500
<00:31:18.800>lock <00:31:19.000>model <00:31:19.200>that <00:31:19.399>all <00:31:19.600>the <00:31:19.800>systems <00:31:20.000>use <00:31:20.200>and

625
00:31:21.500 --> 00:31:23.700
<00:31:21.500>we <00:31:21.700>therefore <00:31:21.900>have <00:31:22.100>to <00:31:22.300>be <00:31:22.500>able <00:31:22.700>to <00:31:22.900>support

626
00:31:24.600 --> 00:31:27.600
<00:31:24.600>and <00:31:24.774>then <00:31:24.949>there's <00:31:25.125>a <00:31:25.300>few <00:31:25.475>more <00:31:25.649>modern <00:31:25.824>things <00:31:26.000>that

627
00:31:27.600 --> 00:31:30.200
<00:31:27.600>I <00:31:27.833>can't <00:31:28.066>get <00:31:28.300>into <00:31:28.533>here <00:31:28.766>and <00:31:29.000>basically

628
00:31:31.300 --> 00:31:34.300
<00:31:31.300>that <00:31:31.500>was <00:31:31.700>C++ <00:31:31.899>11 <00:31:32.100>when <00:31:32.300>we <00:31:32.500>formalized <00:31:32.700>the

629
00:31:34.300 --> 00:31:37.300
<00:31:34.300>basic <00:31:34.475>things <00:31:34.649>and <00:31:34.825>we <00:31:35.000>have <00:31:35.175>gotten <00:31:35.350>more <00:31:35.524>over <00:31:35.700>the

630
00:31:37.300 --> 00:31:40.900
<00:31:37.300>years <00:31:37.500>gradual <00:31:37.700>Improvement <00:31:37.899>and <00:31:38.100>all <00:31:38.300>of <00:31:38.500>that <00:31:38.700>and

631
00:31:40.900 --> 00:31:43.400
<00:31:40.900>so <00:31:41.180>we <00:31:41.460>have <00:31:41.740>better <00:31:42.020>concurrences <00:31:42.300>support

632
00:31:43.400 --> 00:31:46.400
<00:31:43.400>and <00:31:43.575>C++ <00:31:43.750>20 <00:31:43.925>then <00:31:44.100>we <00:31:44.275>had <00:31:44.450>in <00:31:44.625>ten <00:31:44.800>years

633
00:31:46.400 --> 00:31:49.600
<00:31:46.400>before <00:31:46.633>we <00:31:46.866>have <00:31:47.100>also <00:31:47.333>got <00:31:47.566>parallel <00:31:47.800>algorithms

634
00:31:49.600 --> 00:31:52.800
<00:31:49.600>coroutines <00:31:49.949>again <00:31:50.300>good <00:31:50.649>and <00:31:51.000>better

635
00:31:52.800 --> 00:31:55.800
<00:31:52.800>chord <00:31:53.266>change <00:31:53.733>and <00:31:54.200>there's

636
00:31:57.400 --> 00:32:00.200
<00:31:57.400>Some <00:31:57.633>support <00:31:57.866>for <00:31:58.100>vectorization. <00:31:58.333>So <00:31:58.566>let's <00:31:58.800>see

637
00:32:00.200 --> 00:32:05.300
<00:32:00.200>how <00:32:00.375>it <00:32:00.550>just <00:32:00.725>look <00:32:00.900>this <00:32:01.075>is <00:32:01.250>ourai <00:32:01.425>when <00:32:01.600>applied

638
00:32:03.300 --> 00:32:05.500
to

639
00:32:06.400 --> 00:32:09.500
<00:32:06.400>Concurrency <00:32:06.680>so <00:32:06.960>we <00:32:07.240>have <00:32:07.520>a <00:32:07.800>mutex

640
00:32:09.500 --> 00:32:12.300
<00:32:09.500>like <00:32:09.733>you <00:32:09.966>have <00:32:10.200>in <00:32:10.433>in <00:32:10.666>systems <00:32:10.900>and

641
00:32:12.300 --> 00:32:15.400
<00:32:12.300>they <00:32:12.500>protect <00:32:12.700>some <00:32:12.899>shared <00:32:13.100>data, <00:32:13.300>which <00:32:13.500>here <00:32:13.700>is

642
00:32:15.400 --> 00:32:18.600
<00:32:15.400>just <00:32:15.527>a <00:32:15.654>single <00:32:15.781>integer <00:32:15.909>just <00:32:16.036>it <00:32:16.163>could <00:32:16.290>fit <00:32:16.418>on <00:32:16.545>the <00:32:16.672>slide. <00:32:16.800>And

643
00:32:18.600 --> 00:32:21.700
<00:32:18.600>so <00:32:18.800>we <00:32:19.000>make <00:32:19.199>a <00:32:19.399>scope <00:32:19.600>block <00:32:19.800>that <00:32:20.000>grabs

644
00:32:21.700 --> 00:32:24.100
<00:32:21.700>these <00:32:22.166>two <00:32:22.633>new, <00:32:23.100>Texas.

645
00:32:25.400 --> 00:32:29.100
<00:32:25.400>Manipulate <00:32:25.633>the <00:32:25.866>shared <00:32:26.100>data <00:32:26.333>and <00:32:26.566>the <00:32:26.800>destructor

646
00:32:28.100 --> 00:32:32.000
<00:32:28.100>for <00:32:28.379>the <00:32:28.659>shared <00:32:28.939>lock <00:32:29.219>releases <00:32:29.500>the

647
00:32:31.300 --> 00:32:35.200
<00:32:31.300>shared <00:32:31.500>lock <00:32:31.700>the <00:32:31.899>point <00:32:32.100>here <00:32:32.300>is <00:32:32.500>that <00:32:32.700>unless

648
00:32:34.200 --> 00:32:35.900
<00:32:34.200>we <00:32:34.666>can <00:32:35.133>get <00:32:35.600>both.

649
00:32:37.600 --> 00:32:39.800
<00:32:37.600>New <00:32:37.800>Texas <00:32:38.000>we <00:32:38.199>will <00:32:38.399>not <00:32:38.600>enter <00:32:38.800>the <00:32:39.000>scope.

650
00:32:40.400 --> 00:32:43.300
<00:32:40.400>So <00:32:40.575>you <00:32:40.750>don't <00:32:40.925>get <00:32:41.100>into <00:32:41.275>the <00:32:41.450>Deadlocks <00:32:41.625>with <00:32:41.800>somebody

651
00:32:43.300 --> 00:32:46.700
<00:32:43.300>grabbing <00:32:43.766>M1 <00:32:44.233>before <00:32:44.700>M2

652
00:32:46.700 --> 00:32:49.400
<00:32:46.700>and <00:32:46.875>somebody <00:32:47.050>else <00:32:47.225>grabbing <00:32:47.400>him <00:32:47.575>too <00:32:47.750>before <00:32:47.925>in <00:32:48.100>one

653
00:32:49.400 --> 00:32:52.600
<00:32:49.400>so <00:32:49.600>this <00:32:49.800>is <00:32:50.000>just <00:32:50.200>the <00:32:50.400>traditional <00:32:50.600>model <00:32:50.800>of

654
00:32:52.600 --> 00:32:55.600
<00:32:52.600>concurrency, <00:32:52.800>which <00:32:53.000>is <00:32:53.199>about <00:32:53.399>the <00:32:53.600>worst <00:32:53.800>for <00:32:54.000>applications,

655
00:32:55.600 --> 00:32:58.900
<00:32:55.600>but <00:32:55.774>it's <00:32:55.949>one <00:32:56.125>everybody <00:32:56.300>is <00:32:56.475>using <00:32:56.649>for <00:32:56.824>fundamental <00:32:57.000>stuff.

656
00:32:59.700 --> 00:33:03.100
<00:32:59.700>It's <00:32:59.900>that <00:33:00.100>model, <00:33:00.300>but <00:33:00.500>it's <00:33:00.700>done <00:33:00.900>type <00:33:01.100>safe

657
00:33:02.100 --> 00:33:05.800
<00:33:02.100>and <00:33:02.566>with <00:33:03.033>support <00:33:03.500>that

658
00:33:05.800 --> 00:33:07.100
<00:33:05.800>you <00:33:06.092>can <00:33:06.385>afford <00:33:06.677>to <00:33:06.969>use.

659
00:33:08.600 --> 00:33:11.300
<00:33:08.600>One <00:33:08.774>of <00:33:08.949>the <00:33:09.125>things <00:33:09.300>we <00:33:09.475>want <00:33:09.649>to <00:33:09.824>do <00:33:10.000>is

660
00:33:11.300 --> 00:33:14.400
<00:33:11.300>to <00:33:11.500>get <00:33:11.700>away <00:33:11.899>from <00:33:12.100>the <00:33:12.300>low <00:33:12.500>level <00:33:12.700>stuff

661
00:33:14.400 --> 00:33:17.200
<00:33:14.400>and <00:33:14.633>I <00:33:14.866>I <00:33:15.100>like <00:33:15.333>asynchronized <00:33:15.566>cue <00:33:15.800>that

662
00:33:17.200 --> 00:33:20.700
<00:33:17.200>I <00:33:17.355>can <00:33:17.511>put <00:33:17.666>messages <00:33:17.822>on <00:33:17.977>and <00:33:18.133>get <00:33:18.288>messages <00:33:18.444>off <00:33:18.600>and

663
00:33:20.700 --> 00:33:24.600
<00:33:20.700>it <00:33:20.875>ends <00:33:21.050>up <00:33:21.225>like <00:33:21.400>that <00:33:21.575>while <00:33:21.750>true <00:33:21.925>generate <00:33:22.100>a

664
00:33:24.600 --> 00:33:27.300
<00:33:24.600>message <00:33:24.800>and <00:33:25.000>while <00:33:25.199>true <00:33:25.399>get <00:33:25.600>the <00:33:25.800>message <00:33:26.000>and

665
00:33:27.300 --> 00:33:31.000
<00:33:27.300>use <00:33:27.440>it <00:33:27.580>we <00:33:27.720>can <00:33:27.860>get <00:33:28.000>that <00:33:28.139>kind <00:33:28.280>of <00:33:28.419>stuff <00:33:28.560>and <00:33:28.700>it

666
00:33:30.200 --> 00:33:33.500
<00:33:30.200>will <00:33:30.550>run <00:33:30.900>roughly <00:33:31.250>the <00:33:31.600>way

667
00:33:33.500 --> 00:33:37.200
<00:33:33.500>you <00:33:33.700>would <00:33:33.900>expect <00:33:34.100>it <00:33:34.300>to <00:33:34.500>do. <00:33:34.700>Once <00:33:34.900>you

668
00:33:37.200 --> 00:33:40.400
<00:33:37.200>have <00:33:37.375>done <00:33:37.550>the <00:33:37.725>synchronization <00:33:37.900>and <00:33:38.075>the <00:33:38.250>cheapest <00:33:38.425>possible <00:33:38.600>way

669
00:33:40.400 --> 00:33:41.000
<00:33:40.400>that <00:33:40.670>you <00:33:40.940>wanted.

670
00:33:42.100 --> 00:33:45.400
<00:33:42.100>all <00:33:42.333>of <00:33:42.566>this <00:33:42.800>depends <00:33:43.033>on <00:33:43.266>the <00:33:43.500>type

671
00:33:45.400 --> 00:33:45.600
system

672
00:33:46.400 --> 00:33:49.100
<00:33:46.400>And <00:33:46.633>the <00:33:46.866>type <00:33:47.100>system <00:33:47.333>that <00:33:47.566>started <00:33:47.800>with

673
00:33:49.100 --> 00:33:52.800
<00:33:49.100>user <00:33:49.274>classes <00:33:49.449>were <00:33:49.625>pretty <00:33:49.800>good <00:33:49.975>for <00:33:50.149>the <00:33:50.324>time. <00:33:50.500>It

674
00:33:52.800 --> 00:33:56.800
<00:33:52.800>had <00:33:53.033>better <00:33:53.266>type <00:33:53.500>checking <00:33:53.733>than <00:33:53.966>C <00:33:54.200>and

675
00:33:55.800 --> 00:33:58.800
<00:33:55.800>allowed <00:33:56.266>better <00:33:56.733>optimization <00:33:57.200>and

676
00:33:58.800 --> 00:34:01.200
<00:33:58.800>such <00:33:59.000>the <00:33:59.200>way <00:33:59.399>she <00:33:59.600>did <00:33:59.800>and <00:34:00.000>it <00:34:00.200>was

677
00:34:01.200 --> 00:34:05.000
<00:34:01.200>not <00:34:01.375>quite <00:34:01.550>as <00:34:01.725>good <00:34:01.900>as <00:34:02.075>similar <00:34:02.250>but <00:34:02.425>we <00:34:02.600>would

678
00:34:04.100 --> 00:34:08.000
<00:34:04.100>get <00:34:04.449>there <00:34:04.800>eventually <00:34:05.149>affordability <00:34:05.500>was

679
00:34:07.700 --> 00:34:10.400
<00:34:07.700>extremely <00:34:08.050>important <00:34:08.400>because <00:34:08.750>otherwise <00:34:09.100>we

680
00:34:10.400 --> 00:34:13.100
<00:34:10.400>couldn't <00:34:10.575>afford <00:34:10.750>to <00:34:10.925>use <00:34:11.100>this <00:34:11.275>stuff. <00:34:11.450>We <00:34:11.625>couldn't <00:34:11.800>get

681
00:34:13.100 --> 00:34:16.300
<00:34:13.100>complete <00:34:13.380>steady <00:34:13.659>type <00:34:13.940>safety. <00:34:14.219>It <00:34:14.500>wasn't

682
00:34:16.300 --> 00:34:19.400
<00:34:16.300>in <00:34:16.440>Sea <00:34:16.580>and <00:34:16.720>as <00:34:16.860>long <00:34:17.000>as <00:34:17.140>we <00:34:17.280>have <00:34:17.420>to <00:34:17.560>fiddle <00:34:17.700>with

683
00:34:19.400 --> 00:34:22.500
<00:34:19.400>bits <00:34:19.750>in <00:34:20.100>device <00:34:20.450>registers <00:34:20.800>and

684
00:34:22.500 --> 00:34:25.500
<00:34:22.500>things <00:34:22.655>like <00:34:22.811>that, <00:34:22.966>it's <00:34:23.122>hard <00:34:23.277>to <00:34:23.433>get <00:34:23.588>guarantees <00:34:23.744>of <00:34:23.900>absolute

685
00:34:25.500 --> 00:34:28.400
<00:34:25.500>type <00:34:25.780>safety <00:34:26.060>static <00:34:26.340>type <00:34:26.620>safety. <00:34:26.900>And

686
00:34:28.400 --> 00:34:31.700
<00:34:28.400>as <00:34:28.500>a <00:34:28.600>matter <00:34:28.700>of <00:34:28.800>fact, <00:34:28.900>the <00:34:29.000>language <00:34:29.100>is <00:34:29.200>a <00:34:29.300>claim <00:34:29.400>to <00:34:29.500>have <00:34:29.600>it <00:34:29.700>Go <00:34:29.800>and

687
00:34:31.700 --> 00:34:34.200
<00:34:31.699>call <00:34:31.933>csc++ <00:34:32.166>to <00:34:32.399>do <00:34:32.633>that <00:34:32.866>you <00:34:33.100>work

688
00:34:34.200 --> 00:34:38.400
<00:34:34.199>and <00:34:34.375>they <00:34:34.549>usually <00:34:34.725>forget <00:34:34.899>to <00:34:35.074>tell <00:34:35.250>that <00:34:35.424>in <00:34:35.600>c++,

689
00:34:37.400 --> 00:34:41.600
<00:34:37.400>we <00:34:37.680>just <00:34:37.960>do <00:34:38.240>it. <00:34:38.520>I <00:34:38.800>wanted

690
00:34:41.600 --> 00:34:44.300
<00:34:41.600>the <00:34:41.949>generic <00:34:42.299>programming <00:34:42.650>took <00:34:43.000>some

691
00:34:44.300 --> 00:34:46.200
<00:34:44.300>time <00:34:44.650>to <00:34:45.000>get <00:34:45.350>there <00:34:45.700>and

692
00:34:46.400 --> 00:34:49.900
<00:34:46.400>and <00:34:46.575>we <00:34:46.750>got <00:34:46.925>the <00:34:47.100>class <00:34:47.275>hierarchies <00:34:47.450>from <00:34:47.625>from <00:34:47.800>sumula

693
00:34:49.900 --> 00:34:50.600
and

694
00:34:52.800 --> 00:34:55.600
<00:34:52.800>the <00:34:53.080>type <00:34:53.360>system <00:34:53.640>challenges <00:34:53.920>and <00:34:54.200>the

695
00:34:55.600 --> 00:34:59.100
<00:34:55.600>Performance <00:34:55.775>challenges <00:34:55.949>turns <00:34:56.125>out <00:34:56.299>to <00:34:56.475>be <00:34:56.650>very <00:34:56.824>closely <00:34:57.000>related

696
00:34:58.100 --> 00:35:01.400
<00:34:58.100>language <00:34:59.500>making

697
00:35:01.400 --> 00:35:04.400
<00:35:01.400>the <00:35:01.600>language <00:35:01.800>more <00:35:02.000>impressive <00:35:02.200>allowing <00:35:02.400>people <00:35:02.600>to <00:35:02.800>say

698
00:35:04.400 --> 00:35:07.400
<00:35:04.400>what <00:35:04.600>they <00:35:04.800>want <00:35:05.000>to <00:35:05.200>say <00:35:05.400>also <00:35:05.600>means <00:35:05.800>that

699
00:35:07.400 --> 00:35:10.400
<00:35:07.400>the <00:35:07.633>compiler <00:35:07.866>knows <00:35:08.100>what <00:35:08.333>the <00:35:08.566>programmer <00:35:08.800>is

700
00:35:10.400 --> 00:35:10.700
<00:35:10.400>trying <00:35:10.535>to <00:35:10.670>do.

701
00:35:11.600 --> 00:35:14.800
<00:35:11.600>I <00:35:11.707>mean <00:35:11.815>the <00:35:11.923>way <00:35:12.030>I <00:35:12.138>say <00:35:12.246>it <00:35:12.353>is <00:35:12.461>if <00:35:12.569>I <00:35:12.676>can <00:35:12.784>understand <00:35:12.892>your <00:35:13.000>codes

702
00:35:14.800 --> 00:35:17.200
<00:35:14.800>probably <00:35:15.080>so <00:35:15.360>can <00:35:15.640>the <00:35:15.920>optimizer <00:35:16.200>and

703
00:35:17.200 --> 00:35:18.400
<00:35:17.200>it'll <00:35:17.560>run <00:35:17.920>recently <00:35:18.280>fast.

704
00:35:19.100 --> 00:35:22.800
<00:35:19.100>If <00:35:19.240>I <00:35:19.380>cannot <00:35:19.520>understand <00:35:19.660>your <00:35:19.799>code <00:35:19.940>because <00:35:20.080>it's <00:35:20.220>too <00:35:20.360>complicated <00:35:20.500>the

705
00:35:22.800 --> 00:35:25.700
<00:35:22.800>compare <00:35:23.033>the <00:35:23.266>compiler <00:35:23.500>and <00:35:23.733>the <00:35:23.966>optimizer <00:35:24.200>might

706
00:35:25.700 --> 00:35:28.500
<00:35:25.700>have <00:35:25.875>trouble <00:35:26.049>too. <00:35:26.225>So <00:35:26.399>one <00:35:26.575>of <00:35:26.750>my <00:35:26.924>favorite <00:35:27.100>ways

707
00:35:28.500 --> 00:35:31.400
<00:35:28.500>of <00:35:28.675>getting <00:35:28.850>code <00:35:29.025>to <00:35:29.200>run <00:35:29.375>faster <00:35:29.550>is <00:35:29.725>first <00:35:29.900>to

708
00:35:31.400 --> 00:35:34.400
<00:35:31.400>remove <00:35:31.540>the <00:35:31.680>complicated <00:35:31.820>bits <00:35:31.960>and <00:35:32.100>see <00:35:32.240>if <00:35:32.380>it <00:35:32.520>runs <00:35:32.660>fast <00:35:32.800>enough.

709
00:35:35.100 --> 00:35:38.400
<00:35:35.100>And <00:35:35.240>if <00:35:35.380>it <00:35:35.520>doesn't <00:35:35.660>I'll <00:35:35.799>start <00:35:35.940>getting <00:35:36.080>clever. <00:35:36.220>But <00:35:36.360>basically <00:35:36.500>the

710
00:35:38.400 --> 00:35:42.200
<00:35:38.400>first <00:35:38.540>rule <00:35:38.680>of <00:35:38.820>the <00:35:38.960>game <00:35:39.100>is <00:35:39.240>make <00:35:39.380>it <00:35:39.520>simple. <00:35:39.660>Don't <00:35:39.800>be

711
00:35:41.200 --> 00:35:42.600
<00:35:41.200>too <00:35:42.460>clever.

712
00:35:43.600 --> 00:35:43.900
and

713
00:35:45.600 --> 00:35:49.000
<00:35:45.600>the <00:35:45.740>other <00:35:45.880>thing <00:35:46.020>is <00:35:46.160>we <00:35:46.299>can <00:35:46.440>if <00:35:46.580>we <00:35:46.720>can <00:35:46.860>move <00:35:47.000>computation

714
00:35:48.300 --> 00:35:51.700
<00:35:48.300>from <00:35:48.533>runtime <00:35:48.766>to <00:35:49.000>compile <00:35:49.233>time. <00:35:49.466>We <00:35:49.700>usually

715
00:35:51.700 --> 00:35:54.100
<00:35:51.700>win <00:35:51.875>you <00:35:52.049>can <00:35:52.225>overdo <00:35:52.399>it <00:35:52.575>you <00:35:52.750>can <00:35:52.924>overdo <00:35:53.100>anything

716
00:35:54.100 --> 00:35:57.200
<00:35:54.100>but <00:35:54.380>this <00:35:54.660>is <00:35:54.940>a <00:35:55.220>good <00:35:55.500>way

717
00:35:57.200 --> 00:36:00.200
<00:35:57.200>of <00:35:57.355>getting <00:35:57.511>things <00:35:57.666>to <00:35:57.822>be <00:35:57.977>faster, <00:35:58.133>but <00:35:58.288>you <00:35:58.444>can <00:35:58.600>only

718
00:36:00.200 --> 00:36:03.900
<00:36:00.200>move <00:36:00.339>it <00:36:00.480>to <00:36:00.620>compile <00:36:00.759>time <00:36:00.899>if <00:36:01.040>you <00:36:01.180>can <00:36:01.319>actually <00:36:01.460>completely <00:36:01.600>analyze

719
00:36:03.900 --> 00:36:06.500
<00:36:03.900>what's <00:36:04.100>going <00:36:04.300>on. <00:36:04.500>So <00:36:04.700>you <00:36:04.900>need <00:36:05.100>to <00:36:05.300>tighter

720
00:36:06.500 --> 00:36:09.400
<00:36:06.500>type <00:36:06.780>system <00:36:07.060>for <00:36:07.340>that <00:36:07.620>the <00:36:07.900>memory

721
00:36:09.400 --> 00:36:13.800
<00:36:09.400>model <00:36:09.540>formal <00:36:09.680>memory <00:36:09.820>model <00:36:09.960>so <00:36:10.100>that <00:36:10.240>we <00:36:10.380>can <00:36:10.520>do <00:36:10.660>concurrency <00:36:10.800>efficiently

722
00:36:12.800 --> 00:36:16.700
<00:36:12.800>and <00:36:13.500>sometimes <00:36:14.200>elegantly

723
00:36:16.700 --> 00:36:21.200
<00:36:16.700>it's <00:36:17.049>really <00:36:17.399>important <00:36:17.750>and <00:36:18.100>if

724
00:36:19.200 --> 00:36:23.100
<00:36:19.200>you <00:36:19.549>can't <00:36:19.899>do <00:36:20.250>decent <00:36:20.600>concurrency,

725
00:36:22.100 --> 00:36:25.800
<00:36:22.100>you're <00:36:22.380>wasting <00:36:22.660>something <00:36:22.940>like <00:36:23.220>97% <00:36:23.500>of

726
00:36:25.800 --> 00:36:28.800
<00:36:25.800>your <00:36:26.266>computer. <00:36:26.733>It's <00:36:27.200>that

727
00:36:28.800 --> 00:36:32.300
<00:36:28.800>big <00:36:29.150>and <00:36:29.500>well, <00:36:29.850>it's <00:36:30.200>it's

728
00:36:32.300 --> 00:36:35.300
<00:36:32.300>a <00:36:32.427>bit <00:36:32.554>of <00:36:32.681>a <00:36:32.809>pain <00:36:32.936>sometimes <00:36:33.063>to <00:36:33.190>write <00:36:33.318>code <00:36:33.445>that <00:36:33.572>uses <00:36:33.700>those

729
00:36:35.300 --> 00:36:38.900
<00:36:35.300>remaining <00:36:35.580>97% <00:36:35.860>of <00:36:36.140>the <00:36:36.420>computer. <00:36:36.700>But

730
00:36:38.900 --> 00:36:41.700
<00:36:38.900>once <00:36:39.180>you've <00:36:39.460>done <00:36:39.740>it <00:36:40.020>anybody <00:36:40.300>can

731
00:36:41.700 --> 00:36:44.300
<00:36:41.700>use <00:36:41.875>it. <00:36:42.049>That's <00:36:42.225>by <00:36:42.399>the <00:36:42.575>way <00:36:42.750>how <00:36:42.924>python <00:36:43.100>runs

732
00:36:44.300 --> 00:36:44.600
fast.

733
00:36:45.500 --> 00:36:46.900
<00:36:45.500>the <00:36:46.130>course <00:36:46.760>C++

734
00:36:47.600 --> 00:36:50.800
<00:36:47.600>, <00:36:47.833>so <00:36:48.066>basically <00:36:48.299>the <00:36:48.533>early <00:36:48.766>decision <00:36:49.000>for

735
00:36:52.500 --> 00:36:55.900
<00:36:52.500>making <00:36:52.733>abstraction <00:36:52.966>rather <00:36:53.200>than <00:36:53.433>build-in <00:36:53.666>facilities <00:36:53.900>is

736
00:36:55.900 --> 00:36:58.500
<00:36:55.900>again <00:36:56.133>a <00:36:56.366>win <00:36:56.600>here. <00:36:56.833>And <00:36:57.066>so <00:36:57.300>we

737
00:36:58.500 --> 00:37:01.400
<00:36:58.500>improve <00:36:58.850>type <00:36:59.200>safety <00:36:59.550>making <00:36:59.900>the

738
00:37:01.400 --> 00:37:04.500
<00:37:01.400>system <00:37:01.680>more <00:37:01.960>expressive <00:37:02.240>provide <00:37:02.520>alternatives <00:37:02.800>for

739
00:37:04.500 --> 00:37:08.200
<00:37:04.500>bad <00:37:04.700>old <00:37:04.900>ways <00:37:05.100>of <00:37:05.300>doing <00:37:05.500>things <00:37:05.700>a <00:37:05.900>range

740
00:37:08.200 --> 00:37:12.300
<00:37:08.200>for <00:37:08.355>instead <00:37:08.511>of <00:37:08.666>a <00:37:08.822>sea <00:37:08.977>style <00:37:09.133>for <00:37:09.288>Loop <00:37:09.444>algorithms <00:37:09.600>instead

741
00:37:11.300 --> 00:37:14.200
<00:37:11.300>of <00:37:11.500>a <00:37:11.700>for <00:37:11.900>Loop. <00:37:12.100>They <00:37:12.300>have <00:37:12.500>much <00:37:12.700>safer

742
00:37:14.200 --> 00:37:17.400
<00:37:14.200>and <00:37:14.399>faster <00:37:14.600>and <00:37:14.799>provide <00:37:15.000>a <00:37:15.200>formal <00:37:15.399>model <00:37:15.600>again.

743
00:37:18.300 --> 00:37:21.500
<00:37:18.300>So <00:37:18.533>the <00:37:18.766>basic <00:37:19.000>abstraction <00:37:19.233>mechanisms, <00:37:19.466>there's <00:37:19.700>functional

744
00:37:21.500 --> 00:37:25.100
<00:37:21.500>there's <00:37:21.966>classes. <00:37:22.433>There's <00:37:22.900>hierarchical

745
00:37:24.100 --> 00:37:27.100
<00:37:24.100>things <00:37:24.450>in <00:37:24.799>this <00:37:25.150>parameterized <00:37:25.500>types.

746
00:37:30.100 --> 00:37:33.500
<00:37:30.100>So <00:37:30.227>one <00:37:30.354>thing <00:37:30.481>I've <00:37:30.609>been <00:37:30.736>working <00:37:30.863>with <00:37:30.990>since <00:37:31.118>the <00:37:31.245>earliest <00:37:31.372>days <00:37:31.500>is

747
00:37:33.500 --> 00:37:36.900
<00:37:33.500>to <00:37:33.675>get <00:37:33.850>generic <00:37:34.025>programming <00:37:34.200>and <00:37:34.375>to <00:37:34.550>get <00:37:34.725>generic <00:37:34.900>programming

748
00:37:36.900 --> 00:37:39.400
<00:37:36.900>the <00:37:37.180>way <00:37:37.460>I <00:37:37.740>think <00:37:38.020>it <00:37:38.300>was

749
00:37:39.400 --> 00:37:39.700
<00:37:39.400>supposed <00:37:39.535>to <00:37:39.670>be.

750
00:37:41.900 --> 00:37:44.400
<00:37:41.900>I <00:37:42.055>first <00:37:42.211>thought <00:37:42.366>it <00:37:42.522>could <00:37:42.677>be <00:37:42.833>done <00:37:42.988>on <00:37:43.144>the <00:37:43.300>macros.

751
00:37:44.400 --> 00:37:47.500
<00:37:44.400>I <00:37:44.680>was <00:37:44.960>very <00:37:45.240>wrong <00:37:45.520>two <00:37:45.800>guys

752
00:37:47.500 --> 00:37:50.600
<00:37:47.500>sharing <00:37:47.640>in <00:37:47.780>office <00:37:47.920>can <00:37:48.060>write <00:37:48.200>code <00:37:48.340>and <00:37:48.480>use <00:37:48.620>code <00:37:48.760>that's <00:37:48.900>written

753
00:37:50.600 --> 00:37:53.300
<00:37:50.600>with <00:37:50.775>macros. <00:37:50.950>If <00:37:51.125>you <00:37:51.299>scale <00:37:51.475>further <00:37:51.650>than <00:37:51.825>that <00:37:52.000>you

754
00:37:53.300 --> 00:37:56.400
<00:37:53.300>get <00:37:53.475>trouble <00:37:53.650>and <00:37:53.825>sometimes <00:37:54.000>you <00:37:54.175>don't <00:37:54.350>find <00:37:54.525>the <00:37:54.700>trouble

755
00:37:56.400 --> 00:37:56.900
<00:37:56.400>for <00:37:56.850>years.

756
00:37:57.700 --> 00:38:00.300
<00:37:57.700>So <00:37:57.980>basically <00:37:58.259>generic <00:37:58.540>programming <00:37:58.819>should <00:37:59.100>be

757
00:38:00.300 --> 00:38:03.100
<00:38:00.300>simple <00:38:00.580>safe <00:38:00.860>flexible <00:38:01.140>and <00:38:01.420>faster <00:38:01.700>than

758
00:38:03.100 --> 00:38:06.200
<00:38:03.100>anything <00:38:03.299>else <00:38:03.500>because <00:38:03.700>otherwise <00:38:03.900>people <00:38:04.100>start <00:38:04.299>fiddling <00:38:04.500>with

759
00:38:06.200 --> 00:38:09.400
<00:38:06.200>low <00:38:06.375>level <00:38:06.549>stuff <00:38:06.725>and <00:38:06.899>they <00:38:07.075>get <00:38:07.250>complicated <00:38:07.424>code <00:38:07.600>and

760
00:38:09.400 --> 00:38:10.500
<00:38:09.400>they <00:38:09.895>get <00:38:10.390>bugs.

761
00:38:11.100 --> 00:38:14.800
<00:38:11.100>So <00:38:11.275>simple <00:38:11.450>abstractions <00:38:11.625>there. <00:38:11.799>There's <00:38:11.975>a <00:38:12.150>vector <00:38:12.325>it's <00:38:12.500>it's

762
00:38:14.800 --> 00:38:17.100
<00:38:14.800>a <00:38:15.080>vector <00:38:15.360>of <00:38:15.640>some <00:38:15.920>integers <00:38:16.200>and

763
00:38:17.100 --> 00:38:20.500
<00:38:17.100>there's <00:38:17.299>a <00:38:17.500>vector <00:38:17.700>of <00:38:17.900>some <00:38:18.100>c <00:38:18.299>c <00:38:18.500>style

764
00:38:20.500 --> 00:38:23.500
<00:38:20.500>strings <00:38:20.733>notice. <00:38:20.966>I'm <00:38:21.200>deducing <00:38:21.433>the <00:38:21.666>element <00:38:21.900>type

765
00:38:23.500 --> 00:38:26.700
<00:38:23.500>of <00:38:23.733>the <00:38:23.966>vector <00:38:24.200>from <00:38:24.433>the <00:38:24.666>initializer. <00:38:24.900>There's

766
00:38:26.700 --> 00:38:30.500
<00:38:26.700>a <00:38:26.875>lot <00:38:27.049>of <00:38:27.225>type <00:38:27.399>deduction <00:38:27.575>in <00:38:27.750>modern <00:38:27.924>c++, <00:38:28.100>again,

767
00:38:29.500 --> 00:38:32.400
<00:38:29.500>of <00:38:29.780>course <00:38:30.060>that <00:38:30.340>wasn't <00:38:30.620>there <00:38:30.900>in

768
00:38:32.400 --> 00:38:35.500
<00:38:32.400>the <00:38:32.680>ages, <00:38:32.960>but <00:38:33.240>we <00:38:33.520>improve <00:38:33.800>we

769
00:38:35.500 --> 00:38:38.500
<00:38:35.500>learn <00:38:35.700>that <00:38:35.900>riding <00:38:36.100>a <00:38:36.300>lot <00:38:36.500>of <00:38:36.700>stuff <00:38:36.900>means

770
00:38:38.500 --> 00:38:41.400
<00:38:38.500>we <00:38:38.733>have <00:38:38.966>many <00:38:39.200>opportunities <00:38:39.433>for <00:38:39.666>making <00:38:39.900>mistakes.

771
00:38:41.400 --> 00:38:44.500
<00:38:41.400>So <00:38:41.527>if <00:38:41.654>we <00:38:41.781>can <00:38:41.909>get <00:38:42.036>the <00:38:42.163>compiler <00:38:42.290>to <00:38:42.418>do <00:38:42.545>the <00:38:42.672>reduction <00:38:42.800>for

772
00:38:44.500 --> 00:38:47.600
<00:38:44.500>us <00:38:44.733>we <00:38:44.966>win <00:38:45.200>so <00:38:45.433>there's <00:38:45.666>these <00:38:45.900>style

773
00:38:47.600 --> 00:38:50.600
<00:38:47.600>use <00:38:47.799>of <00:38:48.000>those <00:38:48.200>things <00:38:48.400>Q <00:38:48.600>sort. <00:38:48.799>I <00:38:49.000>always

774
00:38:50.600 --> 00:38:53.200
<00:38:50.600>get <00:38:50.799>them <00:38:51.000>wrong, <00:38:51.200>but <00:38:51.400>that's <00:38:51.600>what <00:38:51.799>they <00:38:52.000>are

775
00:38:53.200 --> 00:38:56.400
<00:38:53.200>and <00:38:53.399>so <00:38:53.600>down <00:38:53.799>there <00:38:54.000>salty <00:38:54.200>eye <00:38:54.399>is <00:38:54.600>the

776
00:38:56.400 --> 00:38:59.400
<00:38:56.400>way <00:38:56.540>you <00:38:56.680>can <00:38:56.820>do <00:38:56.960>it <00:38:57.100>and <00:38:57.240>see <00:38:57.380>plus <00:38:57.520>plus <00:38:57.660>you <00:38:57.800>sort

777
00:38:59.400 --> 00:39:02.700
<00:38:59.400>the <00:38:59.750>Victor. <00:39:00.100>It <00:39:00.450>sort <00:39:00.800>can

778
00:39:02.700 --> 00:39:06.400
<00:39:02.700>sort <00:39:02.933>anything <00:39:03.166>that <00:39:03.399>is <00:39:03.633>horrible. <00:39:03.866>Now, <00:39:04.100>there's

779
00:39:05.400 --> 00:39:08.300
<00:39:05.400>also <00:39:05.680>the <00:39:05.960>old <00:39:06.240>type <00:39:06.520>the <00:39:06.800>old

780
00:39:08.300 --> 00:39:10.900
<00:39:08.300>code <00:39:08.455>that <00:39:08.611>has <00:39:08.766>to <00:39:08.922>fit <00:39:09.077>in. <00:39:09.233>So, <00:39:09.388>how <00:39:09.544>do <00:39:09.700>we

781
00:39:11.100 --> 00:39:14.400
<00:39:11.100>sort <00:39:11.333>of <00:39:11.566>a <00:39:11.799>set <00:39:12.033>of <00:39:12.266>sea <00:39:12.500>style

782
00:39:14.400 --> 00:39:14.800
strings

783
00:39:15.500 --> 00:39:18.700
<00:39:15.500>for <00:39:15.627>compatibility <00:39:15.754>we <00:39:15.881>have <00:39:16.009>to <00:39:16.136>be <00:39:16.263>able <00:39:16.390>to <00:39:16.518>do <00:39:16.645>it <00:39:16.772>but <00:39:16.900>sea

784
00:39:18.700 --> 00:39:21.500
<00:39:18.700>style <00:39:18.933>strings <00:39:19.166>doesn't <00:39:19.399>behave <00:39:19.633>a <00:39:19.866>reasonably <00:39:20.100>if

785
00:39:21.500 --> 00:39:24.500
<00:39:21.500>you <00:39:21.700>compare <00:39:21.900>them <00:39:22.100>with <00:39:22.300>equals <00:39:22.500>on <00:39:22.700>or <00:39:22.900>less

786
00:39:24.500 --> 00:39:27.800
<00:39:24.500>than <00:39:24.700>you <00:39:24.900>are <00:39:25.100>comparing <00:39:25.300>the <00:39:25.500>addresses <00:39:25.700>of <00:39:25.900>his

787
00:39:27.800 --> 00:39:31.200
<00:39:27.800>stuff <00:39:28.000>not <00:39:28.200>the <00:39:28.400>value <00:39:28.600>of <00:39:28.800>the <00:39:29.000>of <00:39:29.200>the

788
00:39:30.200 --> 00:39:33.900
<00:39:30.200>string <00:39:30.399>and <00:39:30.600>so <00:39:30.799>you <00:39:31.000>can <00:39:31.200>just <00:39:31.399>add <00:39:31.600>the

789
00:39:33.900 --> 00:39:36.300
<00:39:33.900>thing <00:39:34.366>that <00:39:34.833>gives <00:39:35.300>you

790
00:39:36.300 --> 00:39:39.600
<00:39:36.300>the <00:39:36.766>proper <00:39:37.233>compassion <00:39:37.700>and

791
00:39:39.600 --> 00:39:42.800
<00:39:39.600>that's <00:39:39.833>that's <00:39:40.066>a <00:39:40.299>Lambda <00:39:40.533>it <00:39:40.766>inlines <00:39:41.000>beautifully.

792
00:39:42.800 --> 00:39:45.500
<00:39:42.800>So <00:39:43.033>it <00:39:43.266>runs <00:39:43.500>faster <00:39:43.733>than <00:39:43.966>the <00:39:44.200>Sea

793
00:39:45.500 --> 00:39:49.600
<00:39:45.500>of <00:39:45.733>course <00:39:45.966>because <00:39:46.200>there's <00:39:46.433>more <00:39:46.666>more <00:39:46.900>information

794
00:39:48.600 --> 00:39:50.700
<00:39:48.600>for <00:39:49.299>the <00:39:50.000>compiler.

795
00:39:51.500 --> 00:39:52.600
<00:39:51.500>and <00:39:52.490>so

796
00:39:53.700 --> 00:39:56.800
<00:39:53.700>in <00:39:54.166>C++ <00:39:54.633>98 <00:39:55.100>we

797
00:39:56.800 --> 00:39:59.900
<00:39:56.800>got <00:39:57.150>Alex <00:39:57.500>stefanovs <00:39:57.850>STL <00:39:58.200>which

798
00:39:59.900 --> 00:40:02.500
<00:39:59.900>was <00:40:00.180>absolutely <00:40:00.460>great <00:40:00.740>and <00:40:01.020>very <00:40:01.300>general

799
00:40:02.500 --> 00:40:05.300
<00:40:02.500>but <00:40:02.700>it <00:40:02.900>worked <00:40:03.100>with <00:40:03.300>unconstrained <00:40:03.500>templates. <00:40:03.700>So <00:40:03.900>up

800
00:40:05.300 --> 00:40:08.600
<00:40:05.300>there <00:40:05.427>says <00:40:05.554>I <00:40:05.681>want <00:40:05.809>to <00:40:05.936>type <00:40:06.063>which <00:40:06.190>I <00:40:06.318>call <00:40:06.445>random <00:40:06.572>access <00:40:06.700>iterator

801
00:40:08.600 --> 00:40:11.300
<00:40:08.600>and <00:40:08.755>I <00:40:08.911>take <00:40:09.066>two <00:40:09.222>of <00:40:09.377>those <00:40:09.533>and <00:40:09.688>I <00:40:09.844>can <00:40:10.000>sort

802
00:40:11.300 --> 00:40:11.700
<00:40:11.300>the <00:40:11.660>result.

803
00:40:12.600 --> 00:40:15.800
<00:40:12.600>That's <00:40:12.950>good <00:40:13.299>sufficient <00:40:13.650>type <00:40:14.000>safe,

804
00:40:15.200 --> 00:40:18.900
<00:40:15.200>etc. <00:40:15.549>Etc. <00:40:15.899>However, <00:40:16.250>it's <00:40:16.600>a

805
00:40:18.900 --> 00:40:21.800
<00:40:18.900>pain <00:40:19.040>in <00:40:19.180>the <00:40:19.320>neck <00:40:19.460>of <00:40:19.600>having <00:40:19.740>to <00:40:19.880>write <00:40:20.020>things <00:40:20.160>like <00:40:20.300>salt

806
00:40:21.800 --> 00:40:24.100
<00:40:21.800>beginning <00:40:21.975>of <00:40:22.150>something <00:40:22.325>and <00:40:22.500>then <00:40:22.675>the <00:40:22.850>end <00:40:23.025>of <00:40:23.200>something

807
00:40:24.100 --> 00:40:25.700
<00:40:24.100>I <00:40:24.450>really <00:40:24.799>want <00:40:25.150>to <00:40:25.500>say.

808
00:40:27.300 --> 00:40:31.000
<00:40:27.300>Say <00:40:27.533>whoops. <00:40:27.766>This <00:40:28.000>doesn't <00:40:28.233>reflect <00:40:28.466>sort <00:40:28.700>of

809
00:40:30.000 --> 00:40:31.500
vector.

810
00:40:32.000 --> 00:40:32.500
fine

811
00:40:33.300 --> 00:40:36.200
<00:40:33.300>and <00:40:33.407>so <00:40:33.515>what <00:40:33.623>I <00:40:33.730>can <00:40:33.838>do <00:40:33.946>is <00:40:34.053>I <00:40:34.161>can <00:40:34.269>Define <00:40:34.376>I <00:40:34.484>can <00:40:34.592>say <00:40:34.700>I

812
00:40:36.200 --> 00:40:37.600
<00:40:36.200>want <00:40:36.515>to <00:40:36.830>sortable <00:40:37.145>range <00:40:37.460>of

813
00:40:39.600 --> 00:40:42.400
<00:40:39.600>sick <00:40:39.775>called <00:40:39.950>sequence <00:40:40.125>sick <00:40:40.299>and <00:40:40.475>then <00:40:40.650>I <00:40:40.825>want <00:40:41.000>to

814
00:40:42.400 --> 00:40:45.400
<00:40:42.400>sort <00:40:42.555>that <00:40:42.711>and <00:40:42.866>actually <00:40:43.022>I <00:40:43.177>use <00:40:43.333>the <00:40:43.488>old <00:40:43.644>code <00:40:43.800>that

815
00:40:45.400 --> 00:40:48.500
<00:40:45.400>has <00:40:45.555>been <00:40:45.711>there <00:40:45.866>for <00:40:46.022>a <00:40:46.177>couple <00:40:46.333>of <00:40:46.488>decades <00:40:46.644>or <00:40:46.800>tested

816
00:40:48.500 --> 00:40:51.500
<00:40:48.500>attuned <00:40:48.780>to <00:40:49.060>implement <00:40:49.340>my <00:40:49.620>new <00:40:49.900>function

817
00:40:51.500 --> 00:40:54.100
<00:40:51.500>there. <00:40:51.655>And <00:40:51.811>now <00:40:51.966>I <00:40:52.122>can <00:40:52.277>say <00:40:52.433>sort <00:40:52.588>of <00:40:52.744>a <00:40:52.900>vector

818
00:40:54.100 --> 00:40:57.000
<00:40:54.100>great. <00:40:54.333>It <00:40:54.566>saves <00:40:54.799>me <00:40:55.033>a <00:40:55.266>lot <00:40:55.500>of

819
00:40:57.600 --> 00:41:00.800
<00:40:57.600>typing <00:40:57.833>a <00:40:58.066>lot <00:40:58.299>of <00:40:58.533>potential <00:40:58.766>typing <00:40:59.000>mistakes

820
00:41:00.800 --> 00:41:03.600
<00:41:00.800>and <00:41:00.975>such <00:41:01.150>and <00:41:01.325>then <00:41:01.500>I <00:41:01.675>try <00:41:01.850>to <00:41:02.025>sort <00:41:02.200>the

821
00:41:03.600 --> 00:41:07.700
<00:41:03.600>list <00:41:03.799>but <00:41:04.000>that <00:41:04.200>will <00:41:04.400>not <00:41:04.600>work. <00:41:04.799>I <00:41:05.000>set

822
00:41:07.700 --> 00:41:10.400
<00:41:07.700>my <00:41:07.875>sword <00:41:08.049>should <00:41:08.225>work <00:41:08.399>only <00:41:08.575>for <00:41:08.750>things <00:41:08.924>that <00:41:09.100>was

823
00:41:10.400 --> 00:41:13.800
<00:41:10.400>horrible. <00:41:10.575>And <00:41:10.750>if <00:41:10.925>you <00:41:11.100>read <00:41:11.275>the <00:41:11.450>C++ <00:41:11.625>standard <00:41:11.800>I

824
00:41:13.800 --> 00:41:16.500
<00:41:13.800>have <00:41:13.975>so <00:41:14.150>standards <00:41:14.325>is <00:41:14.500>that <00:41:14.675>you <00:41:14.850>can't <00:41:15.025>sort <00:41:15.200>lists

825
00:41:16.500 --> 00:41:19.300
<00:41:16.500>because <00:41:16.733>to <00:41:16.966>be <00:41:17.200>sortable. <00:41:17.433>You <00:41:17.666>have <00:41:17.900>to

826
00:41:19.300 --> 00:41:21.500
<00:41:19.300>have <00:41:20.000>a <00:41:20.700>range.

827
00:41:22.400 --> 00:41:25.100
<00:41:22.400>And <00:41:22.575>it <00:41:22.750>has <00:41:22.925>to <00:41:23.100>be <00:41:23.275>random <00:41:23.450>access <00:41:23.625>offers <00:41:23.800>a

828
00:41:25.100 --> 00:41:28.400
<00:41:25.100>random <00:41:25.240>access <00:41:25.380>and <00:41:25.520>you <00:41:25.660>have <00:41:25.799>to <00:41:25.940>have <00:41:26.080>a <00:41:26.220>lesson <00:41:26.360>operator. <00:41:26.500>This

829
00:41:28.400 --> 00:41:31.100
<00:41:28.400>is <00:41:28.516>true <00:41:28.633>for <00:41:28.750>a <00:41:28.866>vector. <00:41:28.983>It <00:41:29.100>is <00:41:29.216>not <00:41:29.333>true <00:41:29.450>for <00:41:29.566>a <00:41:29.683>list <00:41:29.800>because

830
00:41:31.100 --> 00:41:32.600
<00:41:31.100>it <00:41:31.437>doesn't <00:41:31.775>have <00:41:32.112>Random <00:41:32.450>Access.

831
00:41:33.200 --> 00:41:36.500
<00:41:33.200>So <00:41:33.399>if <00:41:33.600>you <00:41:33.799>want <00:41:34.000>to <00:41:34.200>do <00:41:34.399>that, <00:41:34.600>you

832
00:41:36.500 --> 00:41:37.200
<00:41:36.500>can <00:41:36.657>you <00:41:36.815>can <00:41:36.972>do <00:41:37.129>it.

833
00:41:39.600 --> 00:41:39.800
then

834
00:41:41.900 --> 00:41:44.400
<00:41:41.900>I'm <00:41:42.250>showing <00:41:42.600>something <00:41:42.950>else <00:41:43.300>here.

835
00:41:44.400 --> 00:41:47.000
<00:41:44.400>Basically <00:41:44.750>again, <00:41:45.100>this <00:41:45.450>was <00:41:45.800>my

836
00:41:47.300 --> 00:41:50.800
<00:41:47.300>point. <00:41:47.440>You <00:41:47.580>have <00:41:47.720>to <00:41:47.860>be <00:41:48.000>able <00:41:48.140>to <00:41:48.280>reflexible <00:41:48.420>and <00:41:48.560>you <00:41:48.700>so

837
00:41:50.800 --> 00:41:53.700
<00:41:50.800>you <00:41:51.000>can't <00:41:51.200>just <00:41:51.400>sort <00:41:51.600>with <00:41:51.800>less <00:41:52.000>than <00:41:52.200>for

838
00:41:53.700 --> 00:41:56.600
<00:41:53.700>things <00:41:53.839>like <00:41:53.980>sea <00:41:54.120>style <00:41:54.259>strings <00:41:54.399>and <00:41:54.540>a <00:41:54.680>lot <00:41:54.819>of <00:41:54.960>our <00:41:55.100>records

839
00:41:56.600 --> 00:41:59.200
<00:41:56.600>and <00:41:56.755>such. <00:41:56.911>That's <00:41:57.066>not <00:41:57.222>what <00:41:57.377>we <00:41:57.533>want <00:41:57.688>so <00:41:57.844>we <00:41:58.000>can

840
00:41:59.200 --> 00:42:02.500
<00:41:59.200>have <00:41:59.433>a <00:41:59.666>predicate <00:41:59.899>that <00:42:00.133>we <00:42:00.366>use <00:42:00.600>for

841
00:42:02.500 --> 00:42:05.500
<00:42:02.500>the <00:42:02.700>compassion <00:42:02.900>criteria <00:42:03.100>and <00:42:03.300>we <00:42:03.500>can <00:42:03.700>specify <00:42:03.900>that

842
00:42:05.500 --> 00:42:08.500
<00:42:05.500>One <00:42:05.700>Direction <00:42:05.900>Random <00:42:06.100>Access <00:42:06.300>range <00:42:06.500>and <00:42:06.700>a <00:42:06.900>binary

843
00:42:08.500 --> 00:42:11.800
<00:42:08.500>predicate <00:42:08.675>of <00:42:08.850>such <00:42:09.025>it's <00:42:09.200>all <00:42:09.375>understand <00:42:09.550>that <00:42:09.725>and <00:42:09.900>we

844
00:42:11.800 --> 00:42:14.300
<00:42:11.800>can <00:42:11.975>we <00:42:12.150>can <00:42:12.325>go <00:42:12.500>on <00:42:12.675>with <00:42:12.850>it. <00:42:13.025>This <00:42:13.200>may

845
00:42:14.300 --> 00:42:17.900
<00:42:14.300>look <00:42:14.416>a <00:42:14.533>little <00:42:14.650>bit <00:42:14.766>strange <00:42:14.883>the <00:42:15.000>first <00:42:15.116>time <00:42:15.233>you <00:42:15.350>see <00:42:15.466>it, <00:42:15.583>but <00:42:15.700>basically

846
00:42:17.900 --> 00:42:20.900
<00:42:17.900>this <00:42:18.133>is <00:42:18.366>for <00:42:18.600>generic <00:42:18.833>programming <00:42:19.066>exactly <00:42:19.300>what

847
00:42:20.900 --> 00:42:24.100
<00:42:20.900>we <00:42:21.055>learned <00:42:21.211>when <00:42:21.366>we <00:42:21.522>first <00:42:21.677>learn <00:42:21.833>to <00:42:21.988>write <00:42:22.144>functions <00:42:22.300>on

848
00:42:23.100 --> 00:42:27.900
<00:42:23.100>about <00:42:23.333>day <00:42:23.566>one <00:42:23.799>of <00:42:24.033>our <00:42:24.266>of <00:42:24.500>our

849
00:42:27.900 --> 00:42:30.400
<00:42:27.900>programming <00:42:28.180>course <00:42:28.460>that <00:42:28.740>is <00:42:29.020>you <00:42:29.300>have

850
00:42:30.400 --> 00:42:34.700
<00:42:30.400>a <00:42:30.680>function <00:42:30.960>that <00:42:31.240>takes <00:42:31.520>something <00:42:31.800>of

851
00:42:33.700 --> 00:42:36.500
<00:42:33.700>a <00:42:34.166>specific <00:42:34.633>argument <00:42:35.100>types

852
00:42:36.500 --> 00:42:40.000
<00:42:36.500>and <00:42:36.700>do <00:42:36.900>something <00:42:37.100>with <00:42:37.300>it. <00:42:37.500>That's <00:42:37.700>fine. <00:42:37.900>The

853
00:42:39.500 --> 00:42:41.400
<00:42:39.500>concepts <00:42:39.966>are <00:42:40.433>not <00:42:40.900>really

854
00:42:41.900 --> 00:42:44.600
<00:42:41.900>Sort <00:42:42.366>of <00:42:42.833>rocket <00:42:43.300>science

855
00:42:44.600 --> 00:42:47.700
<00:42:44.600>here. <00:42:44.880>I'm <00:42:45.160>defining <00:42:45.440>the <00:42:45.720>sortable <00:42:46.000>range.

856
00:42:47.700 --> 00:42:50.200
<00:42:47.700>I <00:42:47.899>use <00:42:48.100>two <00:42:48.299>slides <00:42:48.500>back <00:42:48.700>and <00:42:48.899>I <00:42:49.100>want

857
00:42:50.200 --> 00:42:53.900
<00:42:50.200>to <00:42:50.399>sortable <00:42:50.600>range <00:42:50.799>in <00:42:51.000>a <00:42:51.200>Range <00:42:51.399>a <00:42:51.600>type

858
00:42:53.900 --> 00:42:56.800
<00:42:53.900>is <00:42:54.040>a <00:42:54.180>sort <00:42:54.320>of <00:42:54.460>a <00:42:54.600>range <00:42:54.740>if <00:42:54.880>it <00:42:55.020>has <00:42:55.160>access <00:42:55.300>have

859
00:42:56.800 --> 00:42:59.300
<00:42:56.800>random <00:42:57.150>access <00:42:57.500>and <00:42:57.850>if <00:42:58.200>it's

860
00:42:59.300 --> 00:43:01.100
<00:42:59.300>iterators <00:42:59.580>can <00:42:59.860>be <00:43:00.140>used <00:43:00.420>to <00:43:00.700>sort.

861
00:43:02.200 --> 00:43:04.500
<00:43:02.200>that's <00:43:02.480>basically <00:43:02.759>pointing <00:43:03.040>to <00:43:03.319>elements <00:43:03.600>and

862
00:43:05.400 --> 00:43:09.000
<00:43:05.400>yeah, <00:43:05.633>those <00:43:05.866>two <00:43:06.100>are <00:43:06.333>the <00:43:06.566>random <00:43:06.800>access

863
00:43:08.300 --> 00:43:11.600
<00:43:08.300>and <00:43:08.500>so <00:43:08.700>Audible <00:43:08.900>and <00:43:09.100>iterator <00:43:09.300>understand <00:43:09.500>the <00:43:09.700>library.

864
00:43:12.400 --> 00:43:16.200
<00:43:12.400>and <00:43:12.575>so <00:43:12.750>now <00:43:12.925>I <00:43:13.100>can <00:43:13.275>get <00:43:13.450>my <00:43:13.625>list <00:43:13.800>my

865
00:43:17.300 --> 00:43:21.000
<00:43:17.300>List <00:43:17.440>sought <00:43:17.580>if <00:43:17.720>I <00:43:17.860>wanted <00:43:18.000>it, <00:43:18.140>I <00:43:18.280>have <00:43:18.420>the <00:43:18.560>standard <00:43:18.700>one

866
00:43:20.100 --> 00:43:23.800
<00:43:20.100>from <00:43:20.299>the <00:43:20.500>standard <00:43:20.700>and <00:43:20.900>I <00:43:21.100>Define <00:43:21.299>four <00:43:21.500>range

867
00:43:23.800 --> 00:43:26.200
<00:43:23.800>and <00:43:24.080>I <00:43:24.360>do <00:43:24.640>that <00:43:24.920>simply <00:43:25.200>by

868
00:43:26.200 --> 00:43:29.600
<00:43:26.200>copying <00:43:26.480>stuff <00:43:26.759>into <00:43:27.040>the <00:43:27.319>vector <00:43:27.600>sorting

869
00:43:29.600 --> 00:43:32.800
<00:43:29.600>it <00:43:29.775>and <00:43:29.950>copying <00:43:30.125>the <00:43:30.299>elements <00:43:30.475>back <00:43:30.650>again. <00:43:30.825>That's <00:43:31.000>the

870
00:43:32.800 --> 00:43:35.200
<00:43:32.800>simplest <00:43:33.033>algorithm. <00:43:33.266>I <00:43:33.500>know <00:43:33.733>there <00:43:33.966>are <00:43:34.200>more

871
00:43:35.200 --> 00:43:38.200
<00:43:35.200>clear <00:43:35.327>via <00:43:35.454>algorithms. <00:43:35.581>You <00:43:35.709>can <00:43:35.836>look <00:43:35.963>them <00:43:36.090>up <00:43:36.218>if <00:43:36.345>you're <00:43:36.472>interested <00:43:36.600>in

872
00:43:38.200 --> 00:43:41.300
<00:43:38.200>sorting <00:43:38.339>but <00:43:38.480>that <00:43:38.620>one <00:43:38.759>fits <00:43:38.899>on <00:43:39.040>a <00:43:39.180>slide <00:43:39.319>and <00:43:39.460>now <00:43:39.600>I

873
00:43:41.300 --> 00:43:44.700
<00:43:41.300>can <00:43:41.533>sort <00:43:41.766>both <00:43:42.000>of <00:43:42.233>them <00:43:42.466>lecture <00:43:42.700>uses

874
00:43:44.700 --> 00:43:47.400
<00:43:44.700>the <00:43:44.933>vector <00:43:45.166>the <00:43:45.399>swordable <00:43:45.633>thing <00:43:45.866>and <00:43:46.100>the

875
00:43:47.400 --> 00:43:50.600
<00:43:47.400>list <00:43:47.750>uses <00:43:48.100>the <00:43:48.450>sortable <00:43:48.800>Ford

876
00:43:50.600 --> 00:43:53.600
<00:43:50.600>Range <00:43:50.799>because <00:43:51.000>it <00:43:51.200>isn't <00:43:51.400>a <00:43:51.600>random <00:43:51.799>access <00:43:52.000>range

877
00:43:53.600 --> 00:43:54.600
<00:43:53.600>so <00:43:53.825>we <00:43:54.049>couldn't <00:43:54.275>go <00:43:54.500>there.

878
00:43:55.500 --> 00:43:58.100
<00:43:55.500>So <00:43:55.966>again <00:43:56.433>reminding <00:43:56.900>you

879
00:43:58.100 --> 00:44:01.400
<00:43:58.100>that <00:43:58.333>a <00:43:58.566>language <00:43:58.799>is <00:43:59.033>just <00:43:59.266>part <00:43:59.500>of

880
00:44:01.400 --> 00:44:04.700
<00:44:01.400>a <00:44:01.680>developers <00:44:01.960>toolbox <00:44:02.240>around <00:44:02.520>a <00:44:02.800>language

881
00:44:04.700 --> 00:44:07.700
<00:44:04.700>is <00:44:04.899>a <00:44:05.100>set <00:44:05.299>of <00:44:05.500>tools <00:44:05.700>and <00:44:05.899>community <00:44:06.100>and

882
00:44:07.700 --> 00:44:10.500
<00:44:07.700>things <00:44:07.899>like <00:44:08.100>that <00:44:08.299>that <00:44:08.500>that's <00:44:08.700>that's <00:44:08.899>really <00:44:09.100>quite

883
00:44:10.500 --> 00:44:12.800
<00:44:10.500>important <00:44:10.675>for <00:44:10.850>when <00:44:11.025>we <00:44:11.200>want <00:44:11.375>to <00:44:11.550>get <00:44:11.725>work <00:44:11.900>done.

884
00:44:13.600 --> 00:44:16.800
<00:44:13.600>Oh, <00:44:13.799>this <00:44:14.000>is <00:44:14.200>a <00:44:14.400>kind <00:44:14.600>of <00:44:14.799>boasting <00:44:15.000>slide.

885
00:44:16.800 --> 00:44:20.600
<00:44:16.800>It's <00:44:17.000>pointing <00:44:17.200>out <00:44:17.400>that <00:44:17.600>most <00:44:17.800>C++ <00:44:18.000>invisible. <00:44:18.200>I

886
00:44:19.600 --> 00:44:22.800
<00:44:19.600>sometimes <00:44:19.880>hear <00:44:20.160>that <00:44:20.440>nobody <00:44:20.720>uses <00:44:21.000>C++

887
00:44:22.800 --> 00:44:26.100
<00:44:22.800>anymore <00:44:23.266>and <00:44:23.733>that <00:44:24.200>I

888
00:44:25.100 --> 00:44:28.400
<00:44:25.100>hear <00:44:25.275>from <00:44:25.450>people <00:44:25.625>who <00:44:25.799>is <00:44:25.975>using <00:44:26.150>it <00:44:26.325>every <00:44:26.500>day

889
00:44:28.400 --> 00:44:31.100
<00:44:28.400>because <00:44:28.633>they <00:44:28.866>can't <00:44:29.100>see <00:44:29.333>it. <00:44:29.566>It <00:44:29.800>has

890
00:44:31.100 --> 00:44:34.800
<00:44:31.100>been <00:44:31.333>put <00:44:31.566>down <00:44:31.799>into <00:44:32.033>the <00:44:32.266>lower <00:44:32.500>levels

891
00:44:34.800 --> 00:44:37.800
<00:44:34.800>of <00:44:34.955>their <00:44:35.111>systems. <00:44:35.266>What <00:44:35.422>does <00:44:35.577>all <00:44:35.733>the <00:44:35.888>hard <00:44:36.044>work <00:44:36.200>and

892
00:44:37.800 --> 00:44:41.400
<00:44:37.800>then <00:44:38.000>people <00:44:38.200>are <00:44:38.400>forgotten <00:44:38.600>about <00:44:38.800>it? <00:44:39.000>Okay, <00:44:39.200>sorry

893
00:44:40.400 --> 00:44:45.000
<00:44:40.400>for <00:44:40.866>boosting <00:44:41.333>code <00:44:41.800>organization

894
00:44:44.500 --> 00:44:47.600
<00:44:44.500>one <00:44:45.900>of

895
00:44:47.600 --> 00:44:50.200
<00:44:47.600>the <00:44:47.833>problems <00:44:48.066>with <00:44:48.299>getting <00:44:48.533>the <00:44:48.766>code. <00:44:49.000>So

896
00:44:50.200 --> 00:44:53.300
<00:44:50.200>expressive <00:44:50.433>and <00:44:50.666>having <00:44:50.899>the <00:44:51.133>compiler <00:44:51.366>know <00:44:51.600>so

897
00:44:53.300 --> 00:44:56.600
<00:44:53.300>much <00:44:53.440>about <00:44:53.580>it <00:44:53.720>is <00:44:53.860>it <00:44:54.000>takes <00:44:54.140>time <00:44:54.280>to <00:44:54.420>combine? <00:44:54.560>So <00:44:54.700>we

898
00:44:56.600 --> 00:44:56.900
<00:44:56.600>need <00:44:56.870>to

899
00:44:57.900 --> 00:44:59.000
<00:44:57.900>improve <00:44:58.890>this

900
00:44:59.800 --> 00:45:02.400
<00:44:59.800>and <00:45:00.266>in <00:45:00.733>C <00:45:01.200>we

901
00:45:02.400 --> 00:45:05.800
<00:45:02.400>started <00:45:02.540>with <00:45:02.680>these <00:45:02.820>horror <00:45:02.960>files <00:45:03.100>where <00:45:03.240>we <00:45:03.380>have <00:45:03.520>some <00:45:03.660>text <00:45:03.800>that

902
00:45:05.800 --> 00:45:09.400
<00:45:05.800>we <00:45:06.033>then <00:45:06.266>compiled <00:45:06.500>with <00:45:06.733>each <00:45:06.966>use <00:45:07.200>of

903
00:45:09.400 --> 00:45:13.900
<00:45:09.400>it <00:45:09.600>and <00:45:09.800>that <00:45:10.000>gets <00:45:10.200>rather <00:45:10.400>expensive <00:45:10.600>furthermore. <00:45:10.800>It

904
00:45:13.900 --> 00:45:16.600
<00:45:13.900>is <00:45:14.250>transitive. <00:45:14.600>So <00:45:14.950>when <00:45:15.300>I

905
00:45:16.600 --> 00:45:18.300
<00:45:16.600>include <00:45:17.299>something <00:45:18.000>and

906
00:45:19.700 --> 00:45:22.900
<00:45:19.700>Whoever <00:45:19.875>wrote <00:45:20.049>the <00:45:20.225>head. <00:45:20.399>I <00:45:20.575>include <00:45:20.750>something <00:45:20.924>and <00:45:21.100>etc.

907
00:45:22.200 --> 00:45:25.300
<00:45:22.200>Etc. <00:45:22.433>We <00:45:22.666>might <00:45:22.899>find <00:45:23.133>ourselves <00:45:23.366>with <00:45:23.600>half

908
00:45:25.300 --> 00:45:28.600
<00:45:25.300>a <00:45:25.580>million <00:45:25.860>characters <00:45:26.140>to <00:45:26.420>compile <00:45:26.700>and

909
00:45:28.600 --> 00:45:31.800
<00:45:28.600>that <00:45:28.833>slow <00:45:29.066>also, <00:45:29.299>it <00:45:29.533>gives <00:45:29.766>opportunities <00:45:30.000>for

910
00:45:31.800 --> 00:45:35.000
<00:45:31.800>bugs <00:45:31.940>to <00:45:32.080>creep <00:45:32.220>in <00:45:32.360>so <00:45:32.500>we <00:45:32.640>have <00:45:32.780>to <00:45:32.920>do <00:45:33.060>better <00:45:33.200>C++

911
00:45:34.600 --> 00:45:37.300
<00:45:34.600>20 <00:45:34.950>provides <00:45:35.299>import. <00:45:35.650>It's <00:45:36.000>not

912
00:45:37.300 --> 00:45:40.700
<00:45:37.300>transitive <00:45:37.533>import <00:45:37.766>a <00:45:38.000>import <00:45:38.233>b <00:45:38.466>means <00:45:38.700>the

913
00:45:40.700 --> 00:45:43.500
<00:45:40.700>same <00:45:40.855>as <00:45:41.011>import <00:45:41.166>be <00:45:41.322>followed <00:45:41.477>by <00:45:41.633>import <00:45:41.788>a <00:45:41.944>so <00:45:42.100>it's

914
00:45:43.500 --> 00:45:46.200
<00:45:43.500>order <00:45:43.780>independent <00:45:44.060>and <00:45:44.340>that <00:45:44.620>implies <00:45:44.900>that

915
00:45:46.200 --> 00:45:49.800
<00:45:46.200>we <00:45:46.375>can <00:45:46.549>do <00:45:46.725>much <00:45:46.899>more <00:45:47.075>compilation <00:45:47.250>once <00:45:47.424>instead <00:45:47.600>of

916
00:45:49.800 --> 00:45:52.500
<00:45:49.800>doing <00:45:50.150>it <00:45:50.500>repeatedly <00:45:50.850>it <00:45:51.200>is

917
00:45:52.500 --> 00:45:54.800
<00:45:52.500>not <00:45:52.733>going <00:45:52.966>to <00:45:53.200>be <00:45:53.433>trivial <00:45:53.666>to <00:45:53.900>introduce.

918
00:45:57.900 --> 00:46:00.300
<00:45:57.900>Contr <00:45:58.250>modules <00:45:58.600>into <00:45:58.950>your <00:45:59.300>code

919
00:46:00.300 --> 00:46:04.300
<00:46:00.300>bases <00:46:00.500>because <00:46:00.700>well <00:46:00.900>the <00:46:01.100>old <00:46:01.300>stuff <00:46:01.500>is <00:46:01.700>has

920
00:46:03.300 --> 00:46:07.200
<00:46:03.300>been <00:46:03.533>there <00:46:03.766>for <00:46:04.000>50 <00:46:04.233>years <00:46:04.466>started <00:46:04.700>to

921
00:46:07.200 --> 00:46:10.900
<00:46:07.200>a <00:46:07.375>c <00:46:07.549>and <00:46:07.725>it <00:46:07.899>takes <00:46:08.075>time. <00:46:08.250>But <00:46:08.424>but <00:46:08.600>there's

922
00:46:10.900 --> 00:46:14.000
<00:46:10.900>a <00:46:11.055>reason <00:46:11.211>to <00:46:11.366>do <00:46:11.522>it <00:46:11.677>the <00:46:11.833>code <00:46:11.988>gets <00:46:12.144>cleaner <00:46:12.300>compilations

923
00:46:13.200 --> 00:46:15.600
<00:46:13.200>get <00:46:13.666>faster <00:46:14.133>and <00:46:14.600>and

924
00:46:17.700 --> 00:46:20.000
<00:46:17.700>Let <00:46:17.855>me <00:46:18.011>first <00:46:18.166>show <00:46:18.322>you <00:46:18.477>what <00:46:18.633>a <00:46:18.788>module <00:46:18.944>looks <00:46:19.100>like

925
00:46:20.800 --> 00:46:23.600
<00:46:20.800>and <00:46:21.033>then <00:46:21.266>I'll <00:46:21.500>show <00:46:21.733>you <00:46:21.966>some <00:46:22.200>performance.

926
00:46:23.600 --> 00:46:26.700
<00:46:23.600>I <00:46:23.950>want <00:46:24.299>to <00:46:24.650>Define <00:46:25.000>and

927
00:46:26.700 --> 00:46:29.700
<00:46:26.700>more <00:46:26.980>module <00:46:27.259>called <00:46:27.540>map <00:46:27.819>printer <00:46:28.100>and

928
00:46:29.700 --> 00:46:32.400
<00:46:29.700>so <00:46:29.933>implemented. <00:46:30.166>I <00:46:30.399>am <00:46:30.633>in <00:46:30.866>Port <00:46:31.100>a

929
00:46:32.400 --> 00:46:32.900
<00:46:32.400>lot <00:46:32.625>of <00:46:32.850>stuff.

930
00:46:34.500 --> 00:46:37.800
<00:46:34.500>And <00:46:34.640>then <00:46:34.780>I <00:46:34.920>just <00:46:35.060>write <00:46:35.200>a <00:46:35.340>little <00:46:35.480>function <00:46:35.620>here. <00:46:35.760>I'm <00:46:35.900>exporting

931
00:46:37.800 --> 00:46:40.600
<00:46:37.800>just <00:46:38.000>one <00:46:38.200>function. <00:46:38.400>This <00:46:38.600>is <00:46:38.800>a <00:46:39.000>one <00:46:39.200>slide

932
00:46:40.600 --> 00:46:43.100
<00:46:40.600>example <00:46:40.950>and <00:46:41.299>that's <00:46:41.650>prints <00:46:42.000>the

933
00:46:43.100 --> 00:46:48.200
<00:46:43.100>map <00:46:43.380>using <00:46:43.660>structured <00:46:43.940>binding <00:46:44.220>and <00:46:44.500>template

934
00:46:46.200 --> 00:46:49.500
<00:46:46.200>simple <00:46:47.600>and

935
00:46:49.500 --> 00:46:52.700
<00:46:49.500>such <00:46:49.655>and <00:46:49.811>the <00:46:49.966>important <00:46:50.122>thing <00:46:50.277>is <00:46:50.433>that <00:46:50.588>if <00:46:50.744>you <00:46:50.900>import

936
00:46:52.700 --> 00:46:53.900
<00:46:52.700>the <00:46:53.240>map <00:46:53.780>printer,

937
00:46:55.100 --> 00:46:58.600
<00:46:55.100>you <00:46:55.240>do <00:46:55.380>not <00:46:55.520>get <00:46:55.660>access <00:46:55.799>to <00:46:55.940>the <00:46:56.080>io <00:46:56.220>streams <00:46:56.360>or <00:46:56.500>my

938
00:46:58.600 --> 00:47:01.300
<00:46:58.600>private <00:46:58.833>container <00:46:59.066>library <00:46:59.299>and <00:46:59.533>use <00:46:59.766>most <00:47:00.000>certainly

939
00:47:01.300 --> 00:47:04.200
<00:47:01.300>don't <00:47:01.500>owe <00:47:01.700>them <00:47:01.900>up <00:47:02.100>the <00:47:02.300>whole <00:47:02.500>namespace <00:47:02.700>SGD

940
00:47:06.600 --> 00:47:10.700
<00:47:06.600>That <00:47:06.799>kind <00:47:07.000>of <00:47:07.200>stuff <00:47:07.400>is <00:47:07.600>private <00:47:07.799>to <00:47:08.000>my

941
00:47:09.700 --> 00:47:12.200
<00:47:09.700>implementation <00:47:11.100>of

942
00:47:12.200 --> 00:47:15.900
<00:47:12.200>the <00:47:12.375>map <00:47:12.549>printer. <00:47:12.725>So <00:47:12.899>I'm <00:47:13.075>separating <00:47:13.250>the <00:47:13.424>user <00:47:13.600>interface

943
00:47:15.900 --> 00:47:18.200
<00:47:15.900>from <00:47:16.180>the <00:47:16.460>implementation <00:47:16.740>details, <00:47:17.020>which <00:47:17.300>is

944
00:47:18.200 --> 00:47:21.500
<00:47:18.200>something <00:47:18.433>that <00:47:18.666>the <00:47:18.899>include <00:47:19.133>model <00:47:19.366>simply <00:47:19.600>doesn't

945
00:47:21.500 --> 00:47:23.700
<00:47:21.500>do. <00:47:21.733>It's <00:47:21.966>one <00:47:22.200>of <00:47:22.433>the <00:47:22.666>reasons <00:47:22.900>it's

946
00:47:24.600 --> 00:47:28.200
<00:47:24.600>should <00:47:24.880>be <00:47:25.160>removed <00:47:25.440>eventually <00:47:25.720>completely. <00:47:26.000>And

947
00:47:27.200 --> 00:47:29.900
<00:47:27.200>so <00:47:27.480>I <00:47:27.759>said <00:47:28.040>it <00:47:28.319>was <00:47:28.600>faster.

948
00:47:31.600 --> 00:47:35.100
<00:47:31.600>Here's <00:47:31.727>a <00:47:31.854>little <00:47:31.981>example. <00:47:32.109>I <00:47:32.236>did <00:47:32.363>and <00:47:32.490>you <00:47:32.618>can <00:47:32.745>find <00:47:32.872>the <00:47:33.000>details

949
00:47:34.100 --> 00:47:37.400
<00:47:34.100>in <00:47:34.333>a <00:47:34.566>paper. <00:47:34.799>I <00:47:35.033>wrote <00:47:35.266>downloaded <00:47:35.500>to

950
00:47:37.400 --> 00:47:40.400
<00:47:37.400>the <00:47:37.633>wd-21 <00:47:37.866>site. <00:47:38.100>So <00:47:38.333>basically <00:47:38.566>the <00:47:38.800>little

951
00:47:40.400 --> 00:47:41.500
<00:47:40.400>program <00:47:40.895>hello <00:47:41.390>world.

952
00:47:42.800 --> 00:47:46.800
<00:47:42.800>To <00:47:42.975>do <00:47:43.150>hello <00:47:43.325>world <00:47:43.500>you <00:47:43.675>have <00:47:43.850>to <00:47:44.025>include <00:47:44.200>IO

953
00:47:46.800 --> 00:47:49.700
<00:47:46.800>streams <00:47:47.000>in <00:47:47.200>the <00:47:47.400>traditional <00:47:47.600>way <00:47:47.800>and <00:47:48.000>it <00:47:48.200>will

954
00:47:49.700 --> 00:47:52.600
<00:47:49.700>import <00:47:49.899>you <00:47:50.100>can <00:47:50.299>import <00:47:50.500>the <00:47:50.700>whole <00:47:50.899>Library. <00:47:51.100>I

955
00:47:52.600 --> 00:47:55.300
<00:47:52.600>have <00:47:52.833>a <00:47:53.066>module <00:47:53.299>called <00:47:53.533>STD <00:47:53.766>which <00:47:54.000>gives

956
00:47:55.300 --> 00:47:56.700
<00:47:55.300>you <00:47:55.615>all <00:47:55.930>of <00:47:56.245>the <00:47:56.560>library.

957
00:47:58.000 --> 00:47:58.200
and

958
00:47:59.700 --> 00:48:02.300
<00:47:59.700>it's <00:47:59.875>so <00:48:00.049>happens <00:48:00.225>that <00:48:00.399>the <00:48:00.575>one <00:48:00.750>that <00:48:00.924>gives <00:48:01.100>me

959
00:48:02.300 --> 00:48:03.000
<00:48:02.300>the <00:48:02.615>whole <00:48:02.930>thing.

960
00:48:04.200 --> 00:48:07.800
<00:48:04.200>Is <00:48:04.375>10 <00:48:04.549>times <00:48:04.725>faster <00:48:04.899>than <00:48:05.075>the <00:48:05.250>one <00:48:05.424>that <00:48:05.600>gives

961
00:48:07.800 --> 00:48:10.200
<00:48:07.800>me <00:48:07.975>a <00:48:08.150>tenth <00:48:08.325>of <00:48:08.500>it. <00:48:08.675>So <00:48:08.850>that <00:48:09.025>gives <00:48:09.200>you

962
00:48:10.200 --> 00:48:13.800
<00:48:10.200>the <00:48:10.355>idea <00:48:10.511>of <00:48:10.666>the <00:48:10.822>magnitude <00:48:10.977>of <00:48:11.133>improvements <00:48:11.288>at <00:48:11.444>compile <00:48:11.600>time

963
00:48:13.800 --> 00:48:15.000
<00:48:13.800>that <00:48:14.160>you <00:48:14.520>can <00:48:14.880>get.

964
00:48:15.700 --> 00:48:18.500
<00:48:15.700>This <00:48:15.855>is <00:48:16.011>where <00:48:16.166>the <00:48:16.322>bean <00:48:16.477>counters <00:48:16.633>get <00:48:16.788>happy <00:48:16.944>because <00:48:17.100>you

965
00:48:18.500 --> 00:48:21.400
<00:48:18.500>you <00:48:18.700>mean <00:48:18.900>I <00:48:19.100>can <00:48:19.300>retire <00:48:19.500>half <00:48:19.700>of <00:48:19.900>my

966
00:48:21.400 --> 00:48:23.900
<00:48:21.400>compiler <00:48:22.100>server <00:48:22.800>Farm.

967
00:48:24.500 --> 00:48:27.600
<00:48:24.500>And <00:48:24.733>the <00:48:24.966>answer <00:48:25.200>is <00:48:25.433>yes <00:48:25.666>another <00:48:25.900>little

968
00:48:27.600 --> 00:48:30.500
<00:48:27.600>example <00:48:27.755>here <00:48:27.911>you <00:48:28.066>of <00:48:28.222>course <00:48:28.377>don't <00:48:28.533>get <00:48:28.688>this <00:48:28.844>factor <00:48:29.000>of

969
00:48:30.500 --> 00:48:33.500
<00:48:30.500>a <00:48:30.700>hundred <00:48:30.900>all <00:48:31.100>the <00:48:31.300>time. <00:48:31.500>There's <00:48:31.700>a <00:48:31.900>mix

970
00:48:33.500 --> 00:48:36.800
<00:48:33.500>of <00:48:33.700>headers. <00:48:33.900>I <00:48:34.100>took <00:48:34.300>nine <00:48:34.500>hitters <00:48:34.700>that <00:48:34.900>were

971
00:48:36.800 --> 00:48:41.100
<00:48:36.800>the <00:48:37.000>ones <00:48:37.200>I <00:48:37.400>used <00:48:37.600>mostly <00:48:37.800>and <00:48:38.000>included <00:48:38.200>those

972
00:48:40.100 --> 00:48:43.100
<00:48:40.100>and <00:48:40.450>then <00:48:40.799>use <00:48:41.150>a <00:48:41.500>little

973
00:48:43.100 --> 00:48:46.500
<00:48:43.100>bit <00:48:43.240>from <00:48:43.380>each <00:48:43.520>of <00:48:43.660>them. <00:48:43.799>And <00:48:43.940>I <00:48:44.080>did <00:48:44.220>the <00:48:44.360>the <00:48:44.500>same

974
00:48:46.500 --> 00:48:49.900
<00:48:46.500>thing <00:48:46.700>with <00:48:46.900>import <00:48:47.100>STD. <00:48:47.300>I <00:48:47.500>only <00:48:47.700>compiled <00:48:47.900>five

975
00:48:49.900 --> 00:48:52.400
<00:48:49.900>times <00:48:50.133>faster <00:48:50.366>for <00:48:50.600>that <00:48:50.833>but <00:48:51.066>people <00:48:51.300>have

976
00:48:52.400 --> 00:48:55.700
<00:48:52.400>seen <00:48:52.680>between <00:48:52.960>0 <00:48:53.240>and <00:48:53.520>AG <00:48:53.800>times

977
00:48:55.700 --> 00:48:58.500
<00:48:55.700>Improvement <00:48:55.899>in <00:48:56.100>compile <00:48:56.299>times <00:48:56.500>from <00:48:56.700>this. <00:48:56.899>This <00:48:57.100>is

978
00:48:58.500 --> 00:49:01.800
<00:48:58.500>one <00:48:58.700>of <00:48:58.900>the <00:48:59.100>important <00:48:59.300>things <00:48:59.500>in <00:48:59.700>C++ <00:48:59.900>20

979
00:49:03.400 --> 00:49:04.100
<00:49:03.400>and <00:49:04.029>so

980
00:49:05.700 --> 00:49:09.000
<00:49:05.700>one <00:49:05.899>major <00:49:06.100>problem <00:49:06.299>is <00:49:06.500>to <00:49:06.700>educate <00:49:06.899>people <00:49:07.100>people

981
00:49:08.300 --> 00:49:11.700
<00:49:08.300>are <00:49:08.475>comfortable <00:49:08.650>with <00:49:08.825>the <00:49:09.000>old <00:49:09.175>things <00:49:09.350>they <00:49:09.525>complain <00:49:09.700>about

982
00:49:11.700 --> 00:49:14.700
<00:49:11.700>the <00:49:11.816>old <00:49:11.933>things <00:49:12.049>all <00:49:12.166>the <00:49:12.283>time, <00:49:12.399>but <00:49:12.516>they <00:49:12.633>don't <00:49:12.750>want <00:49:12.866>to <00:49:12.983>change <00:49:13.100>because

983
00:49:14.700 --> 00:49:18.200
<00:49:14.700>that's <00:49:14.899>work. <00:49:15.100>You <00:49:15.299>have <00:49:15.500>to <00:49:15.700>understand <00:49:15.899>things <00:49:16.100>and

984
00:49:17.200 --> 00:49:20.300
<00:49:17.200>there's <00:49:17.355>a <00:49:17.511>lot <00:49:17.666>of <00:49:17.822>people <00:49:17.977>who <00:49:18.133>think <00:49:18.288>that <00:49:18.444>new <00:49:18.600>stuff

985
00:49:20.300 --> 00:49:23.400
<00:49:20.300>is <00:49:20.650>inherently <00:49:21.000>complicated <00:49:21.350>and <00:49:21.700>slow.

986
00:49:24.700 --> 00:49:25.000
well

987
00:49:25.800 --> 00:49:28.400
<00:49:25.800>the <00:49:26.000>newer <00:49:26.200>things <00:49:26.400>and <00:49:26.600>C++ <00:49:26.800>are <00:49:27.000>simple <00:49:27.200>and

988
00:49:28.400 --> 00:49:31.400
<00:49:28.400>faster, <00:49:28.600>but <00:49:28.800>they <00:49:29.000>don't <00:49:29.200>believe <00:49:29.400>that <00:49:29.600>and <00:49:29.800>so

989
00:49:31.400 --> 00:49:34.200
<00:49:31.400>this <00:49:31.866>this <00:49:32.333>frustrates <00:49:32.800>me

990
00:49:34.200 --> 00:49:37.800
<00:49:34.200>and <00:49:34.339>I <00:49:34.480>try <00:49:34.620>to <00:49:34.759>do <00:49:34.899>it, <00:49:35.040>but <00:49:35.180>you <00:49:35.319>have <00:49:35.460>it <00:49:35.600>education

991
00:49:37.800 --> 00:49:39.600
<00:49:37.800>the <00:49:38.266>ultimate <00:49:38.733>aim <00:49:39.200>of

992
00:49:40.400 --> 00:49:43.500
<00:49:40.400>Language <00:49:40.555>design <00:49:40.711>is <00:49:40.866>to <00:49:41.022>improve <00:49:41.177>the <00:49:41.333>way <00:49:41.488>people <00:49:41.644>think <00:49:41.800>about

993
00:49:43.500 --> 00:49:46.400
<00:49:43.500>their <00:49:43.780>systems <00:49:44.060>and <00:49:44.340>designs <00:49:44.620>and <00:49:44.900>and

994
00:49:46.400 --> 00:49:49.500
<00:49:46.400>we <00:49:46.575>try <00:49:46.750>to <00:49:46.925>do <00:49:47.100>that. <00:49:47.275>So <00:49:47.450>try <00:49:47.625>and <00:49:47.800>do

995
00:49:49.500 --> 00:49:52.800
<00:49:49.500>modern <00:49:49.733>c++, <00:49:49.966>don't <00:49:50.200>be <00:49:50.433>over <00:49:50.666>until <00:49:50.900>sheistic.

996
00:49:52.800 --> 00:49:55.900
<00:49:52.800>You're <00:49:52.940>not <00:49:53.080>modern <00:49:53.220>just <00:49:53.360>because <00:49:53.500>you <00:49:53.640>use <00:49:53.780>all <00:49:53.920>the <00:49:54.060>features. <00:49:54.200>That

997
00:49:55.900 --> 00:49:58.700
<00:49:55.900>means <00:49:56.075>you <00:49:56.250>haven't <00:49:56.425>understood <00:49:56.600>what's <00:49:56.775>going <00:49:56.950>on. <00:49:57.125>What <00:49:57.300>you

998
00:49:58.700 --> 00:50:01.500
<00:49:58.700>need <00:49:58.855>to <00:49:59.011>do <00:49:59.166>is <00:49:59.322>see <00:49:59.477>which <00:49:59.633>of <00:49:59.788>the <00:49:59.944>features <00:50:00.100>help

999
00:50:01.500 --> 00:50:04.700
<00:50:01.500>you <00:50:01.675>in <00:50:01.850>what <00:50:02.025>you <00:50:02.200>are <00:50:02.375>doing. <00:50:02.550>So <00:50:02.725>the <00:50:02.900>C++

1000
00:50:04.700 --> 00:50:07.200
<00:50:04.700>core <00:50:04.899>guidelines, <00:50:05.100>which <00:50:05.299>is <00:50:05.500>a <00:50:05.700>project. <00:50:05.899>I've <00:50:06.100>been

1001
00:50:07.200 --> 00:50:11.000
<00:50:07.200>working <00:50:07.327>on <00:50:07.454>for <00:50:07.581>a <00:50:07.709>while <00:50:07.836>allows <00:50:07.963>you <00:50:08.090>to <00:50:08.218>write <00:50:08.345>types <00:50:08.472>say <00:50:08.600>f*******

1002
00:50:10.200 --> 00:50:14.000
<00:50:10.200>resource <00:50:10.549>safe <00:50:10.899>and <00:50:11.250>efficient <00:50:11.600>and

1003
00:50:13.600 --> 00:50:17.300
<00:50:13.600>symbol <00:50:13.950>C++ <00:50:14.299>code <00:50:14.650>again <00:50:15.000>that

1004
00:50:17.300 --> 00:50:20.300
<00:50:17.300>takes <00:50:17.475>work, <00:50:17.650>but <00:50:17.825>this <00:50:18.000>is <00:50:18.175>what <00:50:18.350>you <00:50:18.525>can <00:50:18.700>do.

1005
00:50:20.300 --> 00:50:23.500
<00:50:20.300>No <00:50:20.580>leaks <00:50:20.860>no <00:50:21.140>memory <00:50:21.420>corruption. <00:50:21.700>No

1006
00:50:23.500 --> 00:50:26.700
<00:50:23.500>garbage <00:50:23.733>collector, <00:50:23.966>no <00:50:24.200>limitations <00:50:24.433>of <00:50:24.666>what <00:50:24.900>you

1007
00:50:26.700 --> 00:50:29.900
<00:50:26.700>can <00:50:26.980>say <00:50:27.259>no <00:50:27.540>performance <00:50:27.819>degradation <00:50:28.100>and

1008
00:50:29.900 --> 00:50:32.700
<00:50:29.900>I <00:50:30.040>did <00:50:30.180>not <00:50:30.320>go <00:50:30.460>and <00:50:30.600>invent <00:50:30.740>a <00:50:30.880>new <00:50:31.020>language <00:50:31.160>that's <00:50:31.300>too

1009
00:50:32.700 --> 00:50:36.300
<00:50:32.700>much <00:50:32.933>work <00:50:33.166>and <00:50:33.399>it's <00:50:33.633>true <00:50:33.866>support <00:50:34.100>is

1010
00:50:36.300 --> 00:50:39.300
<00:50:36.300>incomplete <00:50:36.650>still <00:50:37.000>but <00:50:37.350>for <00:50:37.700>instance

1011
00:50:39.300 --> 00:50:40.300
<00:50:39.300>memory <00:50:40.200>saf

1012
00:50:40.300 --> 00:50:43.500
<00:50:40.300>Can <00:50:40.475>be <00:50:40.650>guaranteed <00:50:40.825>with <00:50:41.000>the <00:50:41.175>use <00:50:41.350>of <00:50:41.525>Visual <00:50:41.700>Studio?

1013
00:50:44.100 --> 00:50:48.500
<00:50:44.100>It's <00:50:44.299>static <00:50:44.500>Checker <00:50:44.700>can <00:50:44.900>do <00:50:45.100>that. <00:50:45.299>Okay. <00:50:45.500>So

1014
00:50:48.500 --> 00:50:52.000
<00:50:48.500>basically <00:50:48.966>C++ <00:50:49.433>rests <00:50:49.900>on

1015
00:50:51.200 --> 00:50:55.100
<00:50:51.200>a <00:50:51.480>couple <00:50:51.759>of <00:50:52.040>fundamental <00:50:52.319>facilities <00:50:52.600>and

1016
00:50:54.100 --> 00:50:56.100
ideals.

1017
00:50:56.900 --> 00:50:58.800
<00:50:56.900>so <00:50:57.366>static <00:50:57.833>type <00:50:58.300>system

1018
00:50:59.900 --> 00:51:02.700
<00:50:59.900>Is <00:51:00.075>the <00:51:00.250>basis <00:51:00.425>of <00:51:00.600>just <00:51:00.775>about <00:51:00.950>everything <00:51:01.125>it's <00:51:01.300>equal

1019
00:51:02.700 --> 00:51:06.200
<00:51:02.700>support <00:51:03.049>for <00:51:03.399>building <00:51:03.750>and <00:51:04.100>user-defined

1020
00:51:05.200 --> 00:51:08.300
<00:51:05.200>types <00:51:05.549>gives <00:51:05.899>you <00:51:06.250>performance <00:51:06.600>like

1021
00:51:08.300 --> 00:51:11.600
<00:51:08.300>using <00:51:08.533>stack <00:51:08.766>for <00:51:09.000>user-defined <00:51:09.233>types <00:51:09.466>and <00:51:09.700>it

1022
00:51:11.600 --> 00:51:12.800
<00:51:11.600>gives <00:51:11.960>you <00:51:12.320>generic <00:51:12.680>programming.

1023
00:51:13.700 --> 00:51:14.800
<00:51:13.700>We <00:51:14.195>do <00:51:14.690>both.

1024
00:51:16.800 --> 00:51:20.700
<00:51:16.800>Reference <00:51:17.080>semantic <00:51:17.360>and <00:51:17.640>values <00:51:17.920>semantics <00:51:18.200>valuesomemantics

1025
00:51:19.700 --> 00:51:22.600
<00:51:19.700>is <00:51:20.049>usually <00:51:20.399>the <00:51:20.750>simplest <00:51:21.100>to

1026
00:51:22.600 --> 00:51:26.300
<00:51:22.600>use <00:51:22.880>and <00:51:23.160>easier <00:51:23.440>to <00:51:23.720>optimize <00:51:24.000>but

1027
00:51:25.300 --> 00:51:29.900
<00:51:25.300>you <00:51:25.533>have <00:51:25.766>to <00:51:26.000>have <00:51:26.233>the <00:51:26.466>reference <00:51:26.700>semantic

1028
00:51:29.900 --> 00:51:32.600
<00:51:29.900>the <00:51:30.055>pointed <00:51:30.211>semantics <00:51:30.366>to <00:51:30.522>implement <00:51:30.677>a <00:51:30.833>lot <00:51:30.988>of <00:51:31.144>those <00:51:31.300>ideas.

1029
00:51:32.600 --> 00:51:33.500
<00:51:32.600>So <00:51:32.870>you <00:51:33.140>need <00:51:33.410>both.

1030
00:51:34.500 --> 00:51:37.200
<00:51:34.500>You <00:51:34.655>could <00:51:34.811>simplify <00:51:34.966>The <00:51:35.122>Language <00:51:35.277>by <00:51:35.433>throwing <00:51:35.588>away <00:51:35.744>one <00:51:35.900>of

1031
00:51:37.200 --> 00:51:41.000
<00:51:37.200>them, <00:51:37.375>but <00:51:37.549>you <00:51:37.725>would <00:51:37.899>lose <00:51:38.075>the <00:51:38.250>abstraction <00:51:38.424>mechanisms <00:51:38.600>and

1032
00:51:40.500 --> 00:51:43.400
<00:51:40.500>system <00:51:40.780>adding <00:51:41.060>in <00:51:41.340>general <00:51:41.620>Resource <00:51:41.900>Management,

1033
00:51:43.400 --> 00:51:47.500
<00:51:43.400>which <00:51:43.633>is <00:51:43.866>in <00:51:44.100>integrated <00:51:44.333>with <00:51:44.566>with <00:51:44.800>exception

1034
00:51:46.500 --> 00:51:48.700
<00:51:46.500>handling <00:51:46.966>with <00:51:47.433>their <00:51:47.900>handling.

1035
00:51:49.300 --> 00:51:52.600
<00:51:49.300>And <00:51:49.580>object <00:51:49.860>oriented <00:51:50.140>programming <00:51:50.420>generic <00:51:50.700>programming

1036
00:51:52.600 --> 00:51:56.000
<00:51:52.600>compile <00:51:52.880>time <00:51:53.160>programming <00:51:53.440>and <00:51:53.720>direct <00:51:54.000>use

1037
00:51:55.200 --> 00:51:58.400
<00:51:55.200>of <00:51:55.549>Hardware <00:51:55.899>again <00:51:56.250>for <00:51:56.600>the

1038
00:51:58.400 --> 00:52:01.500
<00:51:58.400>efficiency <00:51:58.575>thing <00:51:58.750>and <00:51:58.925>if <00:51:59.100>you <00:51:59.275>want <00:51:59.450>the <00:51:59.625>details, <00:51:59.800>there

1039
00:52:01.500 --> 00:52:04.700
<00:52:01.500>are <00:52:01.850>papers <00:52:02.200>about <00:52:02.550>it. <00:52:02.900>I

1040
00:52:06.300 --> 00:52:09.600
<00:52:06.300>I <00:52:06.533>gave <00:52:06.766>three <00:52:07.000>pay <00:52:07.233>three <00:52:07.466>papers <00:52:07.700>at

1041
00:52:09.600 --> 00:52:13.300
<00:52:09.600>the <00:52:09.799>history <00:52:10.000>of <00:52:10.200>programming <00:52:10.400>languages <00:52:10.600>conference <00:52:10.799>on <00:52:11.000>c++,

1042
00:52:12.300 --> 00:52:15.500
<00:52:12.300>that's <00:52:12.475>a <00:52:12.650>record <00:52:12.825>for <00:52:13.000>a <00:52:13.175>language. <00:52:13.350>It's <00:52:13.525>a <00:52:13.700>record

1043
00:52:15.500 --> 00:52:18.800
<00:52:15.500>for <00:52:15.733>an <00:52:15.966>individual <00:52:16.200>those <00:52:16.433>conferences <00:52:16.666>come <00:52:16.900>regularly

1044
00:52:18.800 --> 00:52:21.500
<00:52:18.800>every <00:52:19.033>15 <00:52:19.266>years. <00:52:19.500>So <00:52:19.733>it's <00:52:19.966>really <00:52:20.200>hard

1045
00:52:21.500 --> 00:52:25.200
<00:52:21.500>to <00:52:21.700>to <00:52:21.900>get <00:52:22.100>that <00:52:22.300>and <00:52:22.500>so <00:52:22.700>I <00:52:22.900>think

1046
00:52:25.200 --> 00:52:28.600
<00:52:25.200>I <00:52:25.375>have <00:52:25.549>little <00:52:25.725>time <00:52:25.899>for <00:52:26.075>questions <00:52:26.250>I <00:52:26.424>ran <00:52:26.600>over

1047
00:52:28.600 --> 00:52:32.300
<00:52:28.600>a <00:52:28.799>bit <00:52:29.000>but <00:52:29.200>trying <00:52:29.400>to <00:52:29.600>explain <00:52:29.799>c++, <00:52:30.000>and

1048
00:52:32.300 --> 00:52:35.400
<00:52:32.300>it's <00:52:32.533>history <00:52:32.766>in <00:52:33.000>45 <00:52:33.233>minutes. <00:52:33.466>It's <00:52:33.700>an

1049
00:52:35.400 --> 00:52:39.200
<00:52:35.400>untrivial <00:52:35.750>exercise. <00:52:36.100>So <00:52:36.450>questions <00:52:36.800>if

1050
00:52:38.200 --> 00:52:41.300
<00:52:38.200>there's <00:52:38.666>a <00:52:39.133>microphone <00:52:39.600>somewhere

1051
00:52:43.200 --> 00:52:46.300
<00:52:43.200>Oh, <00:52:43.480>okay. <00:52:43.759>Well <00:52:44.040>first <00:52:44.319>thank <00:52:44.600>you

1052
00:52:46.300 --> 00:52:47.700
<00:52:46.300>a <00:52:46.720>lot <00:52:47.140>for <00:52:47.560>that.

1053
00:52:48.800 --> 00:52:49.600
<00:52:48.800>Thank <00:52:49.040>you, <00:52:49.280>you <00:52:49.520>know.

1054
00:53:03.900 --> 00:53:07.000
<00:53:03.900>Actually <00:53:04.100>one <00:53:04.300>question <00:53:04.500>for <00:53:04.700>the <00:53:04.900>audience <00:53:05.100>first <00:53:05.300>who

1055
00:53:06.500 --> 00:53:10.800
<00:53:06.500>of <00:53:06.780>you <00:53:07.060>is <00:53:07.340>a <00:53:07.620>C++ <00:53:07.900>programmer.

1056
00:53:12.400 --> 00:53:12.700
ha

1057
00:53:14.500 --> 00:53:17.800
<00:53:14.500>I'm <00:53:14.780>particularly <00:53:15.060>pleased <00:53:15.340>that <00:53:15.620>almost <00:53:15.900>half

1058
00:53:17.800 --> 00:53:20.200
<00:53:17.800>of <00:53:18.033>you <00:53:18.266>weren't <00:53:18.500>because <00:53:18.733>then <00:53:18.966>you <00:53:19.200>learned

1059
00:53:20.200 --> 00:53:21.700
<00:53:20.200>something <00:53:21.549>unspecific.

1060
00:53:25.200 --> 00:53:27.300
<00:53:25.200>S <00:53:25.480>if <00:53:25.759>other <00:53:26.040>yeah, <00:53:26.319>all <00:53:26.600>right.

1061
00:53:28.500 --> 00:53:31.900
<00:53:28.500>Are <00:53:28.655>there <00:53:28.811>any <00:53:28.966>people <00:53:29.122>who <00:53:29.277>have <00:53:29.433>not <00:53:29.588>yet <00:53:29.744>used <00:53:29.900>C++

1062
00:53:31.900 --> 00:53:33.700
<00:53:31.900>and <00:53:32.100>now <00:53:32.300>would <00:53:32.500>like <00:53:32.700>to <00:53:32.900>start <00:53:33.100>with <00:53:33.300>it?

1063
00:53:35.700 --> 00:53:37.200
<00:53:35.700>Oh, <00:53:37.049>yes.

1064
00:53:39.300 --> 00:53:42.300
<00:53:39.300>And <00:53:39.440>here <00:53:39.580>I <00:53:39.720>hope <00:53:39.860>that <00:53:40.000>I <00:53:40.140>was <00:53:40.280>speaking <00:53:40.420>to <00:53:40.560>somebody <00:53:40.700>who

1065
00:53:42.300 --> 00:53:43.700
<00:53:42.300>so <00:53:42.615>it <00:53:42.930>was <00:53:43.245>not <00:53:43.560>always.

1066
00:53:44.600 --> 00:53:47.900
<00:53:44.600>Could <00:53:44.799>Mount <00:53:45.000>the <00:53:45.200>stage <00:53:45.400>and <00:53:45.600>speak <00:53:45.799>actually, <00:53:46.000>we

1067
00:53:47.900 --> 00:53:51.000
<00:53:47.900>have <00:53:48.133>quite <00:53:48.366>a <00:53:48.600>few <00:53:48.833>questions. <00:53:49.066>Some <00:53:49.300>people

1068
00:53:50.300 --> 00:53:53.300
<00:53:50.300>would <00:53:50.533>like <00:53:50.766>you <00:53:51.000>to <00:53:51.233>mentally <00:53:51.466>time <00:53:51.700>travel.

1069
00:53:54.400 --> 00:53:57.500
<00:53:54.400>Imagine <00:53:54.575>oh, <00:53:54.750>you <00:53:54.925>could <00:53:55.100>go <00:53:55.275>back <00:53:55.450>in <00:53:55.625>time. <00:53:55.800>Yes,

1070
00:53:57.500 --> 00:54:01.400
<00:53:57.500>that's <00:53:57.780>the <00:53:58.060>time <00:53:58.340>travel <00:53:58.620>question. <00:53:58.900>And

1071
00:54:00.400 --> 00:54:03.700
<00:54:00.400>I <00:54:00.750>I <00:54:01.100>actually <00:54:01.450>give <00:54:01.800>this

1072
00:54:03.700 --> 00:54:07.200
<00:54:03.700>to <00:54:03.855>some <00:54:04.011>of <00:54:04.166>my <00:54:04.322>students <00:54:04.477>in <00:54:04.633>the <00:54:04.788>class <00:54:04.944>basically <00:54:05.100>grab

1073
00:54:06.200 --> 00:54:09.500
<00:54:06.200>your <00:54:06.899>Tardis <00:54:07.600>your

1074
00:54:09.500 --> 00:54:12.800
<00:54:09.500>time <00:54:09.655>travel <00:54:09.811>machine <00:54:09.966>and <00:54:10.122>go <00:54:10.277>back <00:54:10.433>and <00:54:10.588>give <00:54:10.744>Dennis <00:54:10.900>some

1075
00:54:12.800 --> 00:54:15.500
<00:54:12.800>advice <00:54:13.150>in <00:54:13.500>74 <00:54:13.850>there <00:54:14.200>about

1076
00:54:15.500 --> 00:54:18.900
<00:54:15.500>and <00:54:15.675>then <00:54:15.850>when <00:54:16.025>you've <00:54:16.200>done <00:54:16.375>that <00:54:16.550>go <00:54:16.725>back <00:54:16.900>through

1077
00:54:18.900 --> 00:54:21.700
<00:54:18.900>say <00:54:19.600>82 <00:54:20.300>and

1078
00:54:21.700 --> 00:54:25.000
<00:54:21.700>give <00:54:21.875>me <00:54:22.049>some <00:54:22.225>advice <00:54:22.399>so <00:54:22.575>that <00:54:22.750>I <00:54:22.924>can <00:54:23.100>can

1079
00:54:24.500 --> 00:54:28.200
<00:54:24.500>fix <00:54:24.700>things <00:54:24.900>before <00:54:25.100>it's <00:54:25.300>too <00:54:25.500>late. <00:54:25.700>And <00:54:25.900>the

1080
00:54:27.200 --> 00:54:30.500
<00:54:27.200>question <00:54:27.480>is <00:54:27.759>what <00:54:28.040>what <00:54:28.319>you <00:54:28.600>give

1081
00:54:30.500 --> 00:54:35.100
<00:54:30.500>and <00:54:30.700>and <00:54:30.900>certainly <00:54:31.100>for <00:54:31.300>for <00:54:31.500>Dennis. <00:54:31.700>I <00:54:31.900>would

1082
00:54:34.100 --> 00:54:38.300
<00:54:34.100>like <00:54:34.380>to <00:54:34.660>say <00:54:34.940>don't <00:54:35.220>have <00:54:35.500>conversions

1083
00:54:37.300 --> 00:54:40.300
<00:54:37.300>of <00:54:37.650>field <00:54:38.000>in <00:54:38.350>type <00:54:38.700>both

1084
00:54:40.300 --> 00:54:43.300
<00:54:40.300>ways <00:54:40.533>that <00:54:40.766>gives <00:54:41.000>chaos <00:54:41.233>and <00:54:41.466>don't <00:54:41.700>give

1085
00:54:43.300 --> 00:54:47.600
<00:54:43.300>people <00:54:43.580>an <00:54:43.860>implicit <00:54:44.140>conversion <00:54:44.420>from <00:54:44.700>unsigned

1086
00:54:46.600 --> 00:54:49.200
<00:54:46.600>to <00:54:47.066>sign <00:54:47.533>that <00:54:48.000>gives

1087
00:54:49.200 --> 00:54:52.100
<00:54:49.200>problems. <00:54:49.549>And <00:54:49.899>by <00:54:50.250>the <00:54:50.600>way,

1088
00:54:52.100 --> 00:54:54.200
<00:54:52.100>wait <00:54:53.500>how

1089
00:54:54.300 --> 00:54:58.100
<00:54:54.300>Years, <00:54:54.580>so <00:54:54.860>they <00:54:55.140>invent <00:54:55.420>LL <00:54:55.700>passing

1090
00:54:57.100 --> 00:55:00.500
<00:54:57.100>a <00:54:57.380>lot <00:54:57.660>of <00:54:57.940>passing <00:54:58.220>instead <00:54:58.500>of

1091
00:55:00.500 --> 00:55:03.500
<00:55:00.500>Designing <00:55:00.850>language <00:55:01.200>language <00:55:01.550>with <00:55:01.900>a

1092
00:55:03.500 --> 00:55:05.600
<00:55:03.500>syntax. <00:55:03.850>That <00:55:04.200>is <00:55:04.550>maximally <00:55:04.900>ambiguous.

1093
00:55:06.300 --> 00:55:10.100
<00:55:06.300>And <00:55:06.440>for <00:55:06.580>me, <00:55:06.720>I <00:55:06.860>think <00:55:07.000>I <00:55:07.140>was <00:55:07.280>thinking <00:55:07.420>about <00:55:07.560>generic <00:55:07.700>programming

1094
00:55:09.100 --> 00:55:12.300
<00:55:09.100>and <00:55:09.333>if <00:55:09.566>somebody <00:55:09.799>could <00:55:10.033>have <00:55:10.266>told <00:55:10.500>me

1095
00:55:12.300 --> 00:55:16.200
<00:55:12.300>how <00:55:12.533>to <00:55:12.766>do <00:55:13.000>concepts <00:55:13.233>as <00:55:13.466>compile <00:55:13.700>time

1096
00:55:15.200 --> 00:55:18.200
<00:55:15.200>predicates <00:55:15.666>as <00:55:16.133>a <00:55:16.600>should

1097
00:55:18.200 --> 00:55:21.700
<00:55:18.200>you <00:55:18.339>then <00:55:18.480>I <00:55:18.620>could <00:55:18.759>have <00:55:18.899>built <00:55:19.040>templates <00:55:19.180>that <00:55:19.319>was <00:55:19.460>better <00:55:19.600>and

1098
00:55:21.700 --> 00:55:25.900
<00:55:21.700>easier <00:55:21.933>to <00:55:22.166>use <00:55:22.399>back <00:55:22.633>in <00:55:22.866>the <00:55:23.100>late

1099
00:55:24.900 --> 00:55:27.900
<00:55:24.900>ages. <00:55:25.600>Now. <00:55:26.300>The

1100
00:55:27.900 --> 00:55:29.200
<00:55:27.900>point <00:55:28.485>is <00:55:29.069>advice.

1101
00:55:30.500 --> 00:55:33.200
<00:55:30.500>Has <00:55:30.675>to <00:55:30.850>be <00:55:31.025>with <00:55:31.200>a <00:55:31.375>time <00:55:31.550>machine <00:55:31.725>has <00:55:31.900>to

1102
00:55:33.200 --> 00:55:36.800
<00:55:33.200>be <00:55:33.399>not <00:55:33.600>just <00:55:33.799>correct, <00:55:34.000>but <00:55:34.200>also <00:55:34.399>feasible <00:55:34.600>and

1103
00:55:36.800 --> 00:55:39.600
<00:55:36.800>you <00:55:37.033>can't <00:55:37.266>tell <00:55:37.500>people <00:55:37.733>to <00:55:37.966>if <00:55:38.200>you

1104
00:55:39.600 --> 00:55:42.400
<00:55:39.600>think <00:55:39.833>garbage <00:55:40.066>collection <00:55:40.299>is <00:55:40.533>cool <00:55:40.766>telling <00:55:41.000>Danish

1105
00:55:42.400 --> 00:55:45.300
<00:55:42.400>to <00:55:42.516>put <00:55:42.633>in <00:55:42.750>a <00:55:42.866>garbage <00:55:42.983>collector. <00:55:43.100>They <00:55:43.216>need <00:55:43.333>to <00:55:43.450>tell <00:55:43.566>you <00:55:43.683>he <00:55:43.800>knows

1106
00:55:45.300 --> 00:55:49.800
<00:55:45.300>about <00:55:45.475>garbage <00:55:45.650>collection. <00:55:45.825>There's <00:55:46.000>fairly <00:55:46.175>well <00:55:46.350>known <00:55:46.525>in <00:55:46.700>7274,

1107
00:55:48.800 --> 00:55:51.300
<00:55:48.800>but <00:55:49.500>but <00:55:50.200>I

1108
00:55:51.300 --> 00:55:54.800
<00:55:51.300>can't <00:55:51.440>afford <00:55:51.580>it. <00:55:51.720>I'm <00:55:51.860>doing <00:55:52.000>device <00:55:52.140>drivers <00:55:52.280>on <00:55:52.420>a <00:55:52.560>machine. <00:55:52.700>Some

1109
00:55:54.800 --> 00:55:57.600
<00:55:54.800>of <00:55:55.000>these <00:55:55.200>machines <00:55:55.400>only <00:55:55.600>have <00:55:55.800>60 <00:55:56.000>K <00:55:56.200>memory.

1110
00:55:58.300 --> 00:56:00.500
<00:55:58.300>Forget <00:55:58.533>it. <00:55:58.766>So <00:55:59.000>it <00:55:59.233>has <00:55:59.466>to <00:55:59.700>be.

1111
00:56:02.800 --> 00:56:03.300
Correct.

1112
00:56:04.200 --> 00:56:08.000
<00:56:04.200>Feasible <00:56:04.480>and <00:56:04.759>affordable <00:56:05.040>and <00:56:05.319>tennis <00:56:05.600>in

1113
00:56:07.800 --> 00:56:10.600
<00:56:07.800>74 <00:56:08.033>knew <00:56:08.266>more <00:56:08.500>about <00:56:08.733>what <00:56:08.966>was <00:56:09.200>feasible.

1114
00:56:10.600 --> 00:56:13.500
<00:56:10.600>And <00:56:10.755>we <00:56:10.911>do <00:56:11.066>today <00:56:11.222>we <00:56:11.377>have <00:56:11.533>forgotten <00:56:11.688>too <00:56:11.844>much <00:56:12.000>and

1115
00:56:13.500 --> 00:56:17.200
<00:56:13.500>1980 <00:56:14.200>for <00:56:14.900>vintage

1116
00:56:16.200 --> 00:56:19.500
<00:56:16.200>piano <00:56:16.480>more <00:56:16.759>about <00:56:17.040>the <00:56:17.319>world <00:56:17.600>then

1117
00:56:19.500 --> 00:56:22.500
<00:56:19.500>and <00:56:19.733>we <00:56:19.966>do <00:56:20.200>today <00:56:20.433>we've <00:56:20.666>forgotten <00:56:20.900>and

1118
00:56:22.500 --> 00:56:25.900
<00:56:22.500>some <00:56:22.675>things <00:56:22.850>we <00:56:23.025>would <00:56:23.200>like <00:56:23.375>to <00:56:23.550>forget <00:56:23.725>but <00:56:23.900>it

1119
00:56:25.900 --> 00:56:26.800
<00:56:25.900>was <00:56:26.710>hard.

1120
00:56:27.600 --> 00:56:30.100
<00:56:27.600>I <00:56:27.755>think <00:56:27.911>you <00:56:28.066>might <00:56:28.222>might <00:56:28.377>already <00:56:28.533>guess <00:56:28.688>what <00:56:28.844>the <00:56:29.000>next

1121
00:56:30.100 --> 00:56:34.100
<00:56:30.100>question <00:56:30.333>will <00:56:30.566>be. <00:56:30.799>No. <00:56:31.033>Okay, <00:56:31.266>so <00:56:31.500>quite

1122
00:56:33.100 --> 00:56:36.400
<00:56:33.100>a <00:56:33.275>few <00:56:33.450>people <00:56:33.625>and <00:56:33.799>you <00:56:33.975>can <00:56:34.150>still <00:56:34.325>upvote <00:56:34.500>by

1123
00:56:36.400 --> 00:56:39.200
<00:56:36.400>the <00:56:36.540>way <00:56:36.680>use <00:56:36.820>your <00:56:36.960>app <00:56:37.100>to <00:56:37.240>upvote <00:56:37.380>if <00:56:37.520>something <00:56:37.660>needs <00:56:37.800>to

1124
00:56:39.200 --> 00:56:43.200
<00:56:39.200>get <00:56:39.327>on <00:56:39.454>stage <00:56:39.581>3 <00:56:39.709>half <00:56:39.836>or <00:56:39.963>some <00:56:40.090>four <00:56:40.218>minutes <00:56:40.345>left. <00:56:40.472>It's <00:56:40.600>about

1125
00:56:43.200 --> 00:56:43.700
rust.

1126
00:56:44.500 --> 00:56:46.200
<00:56:44.500>yeah, <00:56:44.780>I <00:56:45.060>did <00:56:45.340>guess <00:56:45.620>I <00:56:45.900>I

1127
00:56:48.500 --> 00:56:52.100
<00:56:48.500>have <00:56:48.655>seen <00:56:48.811>the <00:56:48.966>painful <00:56:49.122>look <00:56:49.277>on <00:56:49.433>your <00:56:49.588>face. <00:56:49.744>So <00:56:49.900>actually

1128
00:56:51.100 --> 00:56:54.500
<00:56:51.100>there's <00:56:51.299>a <00:56:51.500>second <00:56:51.700>question <00:56:51.900>related <00:56:52.100>to <00:56:52.299>that <00:56:52.500>perhaps

1129
00:56:54.500 --> 00:56:57.500
<00:56:54.500>it <00:56:54.675>makes <00:56:54.850>it <00:56:55.025>more <00:56:55.200>comfortable <00:56:55.375>for <00:56:55.550>you. <00:56:55.725>Do <00:56:55.900>you

1130
00:56:57.500 --> 00:57:00.600
<00:56:57.500>have <00:56:57.700>any <00:56:57.900>guilty <00:56:58.100>pleasures <00:56:58.300>concerning <00:56:58.500>other <00:56:58.700>programming <00:56:58.900>languages

1131
00:57:00.600 --> 00:57:02.700
<00:57:00.600>like <00:57:01.066>rust <00:57:01.533>there's <00:57:02.000>something

1132
00:57:03.900 --> 00:57:05.200
<00:57:03.900>a <00:57:04.192>long <00:57:04.485>long <00:57:04.777>time <00:57:05.069>ago

1133
00:57:06.400 --> 00:57:09.100
<00:57:06.400>I <00:57:06.633>saw <00:57:06.866>a <00:57:07.100>lot <00:57:07.333>of <00:57:07.566>language <00:57:07.800>compassions.

1134
00:57:09.800 --> 00:57:12.500
<00:57:09.800>And <00:57:10.033>they <00:57:10.266>tended <00:57:10.500>to <00:57:10.733>be <00:57:10.966>expert <00:57:11.200>of

1135
00:57:12.500 --> 00:57:15.500
<00:57:12.500>language <00:57:12.966>X <00:57:13.433>criticizing <00:57:13.900>language.

1136
00:57:15.500 --> 00:57:16.200
Why?

1137
00:57:17.600 --> 00:57:20.700
<00:57:17.600>And <00:57:17.880>the <00:57:18.160>expert <00:57:18.440>knows <00:57:18.720>everything <00:57:19.000>there

1138
00:57:20.700 --> 00:57:23.500
<00:57:20.700>is <00:57:20.875>to <00:57:21.049>know <00:57:21.225>he <00:57:21.399>has <00:57:21.575>the <00:57:21.750>latest <00:57:21.924>implementations. <00:57:22.100>He

1139
00:57:23.500 --> 00:57:27.300
<00:57:23.500>knows <00:57:23.700>all <00:57:23.900>the <00:57:24.100>workarounds <00:57:24.300>about <00:57:24.500>the <00:57:24.700>weaknesses <00:57:24.900>and

1140
00:57:26.300 --> 00:57:29.100
<00:57:26.300>the <00:57:26.650>other <00:57:27.000>language. <00:57:27.350>He <00:57:27.700>doesn't

1141
00:57:29.100 --> 00:57:30.500
<00:57:29.100>know <00:57:29.352>about <00:57:29.604>so <00:57:29.856>it <00:57:30.108>looks <00:57:30.360>ridiculous.

1142
00:57:31.600 --> 00:57:34.400
<00:57:31.600>This <00:57:31.799>thing <00:57:32.000>works <00:57:32.200>the <00:57:32.400>other <00:57:32.600>way <00:57:32.799>and <00:57:33.000>I

1143
00:57:34.400 --> 00:57:37.700
<00:57:34.400>therefore <00:57:34.600>decided <00:57:34.800>I'm <00:57:35.000>not <00:57:35.200>doing <00:57:35.400>language <00:57:35.600>compassions. <00:57:35.800>I

1144
00:57:37.700 --> 00:57:41.000
<00:57:37.700>look <00:57:37.899>at <00:57:38.100>languages. <00:57:38.299>I <00:57:38.500>tried <00:57:38.700>languages, <00:57:38.899>but <00:57:39.100>I

1145
00:57:40.600 --> 00:57:43.800
<00:57:40.600>cannot <00:57:40.880>do <00:57:41.160>a <00:57:41.440>fair <00:57:41.720>compassion <00:57:42.000>with

1146
00:57:43.800 --> 00:57:45.500
<00:57:43.800>within <00:57:44.266>any <00:57:44.733>old <00:57:45.200>language.

1147
00:57:48.500 --> 00:57:51.800
<00:57:48.500>When <00:57:48.780>Java <00:57:49.060>came <00:57:49.340>out <00:57:49.620>was <00:57:49.900>going

1148
00:57:51.800 --> 00:57:54.800
<00:57:51.800>to <00:57:52.080>kill <00:57:52.360>absolutely <00:57:52.640>kill <00:57:52.920>C++ <00:57:53.200>in

1149
00:57:54.800 --> 00:57:57.400
<00:57:54.800>two <00:57:54.975>years. <00:57:55.150>This <00:57:55.325>is <00:57:55.500>a <00:57:55.675>direct <00:57:55.850>quote <00:57:56.025>from <00:57:56.200>an

1150
00:57:57.400 --> 00:57:58.400
<00:57:57.400>executive <00:57:57.850>at <00:57:58.300>son.

1151
00:58:00.300 --> 00:58:01.400
<00:58:00.300>and <00:58:01.290>well

1152
00:58:02.200 --> 00:58:06.000
<00:58:02.200>There's <00:58:02.399>five <00:58:02.600>times <00:58:02.799>as <00:58:03.000>many <00:58:03.200>C++ <00:58:03.399>programmers <00:58:03.600>today.

1153
00:58:05.700 --> 00:58:08.600
<00:58:05.700>There <00:58:06.166>was <00:58:06.633>then <00:58:07.100>and

1154
00:58:10.100 --> 00:58:14.000
<00:58:10.100>The <00:58:10.255>point <00:58:10.411>being <00:58:10.566>that <00:58:10.722>I <00:58:10.877>predicted <00:58:11.033>that <00:58:11.188>if <00:58:11.344>Jarvis <00:58:11.500>survives,

1155
00:58:13.900 --> 00:58:16.300
<00:58:13.900>it <00:58:14.250>will <00:58:14.600>triple <00:58:14.950>in <00:58:15.300>size

1156
00:58:16.300 --> 00:58:19.200
<00:58:16.300>and <00:58:16.500>become <00:58:16.700>much <00:58:16.900>better <00:58:17.100>from <00:58:17.300>it <00:58:17.500>and <00:58:17.700>I

1157
00:58:19.200 --> 00:58:22.500
<00:58:19.200>was <00:58:19.433>correct <00:58:19.666>on <00:58:19.899>both <00:58:20.133>counts. <00:58:20.366>And <00:58:20.600>so

1158
00:58:22.500 --> 00:58:26.200
<00:58:22.500>if <00:58:22.780>Russ <00:58:23.060>survives <00:58:23.340>it <00:58:23.620>will <00:58:23.900>become

1159
00:58:27.700 --> 00:58:30.400
<00:58:27.700>Better <00:58:28.049>bigger <00:58:28.399>if <00:58:28.750>they <00:58:29.100>manage

1160
00:58:30.400 --> 00:58:33.600
<00:58:30.400>handle <00:58:30.555>the <00:58:30.711>complexity <00:58:30.866>of <00:58:31.022>all <00:58:31.177>the <00:58:31.333>bright <00:58:31.488>ideas <00:58:31.644>that <00:58:31.800>come

1161
00:58:33.600 --> 00:58:37.100
<00:58:33.600>in <00:58:33.799>is <00:58:34.000>probably <00:58:34.200>the <00:58:34.400>major <00:58:34.600>thing <00:58:34.799>the <00:58:35.000>advertise

1162
00:58:36.100 --> 00:58:40.100
<00:58:36.100>fast <00:58:36.566>Evolution <00:58:37.033>which <00:58:37.500>has

1163
00:58:39.100 --> 00:58:42.400
<00:58:39.100>its <00:58:39.450>advantages <00:58:39.799>and <00:58:40.150>certainly <00:58:40.500>it's

1164
00:58:42.400 --> 00:58:45.300
<00:58:42.400>disadvantages <00:58:42.633>when <00:58:42.866>I <00:58:43.100>last <00:58:43.333>tried <00:58:43.566>it. <00:58:43.800>I

1165
00:58:45.300 --> 00:58:48.700
<00:58:45.300>find <00:58:45.475>I <00:58:45.650>found <00:58:45.825>it <00:58:46.000>was <00:58:46.175>a <00:58:46.350>bit <00:58:46.525>complicated <00:58:46.700>to

1166
00:58:48.700 --> 00:58:51.300
<00:58:48.700>to <00:58:49.049>handle <00:58:49.399>and <00:58:49.750>I <00:58:50.100>would

1167
00:58:51.300 --> 00:58:54.600
<00:58:51.300>like <00:58:51.580>a <00:58:51.860>smoother <00:58:52.140>smoother <00:58:52.420>language <00:58:52.700>and

1168
00:58:54.600 --> 00:58:57.800
<00:58:54.600>I <00:58:54.799>would <00:58:55.000>like <00:58:55.200>there <00:58:55.400>are <00:58:55.600>abstraction <00:58:55.799>mechanisms, <00:58:56.000>but

1169
00:58:57.800 --> 00:58:58.800
<00:58:57.800>we'll <00:58:58.700>see.

1170
00:58:59.600 --> 00:59:02.100
<00:58:59.600>at <00:58:59.740>least <00:58:59.880>it's <00:59:00.020>nice <00:59:00.160>to <00:59:00.299>see <00:59:00.440>that <00:59:00.580>somebody <00:59:00.720>is <00:59:00.860>trying <00:59:01.000>to

1171
00:59:02.100 --> 00:59:03.700
<00:59:02.100>build <00:59:02.566>a <00:59:03.033>language <00:59:03.500>that

1172
00:59:05.200 --> 00:59:09.800
<00:59:05.200>isn't <00:59:05.399>dependent <00:59:05.600>on <00:59:05.799>a <00:59:06.000>humongous <00:59:06.200>corporate <00:59:06.399>runtime <00:59:06.600>support

1173
00:59:09.800 --> 00:59:10.200
system.

1174
00:59:12.200 --> 00:59:15.400
<00:59:12.200>One <00:59:12.307>very <00:59:12.415>last <00:59:12.523>question <00:59:12.630>before <00:59:12.738>we <00:59:12.846>had <00:59:12.953>really <00:59:13.061>have <00:59:13.169>to <00:59:13.276>come <00:59:13.384>to <00:59:13.492>an <00:59:13.600>end

1175
00:59:15.400 --> 00:59:18.900
<00:59:15.400>is <00:59:15.680>well <00:59:15.960>relating <00:59:16.240>to <00:59:16.520>that <00:59:16.800>C++

1176
00:59:18.900 --> 00:59:21.700
<00:59:18.900>still <00:59:19.075>seems <00:59:19.250>to <00:59:19.425>be <00:59:19.600>kind <00:59:19.775>of <00:59:19.950>your <00:59:20.125>baby <00:59:20.300>to

1177
00:59:21.700 --> 00:59:23.800
<00:59:21.700>which <00:59:21.933>extent <00:59:22.166>are <00:59:22.399>you <00:59:22.633>influencing <00:59:22.866>it <00:59:23.100>still?

1178
00:59:24.800 --> 00:59:27.300
<00:59:24.800>What <00:59:24.975>would <00:59:25.150>happen <00:59:25.325>if <00:59:25.500>you <00:59:25.675>step <00:59:25.850>away <00:59:26.025>and <00:59:26.200>said

1179
00:59:27.300 --> 00:59:29.500
<00:59:27.300>no <00:59:27.580>C++ <00:59:27.860>for <00:59:28.140>me <00:59:28.420>anymore <00:59:28.700>today?

1180
00:59:32.700 --> 00:59:35.200
<00:59:32.700>there <00:59:33.049>are <00:59:33.399>people <00:59:33.750>who <00:59:34.100>has

1181
00:59:36.800 --> 00:59:39.700
<00:59:36.800>wondered <00:59:37.150>what <00:59:37.500>what <00:59:37.850>happened <00:59:38.200>if

1182
00:59:39.700 --> 00:59:40.900
<00:59:39.700>I <00:59:40.240>really <00:59:40.780>retire.

1183
00:59:41.800 --> 00:59:44.600
<00:59:41.800>And <00:59:41.975>there <00:59:42.150>are <00:59:42.325>two <00:59:42.500>categories <00:59:42.675>of <00:59:42.850>that. <00:59:43.025>Of <00:59:43.200>course

1184
00:59:44.600 --> 00:59:47.400
<00:59:44.600>the <00:59:44.880>ones <00:59:45.160>that <00:59:45.440>fears <00:59:45.720>what <00:59:46.000>happens

1185
00:59:47.400 --> 00:59:50.200
<00:59:47.400>when <00:59:47.540>I <00:59:47.680>got <00:59:47.820>and <00:59:47.960>the <00:59:48.100>Wonder <00:59:48.240>think <00:59:48.380>wow <00:59:48.520>would <00:59:48.660>be <00:59:48.800>honest

1186
00:59:50.200 --> 00:59:51.800
<00:59:50.200>God <00:59:50.399>and <00:59:50.600>we <00:59:50.799>can <00:59:51.000>get <00:59:51.200>anything <00:59:51.399>we <00:59:51.600>want.

1187
00:59:53.200 --> 00:59:56.500
<00:59:53.200>The <00:59:53.480>letter <00:59:53.759>is <00:59:54.040>probably <00:59:54.319>the <00:59:54.600>reason

1188
00:59:56.500 --> 01:00:01.100
<00:59:56.500>I'm <00:59:56.675>not <00:59:56.850>planning <00:59:57.025>to <00:59:57.200>retire <00:59:57.375>from <00:59:57.550>from <00:59:57.725>c++? <00:59:57.900>It's

1189
00:59:59.100 --> 01:00:02.300
<00:59:59.100>a <00:59:59.450>pain <00:59:59.799>the <01:00:00.150>neck <01:00:00.500>to

1190
01:00:02.300 --> 01:00:05.200
<01:00:02.300>standardize <01:00:02.440>something. <01:00:02.580>It's <01:00:02.720>a <01:00:02.860>pain <01:00:03.000>in <01:00:03.140>the <01:00:03.280>next <01:00:03.420>work <01:00:03.560>under <01:00:03.700>the

1191
01:00:05.200 --> 01:00:06.700
<01:00:05.200>iso <01:00:05.537>rules. <01:00:05.875>It's <01:00:06.212>too <01:00:06.549>slow.

1192
01:00:07.500 --> 01:00:10.900
<01:00:07.500>But <01:00:07.700>I <01:00:07.900>don't <01:00:08.100>know <01:00:08.300>a <01:00:08.500>good <01:00:08.700>alternative. <01:00:08.900>I'm

1193
01:00:10.900 --> 01:00:12.300
<01:00:10.900>in <01:00:11.320>the <01:00:11.740>Direction <01:00:12.160>group.

1194
01:00:13.500 --> 01:00:16.700
<01:00:13.500>For <01:00:13.850>the <01:00:14.200>committee <01:00:14.550>read <01:00:14.900>that

1195
01:00:16.700 --> 01:00:19.600
<01:00:16.700>paper <01:00:16.933>that <01:00:17.166>was <01:00:17.399>on <01:00:17.633>the <01:00:17.866>slides. <01:00:18.100>I

1196
01:00:19.600 --> 01:00:22.500
<01:00:19.600>guess <01:00:19.727>you <01:00:19.854>will <01:00:19.981>make <01:00:20.109>a <01:00:20.236>version <01:00:20.363>of <01:00:20.490>the <01:00:20.618>site <01:00:20.745>available. <01:00:20.872>We <01:00:21.000>make

1197
01:00:22.500 --> 01:00:25.300
<01:00:22.500>them <01:00:22.655>available <01:00:22.811>for <01:00:22.966>you, <01:00:23.122>maybe <01:00:23.277>a <01:00:23.433>PDF <01:00:23.588>for <01:00:23.744>something <01:00:23.900>like

1198
01:00:25.300 --> 01:00:28.200
<01:00:25.300>that. <01:00:25.455>And <01:00:25.611>then <01:00:25.766>you <01:00:25.922>can <01:00:26.077>look <01:00:26.233>it <01:00:26.388>up. <01:00:26.544>Otherwise <01:00:26.700>go

1199
01:00:28.200 --> 01:00:31.200
<01:00:28.200>to <01:00:28.480>wt21 <01:00:28.759>and <01:00:29.040>and <01:00:29.319>look <01:00:29.600>for

1200
01:00:31.200 --> 01:00:34.800
<01:00:31.200>for <01:00:31.355>my <01:00:31.511>name <01:00:31.666>and <01:00:31.822>look <01:00:31.977>for <01:00:32.133>something <01:00:32.288>with <01:00:32.444>Direction. <01:00:32.600>It's

1201
01:00:34.800 --> 01:00:37.900
<01:00:34.800>together <01:00:35.150>with <01:00:35.500>Mike <01:00:35.850>Wong <01:00:36.200>Rocher

1202
01:00:37.900 --> 01:00:38.100
or

1203
01:00:40.700 --> 01:00:45.700
<01:00:40.700>A <01:00:40.980>Holiday <01:00:41.259>Inn <01:00:41.540>and <01:00:41.819>David <01:00:42.100>vanderwater.

1204
01:00:45.700 --> 01:00:49.000
<01:00:45.700>We <01:00:46.166>spend <01:00:46.633>things <01:00:47.100>from

1205
01:00:48.500 --> 01:00:52.000
<01:00:48.500>the <01:00:48.966>library <01:00:49.433>Builders <01:00:49.900>application

1206
01:00:51.600 --> 01:00:54.600
<01:00:51.600>Builders <01:00:52.066>compiler <01:00:52.533>builders <01:00:53.000>that

1207
01:00:54.600 --> 01:00:56.500
<01:00:54.600>are <01:00:55.066>read <01:00:55.533>that <01:00:56.000>paper.

1208
01:00:57.600 --> 01:01:00.600
<01:00:57.600>But <01:00:57.755>but <01:00:57.911>no, <01:00:58.066>I'm <01:00:58.222>not <01:00:58.377>planning <01:00:58.533>to <01:00:58.688>retire. <01:00:58.844>So <01:00:59.000>people

1209
01:01:00.600 --> 01:01:03.400
<01:01:00.600>can <01:01:00.799>either <01:01:01.000>that's <01:01:01.200>a <01:01:01.400>good <01:01:01.600>we <01:01:01.799>are <01:01:02.000>released.

1210
01:01:06.500 --> 01:01:06.900
<01:01:06.500>Yeah, <01:01:06.680>thank <01:01:06.860>you.