videos/01-intro.srt
author Christian Urban <christian.urban@kcl.ac.uk>
Wed, 23 Sep 2020 11:34:43 +0100
changeset 761 fb07ac060866
child 833 7c3b8bb4a174
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
761
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
1
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
00:00:16,280 --> 00:00:18,330
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
A warm welcome to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     4
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
2
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
00:00:18,330 --> 00:00:20,820
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
the compilers and formal
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     8
languages module?
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     9
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
3
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
00:00:20,820 --> 00:00:24,390
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
My name is Christian Urban.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
Thank you for coming.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
4
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
00:00:24,390 --> 00:00:27,644
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
Compilers. I guess
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
you use compilers
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
5
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
00:00:27,644 --> 00:00:31,680
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    22
in your daily work, be it
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    23
the C or Java compiler.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
6
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    26
00:00:31,680 --> 00:00:34,245
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    27
And you might be curious
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    28
in what they do.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    29
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    30
7
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    31
00:00:34,245 --> 00:00:35,700
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    32
But you might also be
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    33
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    34
8
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    35
00:00:35,700 --> 00:00:38,130
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    36
intimidated to look
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    37
what they do underneath
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    38
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    39
9
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    40
00:00:38,130 --> 00:00:39,900
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    41
the bonnet because they are
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    42
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    43
10
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    44
00:00:39,900 --> 00:00:42,520
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    45
quite large software systems.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    46
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    47
11
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    48
00:00:42,520 --> 00:00:46,130
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    49
What I like to show you in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    50
this module is that you
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    51
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    52
12
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    53
00:00:46,130 --> 00:00:49,310
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    54
do not need to be an
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    55
Über hacker to implement your own
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    56
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    57
13
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    58
00:00:49,310 --> 00:00:51,305
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    59
compiler for your
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    60
own language, say.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    61
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    62
14
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    63
00:00:51,305 --> 00:00:54,155
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    64
So that will be the main
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    65
goal of this module.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    66
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    67
15
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    68
00:00:54,155 --> 00:00:56,210
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    69
You will implement
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    70
your own compiler,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    71
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    72
16
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    73
00:00:56,210 --> 00:00:58,310
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    74
of course with my help.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    75
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    76
17
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    77
00:00:58,310 --> 00:01:02,360
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    78
What I personally like
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    79
about compilers is that
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    80
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    81
18
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    82
00:01:02,360 --> 00:01:04,580
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    83
the subject is a
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    84
perfect combination
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    85
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    86
19
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    87
00:01:04,580 --> 00:01:06,350
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    88
of theory and practice.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    89
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    90
20
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    91
00:01:06,350 --> 00:01:07,790
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    92
I like to hack things,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    93
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    94
21
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    95
00:01:07,790 --> 00:01:10,595
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    96
writing actual code,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    97
but I also like theory.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    98
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    99
22
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   100
00:01:10,595 --> 00:01:13,040
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   101
I want to understand what
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   102
my code actually does.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   103
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   104
23
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   105
00:01:13,040 --> 00:01:17,040
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   106
So compilers are the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   107
perfect subject for me.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   108
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   109
24
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   110
00:01:18,040 --> 00:01:20,809
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   111
Let's have a look at the details.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   112
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   113
25
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   114
00:01:20,809 --> 00:01:23,779
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   115
Here's an airplane
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   116
view of a compiler.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   117
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   118
26
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   119
00:01:23,779 --> 00:01:25,850
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   120
On the left-hand side you can see
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   121
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   122
27
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   123
00:01:25,850 --> 00:01:28,745
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   124
the input program a
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   125
developer would write.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   126
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   127
28
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   128
00:01:28,745 --> 00:01:31,955
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   129
And on the right-hand side is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   130
the output of the compiler,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   131
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   132
29
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   133
00:01:31,955 --> 00:01:36,360
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   134
the binary code the developer
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   135
wants to actually run.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   136
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   137
30
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   138
00:01:36,370 --> 00:01:40,340
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   139
What makes such a project
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   140
actually feasible is that
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   141
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   142
31
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   143
00:01:40,340 --> 00:01:44,165
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   144
compilers fall neatly into
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   145
separate components.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   146
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   147
32
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   148
00:01:44,165 --> 00:01:47,210
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   149
So you can see the lexer and the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   150
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   151
33
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   152
00:01:47,210 --> 00:01:48,860
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   153
parser, which are often called the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   154
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   155
34
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   156
00:01:48,860 --> 00:01:50,990
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   157
front end of the compiler.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   158
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   159
35
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   160
00:01:50,990 --> 00:01:53,000
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   161
And the code generation is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   162
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   163
36
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   164
00:01:53,000 --> 00:01:55,700
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   165
called the backend
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   166
of the compiler.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   167
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   168
37
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   169
00:01:55,700 --> 00:01:57,620
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   170
And it so happens
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   171
that we will spend
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   172
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   173
38
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   174
00:01:57,620 --> 00:01:59,930
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   175
the first five weeks
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   176
on the lexer and
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   177
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   178
39
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   179
00:01:59,930 --> 00:02:04,970
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   180
the parser, and the next five
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   181
weeks on the code generator.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   182
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   183
40
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   184
00:02:04,970 --> 00:02:09,575
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   185
The first component of the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   186
compiler is the lexer.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   187
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   188
41
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   189
00:02:09,575 --> 00:02:14,480
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   190
The purpose of the lexer
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   191
is to scan a flat
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   192
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   193
42
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   194
00:02:14,480 --> 00:02:16,610
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   195
string, which the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   196
input program is at
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   197
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   198
43
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   199
00:02:16,610 --> 00:02:19,145
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   200
the beginning and separate out
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   201
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   202
44
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   203
00:02:19,145 --> 00:02:21,275
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   204
where are the words?
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   205
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   206
45
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   207
00:02:21,275 --> 00:02:23,600
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   208
You might think
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   209
in Western languages,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   210
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   211
46
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   212
00:02:23,600 --> 00:02:24,920
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   213
that is very easy:
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   214
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   215
47
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   216
00:02:24,920 --> 00:02:26,690
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   217
you just try to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   218
find out where are
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   219
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   220
48
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   221
00:02:26,690 --> 00:02:28,580
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   222
the whitespaces
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   223
and then you know,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   224
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   225
49
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   226
00:02:28,580 --> 00:02:31,955
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   227
where one word stops and
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   228
where the next word begins.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   229
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   230
50
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   231
00:02:31,955 --> 00:02:35,300
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   232
But, actually, computer
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   233
languages are more
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   234
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   235
51
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   236
00:02:35,300 --> 00:02:38,180
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   237
like ancient languages
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   238
that you see here.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   239
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   240
52
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   241
00:02:38,180 --> 00:02:39,860
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   242
For example, ancient Greek.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   243
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   244
53
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   245
00:02:39,860 --> 00:02:42,065
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   246
The writer wrote one word
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   247
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   248
54
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   249
00:02:42,065 --> 00:02:44,915
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   250
after the next and not
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   251
leaving any space.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   252
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   253
55
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   254
00:02:44,915 --> 00:02:47,930
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   255
So for example, in this
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   256
very simple string here
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   257
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   258
56
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   259
00:02:47,930 --> 00:02:50,960
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   260
read n, there is no space at all.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   261
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   262
57
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   263
00:02:50,960 --> 00:02:53,540
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   264
But the purpose of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   265
the lexer is to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   266
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   267
58
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   268
00:02:53,540 --> 00:02:56,570
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   269
separate it into five
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   270
different components.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   271
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   272
59
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   273
00:02:56,570 --> 00:02:59,450
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   274
It has to first say,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   275
well there is a read,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   276
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   277
60
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   278
00:02:59,450 --> 00:03:01,595
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   279
then there is a left parenthesis,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   280
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   281
61
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   282
00:03:01,595 --> 00:03:04,025
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   283
then there's an
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   284
identifier called n,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   285
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   286
62
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   287
00:03:04,025 --> 00:03:07,715
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   288
then there's a right parenthesis,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   289
and finally a semicolon.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   290
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   291
63
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   292
00:03:07,715 --> 00:03:11,345
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   293
And as you can see, there
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   294
is no space here at all.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   295
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   296
64
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   297
00:03:11,345 --> 00:03:14,150
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   298
And so the task of finding where
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   299
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   300
65
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   301
00:03:14,150 --> 00:03:17,705
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   302
are the words is actually
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   303
quite involved.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   304
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   305
66
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   306
00:03:17,705 --> 00:03:19,460
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   307
Also the classification is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   308
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   309
67
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   310
00:03:19,460 --> 00:03:22,055
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   311
sometimes not so straightforward.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   312
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   313
68
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   314
00:03:22,055 --> 00:03:24,350
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   315
If, for example, a writer
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   316
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   317
69
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   318
00:03:24,350 --> 00:03:26,360
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   319
wrote "if" on its own,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   320
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   321
70
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   322
00:03:26,360 --> 00:03:29,000
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   323
then this should be a
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   324
keyword classified as
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   325
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   326
71
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   327
00:03:29,000 --> 00:03:32,615
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   328
a keyword because it's
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   329
from the if-then-else.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   330
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   331
72
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   332
00:03:32,615 --> 00:03:36,800
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   333
But if the developer wrote
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   334
something longer like "iffoo",
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   335
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   336
73
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   337
00:03:36,800 --> 00:03:38,030
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   338
then this might just be
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   339
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   340
74
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   341
00:03:38,030 --> 00:03:39,860
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   342
a strange variable name
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   343
and he needs to be
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   344
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   345
75
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   346
00:03:39,860 --> 00:03:44,250
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   347
classified as a variable name.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   348
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   349
76
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   350
00:03:45,220 --> 00:03:50,720
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   351
The output of the lexer 
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   352
is a sequence of tokens.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   353
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   354
77
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   355
00:03:50,720 --> 00:03:53,480
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   356
These are essentially the words in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   357
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   358
78
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   359
00:03:53,480 --> 00:03:56,405
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   360
a sentence and their
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   361
classification:
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   362
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   363
79
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   364
00:03:56,405 --> 00:03:59,540
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   365
they are nouns,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   366
verbs or adjectives.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   367
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   368
80
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   369
00:03:59,540 --> 00:04:02,885
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   370
For us, of course, the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   371
classification would be keywords,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   372
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   373
81
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   374
00:04:02,885 --> 00:04:06,005
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   375
identifiers,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   376
operators, and so on.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   377
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   378
82
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   379
00:04:06,005 --> 00:04:11,480
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   380
And these tokens are the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   381
input for the parser,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   382
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   383
83
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   384
00:04:11,480 --> 00:04:13,085
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   385
the next component in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   386
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   387
84
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   388
00:04:13,085 --> 00:04:17,240
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   389
our compiler. The parser
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   390
essentially takes this list
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   391
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   392
85
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   393
00:04:17,240 --> 00:04:23,300
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   394
of tokens and transforms it
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   395
into a abstract syntax tree.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   396
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   397
86
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   398
00:04:23,300 --> 00:04:27,230
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   399
That means we have now the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   400
sentence, we have the words.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   401
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   402
87
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   403
00:04:27,230 --> 00:04:30,275
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   404
We have to relate
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   405
the words to each other
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   406
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   407
88
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   408
00:04:30,275 --> 00:04:33,680
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   409
in order to find out what
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   410
this sentence actually means.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   411
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   412
89
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   413
00:04:33,680 --> 00:04:35,405
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   414
In this case here,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   415
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   416
90
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   417
00:04:35,405 --> 00:04:38,595
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   418
we have to do a read...which
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   419
variable is affected?
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   420
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   421
91
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   422
00:04:38,595 --> 00:04:45,040
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   423
The variable n. Once we have
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   424
the abstract syntax tree,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   425
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   426
92
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   427
00:04:45,040 --> 00:04:49,225
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   428
it can go to the next component,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   429
to the code generator.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   430
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   431
93
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   432
00:04:49,225 --> 00:04:52,480
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   433
Whilst it doesn't look
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   434
like this in this picture,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   435
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   436
94
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   437
00:04:52,480 --> 00:04:54,100
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   438
the code generators is usually the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   439
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   440
95
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   441
00:04:54,100 --> 00:04:56,080
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   442
biggest part in a compiler.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   443
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   444
96
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   445
00:04:56,080 --> 00:04:58,720
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   446
And here we actually
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   447
have to cut corners.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   448
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   449
97
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   450
00:04:58,720 --> 00:05:02,470
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   451
Instead of producing binary
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   452
code, which can be run
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   453
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   454
98
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   455
00:05:02,470 --> 00:05:06,820
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   456
directly on a CPU, like X86 or ARM,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   457
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   458
99
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   459
00:05:06,820 --> 00:05:11,035
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   460
we actually target the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   461
Java Virtual Machine, the JVM.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   462
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   463
100
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   464
00:05:11,035 --> 00:05:13,600
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   465
This is very similar
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   466
to the Scala compiler,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   467
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   468
101
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   469
00:05:13,600 --> 00:05:16,480
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   470
for example, which
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   471
produces JVM code.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   472
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   473
102
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   474
00:05:16,480 --> 00:05:18,940
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   475
Or, of course, also 
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   476
the Java compiler,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   477
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   478
103
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   479
00:05:18,940 --> 00:05:20,845
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   480
which produces JVM code.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   481
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   482
104
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   483
00:05:20,845 --> 00:05:23,900
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   484
So here's a typical
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   485
example code which we're
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   486
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   487
105
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   488
00:05:23,900 --> 00:05:27,305
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   489
going to produce: Something
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   490
like variable 2
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   491
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   492
106
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   493
00:05:27,305 --> 00:05:30,545
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   494
gets allocated in the stack.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   495
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   496
107
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   497
00:05:30,545 --> 00:05:32,390
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   498
You subtract ten from it.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   499
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   500
108
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   501
00:05:32,390 --> 00:05:36,050
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   502
You test whether the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   503
variable is 0 and if yes,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   504
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   505
109
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   506
00:05:36,050 --> 00:05:40,170
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   507
you jump somewhere and otherwise
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   508
you reload the variable.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   509
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   510
110
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   511
00:05:41,560 --> 00:05:45,935
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   512
Even though we cut corners
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   513
into could generate apart.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   514
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   515
111
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   516
00:05:45,935 --> 00:05:48,575
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   517
By producing code for the JVM,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   518
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   519
112
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   520
00:05:48,575 --> 00:05:51,710
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   521
we can still obtain quite
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   522
impressive results.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   523
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   524
113
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   525
00:05:51,710 --> 00:05:56,225
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   526
Here's a program with
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   527
a cubic runtime behaviour.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   528
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   529
114
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   530
00:05:56,225 --> 00:05:59,525
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   531
When it has to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   532
calculate with 400 units,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   533
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   534
115
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   535
00:05:59,525 --> 00:06:02,165
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   536
it might need five
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   537
seconds to calculate.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   538
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   539
116
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   540
00:06:02,165 --> 00:06:05,345
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   541
But if it  has to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   542
calculate with 1200 units,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   543
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   544
117
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   545
00:06:05,345 --> 00:06:08,165
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   546
it already needs more
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   547
than two minutes.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   548
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   549
118
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   550
00:06:08,165 --> 00:06:10,940
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   551
Now these timings,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   552
the blue timings
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   553
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   554
119
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   555
00:06:10,940 --> 00:06:13,910
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   556
are obtained with an
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   557
interpreter of that program.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   558
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   559
120
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   560
00:06:13,910 --> 00:06:16,265
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   561
And you can see
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   562
just next to it,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   563
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   564
121
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   565
00:06:16,265 --> 00:06:18,050
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   566
the red times.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   567
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   568
122
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   569
00:06:18,050 --> 00:06:20,359
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   570
They are obtained
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   571
with the compiler
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   572
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   573
123
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   574
00:06:20,359 --> 00:06:23,135
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   575
we're going to write
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   576
in this module.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   577
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   578
124
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   579
00:06:23,135 --> 00:06:25,100
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   580
And there you can see, even
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   581
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   582
125
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   583
00:06:25,100 --> 00:06:29,000
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   584
with 1200,  the times get
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   585
hardly off the x-axis.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   586
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   587
126
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   588
00:06:29,000 --> 00:06:30,485
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   589
So in this instance,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   590
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   591
127
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   592
00:06:30,485 --> 00:06:32,630
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   593
our compiler will
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   594
have a speed up from
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   595
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   596
128
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   597
00:06:32,630 --> 00:06:37,589
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   598
approximately 1 million in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   599
comparison to the interpreter.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   600
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   601
129
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   602
00:06:38,350 --> 00:06:42,020
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   603
This might be a fun task
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   604
for your spare time.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   605
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   606
130
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   607
00:06:42,020 --> 00:06:44,480
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   608
This is a compiler explorer,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   609
which allows you to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   610
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   611
131
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   612
00:06:44,480 --> 00:06:47,060
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   613
write C code on the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   614
left-hand side.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   615
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   616
132
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   617
00:06:47,060 --> 00:06:49,115
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   618
It shows you on the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   619
right-hand side
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   620
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   621
133
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   622
00:06:49,115 --> 00:06:53,270
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   623
the machine code an
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   624
X86 CPU can run.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   625
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   626
134
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   627
00:06:53,270 --> 00:06:56,060
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   628
For example, it gives
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   629
you these color scheme and
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   630
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   631
135
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   632
00:06:56,060 --> 00:06:59,000
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   633
says that this addition
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   634
in the num + num in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   635
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   636
136
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   637
00:06:59,000 --> 00:07:01,580
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   638
the return statement,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   639
translates to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   640
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   641
137
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   642
00:07:01,580 --> 00:07:02,960
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   643
essentially an addition of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   644
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   645
138
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   646
00:07:02,960 --> 00:07:05,930
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   647
an register in the machine code.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   648
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   649
139
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   650
00:07:05,930 --> 00:07:08,480
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   651
I think this compiler
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   652
explorer also works for
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   653
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   654
140
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   655
00:07:08,480 --> 00:07:11,495
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   656
the Haskell language and
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   657
also produces ARM code,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   658
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   659
141
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   660
00:07:11,495 --> 00:07:15,245
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   661
not just code for the X86 CPUs.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   662
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   663
142
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   664
00:07:15,245 --> 00:07:18,950
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   665
As an aside, I also recommend
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   666
to watch the movie of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   667
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   668
143
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   669
00:07:18,950 --> 00:07:20,870
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   670
this guy because that is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   671
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   672
144
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   673
00:07:20,870 --> 00:07:22,940
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   674
very much like how I worked
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   675
at the beginning
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   676
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   677
145
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   678
00:07:22,940 --> 00:07:25,355
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   679
when implementing our compiler.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   680
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   681
146
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   682
00:07:25,355 --> 00:07:29,300
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   683
I wrote some code which I
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   684
knew how it should behave.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   685
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   686
147
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   687
00:07:29,300 --> 00:07:30,725
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   688
And then I just had a look
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   689
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   690
148
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   691
00:07:30,725 --> 00:07:32,900
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   692
what another compiler produces.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   693
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   694
149
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   695
00:07:32,900 --> 00:07:37,190
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   696
And I imitated that code
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   697
as much as I could.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   698
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   699
150
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   700
00:07:37,190 --> 00:07:39,380
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   701
Such a compiler explorer
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   702
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   703
151
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   704
00:07:39,380 --> 00:07:41,375
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   705
also exists for
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   706
the Java language.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   707
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   708
152
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   709
00:07:41,375 --> 00:07:42,935
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   710
Here's one where you can write
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   711
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   712
153
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   713
00:07:42,935 --> 00:07:44,915
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   714
Java code on the left-hand side,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   715
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   716
154
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   717
00:07:44,915 --> 00:07:47,930
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   718
and on the right-hand
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   719
side you get JVM code.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   720
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   721
155
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   722
00:07:47,930 --> 00:07:50,255
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   723
JVM code is a byte code
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   724
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   725
156
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   726
00:07:50,255 --> 00:07:53,405
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   727
which cannot be run
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   728
directly by the CPU,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   729
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   730
157
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   731
00:07:53,405 --> 00:07:55,220
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   732
but needs the Java
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   733
Virtual Machine
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   734
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   735
158
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   736
00:07:55,220 --> 00:07:57,170
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   737
to essentially interpret that.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   738
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   739
159
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   740
00:07:57,170 --> 00:07:58,760
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   741
This means it's not
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   742
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   743
160
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   744
00:07:58,760 --> 00:08:01,235
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   745
the most efficient way
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   746
how to run programs - 
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   747
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   748
161
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   749
00:08:01,235 --> 00:08:02,780
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   750
it would be much faster to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   751
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   752
162
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   753
00:08:02,780 --> 00:08:05,285
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   754
generate direct
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   755
code for the CPU.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   756
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   757
163
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   758
00:08:05,285 --> 00:08:07,700
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   759
But by producing bytecode,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   760
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   761
164
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   762
00:08:07,700 --> 00:08:11,435
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   763
we still run the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   764
programs quite fast
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   765
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   766
165
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   767
00:08:11,435 --> 00:08:13,520
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   768
and it also simplifies
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   769
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   770
166
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   771
00:08:13,520 --> 00:08:16,280
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   772
a number of issues
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   773
in our compiler.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   774
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   775
167
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   776
00:08:16,280 --> 00:08:18,980
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   777
One issue is about
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   778
memory management.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   779
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   780
168
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   781
00:08:18,980 --> 00:08:22,055
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   782
We don't have to be concerned
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   783
about register allocation,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   784
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   785
169
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   786
00:08:22,055 --> 00:08:25,505
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   787
which we would need
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   788
to do in a real CPU.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   789
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   790
170
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   791
00:08:25,505 --> 00:08:27,680
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   792
This will be done by the JVM.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   793
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   794
171
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   795
00:08:27,680 --> 00:08:29,750
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   796
It's also much easier to produce
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   797
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   798
172
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   799
00:08:29,750 --> 00:08:33,635
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   800
this bytecode rather than
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   801
actual machine code.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   802
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   803
173
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   804
00:08:33,635 --> 00:08:37,385
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   805
I think it's now a good time
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   806
to come to the question,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   807
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   808
174
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   809
00:08:37,385 --> 00:08:39,950
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   810
why on Earth studying compilers.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   811
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   812
175
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   813
00:08:39,950 --> 00:08:42,650
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   814
Compilers are such an
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   815
established subject
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   816
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   817
176
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   818
00:08:42,650 --> 00:08:43,985
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   819
in computer science.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   820
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   821
177
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   822
00:08:43,985 --> 00:08:46,100
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   823
Compilers do what they do.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   824
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   825
178
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   826
00:08:46,100 --> 00:08:48,410
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   827
Probably forrests have
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   828
been killed by
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   829
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   830
179
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   831
00:08:48,410 --> 00:08:52,190
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   832
all the books that have been
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   833
published on compilers.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   834
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   835
180
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   836
00:08:52,190 --> 00:08:56,690
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   837
Why on Earth studying
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   838
compilers in 2020? And even worse
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   839
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   840
181
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   841
00:08:56,690 --> 00:08:59,659
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   842
why implementing
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   843
your own compiler?
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   844
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   845
182
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   846
00:08:59,659 --> 00:09:02,720
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   847
Well, a slightly humorous take on
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   848
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   849
183
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   850
00:09:02,720 --> 00:09:05,105
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   851
that question is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   852
given by John Regehr,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   853
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   854
184
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   855
00:09:05,105 --> 00:09:08,375
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   856
who is a compiler hacker
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   857
from the University of Utah.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   858
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   859
185
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   860
00:09:08,375 --> 00:09:09,770
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   861
Essentially what he says,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   862
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   863
186
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   864
00:09:09,770 --> 00:09:12,110
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   865
if you're a good compiler hacker,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   866
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   867
187
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   868
00:09:12,110 --> 00:09:14,690
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   869
you have no problems
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   870
of finding a job.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   871
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   872
188
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   873
00:09:14,690 --> 00:09:17,210
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   874
He puts it as: It's effectively
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   875
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   876
189
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   877
00:09:17,210 --> 00:09:22,320
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   878
a "Perpetual Employment Act"
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   879
for solid compiler hackers.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   880
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   881
190
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   882
00:09:22,990 --> 00:09:27,380
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   883
Regehr gives two justifications
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   884
for that statement.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   885
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   886
191
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   887
00:09:27,380 --> 00:09:29,690
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   888
First, he says
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   889
hardware is getting
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   890
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   891
192
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   892
00:09:29,690 --> 00:09:32,585
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   893
wierder, rather than
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   894
getting clocked faster.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   895
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   896
193
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   897
00:09:32,585 --> 00:09:34,520
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   898
And that's definitely true.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   899
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   900
194
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   901
00:09:34,520 --> 00:09:36,590
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   902
My first computer many, many,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   903
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   904
195
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   905
00:09:36,590 --> 00:09:40,040
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   906
many years ago contained
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   907
only a single core CPU.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   908
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   909
196
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   910
00:09:40,040 --> 00:09:44,030
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   911
And it was such a simple CPU
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   912
that we wrote machine code
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   913
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   914
197
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   915
00:09:44,030 --> 00:09:46,220
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   916
directly for that CPU in order to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   917
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   918
198
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   919
00:09:46,220 --> 00:09:49,740
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   920
run our programs as
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   921
fast as possible.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   922
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   923
199
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   924
00:09:50,260 --> 00:09:53,600
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   925
In contrast, today, Regehr writes,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   926
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   927
200
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   928
00:09:53,600 --> 00:09:57,005
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   929
almost all processors are
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   930
multi-core nowadays.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   931
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   932
201
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   933
00:09:57,005 --> 00:09:59,870
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   934
And it looks like there's
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   935
an increasing asymmetry
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   936
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   937
202
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   938
00:09:59,870 --> 00:10:02,015
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   939
in resources across cores.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   940
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   941
203
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   942
00:10:02,015 --> 00:10:04,445
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   943
Processors come
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   944
with vector units,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   945
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   946
204
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   947
00:10:04,445 --> 00:10:07,189
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   948
crypto accelerators, etc.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   949
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   950
205
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   951
00:10:07,189 --> 00:10:11,930
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   952
We have TSPs, GPUs, ARM
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   953
big,little, Xeon Phis,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   954
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   955
206
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   956
00:10:11,930 --> 00:10:14,630
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   957
and this only scratches the surface.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   958
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   959
207
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   960
00:10:14,630 --> 00:10:17,255
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   961
And that is really a
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   962
problem for compilers,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   963
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   964
208
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   965
00:10:17,255 --> 00:10:20,495
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   966
because if we now
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   967
have multi-core CPUs,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   968
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   969
209
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   970
00:10:20,495 --> 00:10:23,180
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   971
that means our programs need
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   972
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   973
210
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   974
00:10:23,180 --> 00:10:26,075
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   975
to be scheduled
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   976
over several CPUs.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   977
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   978
211
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   979
00:10:26,075 --> 00:10:28,220
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   980
But the developer, of course,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   981
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   982
212
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   983
00:10:28,220 --> 00:10:30,545
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   984
doesn't want to know
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   985
anything about that.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   986
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   987
213
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   988
00:10:30,545 --> 00:10:34,655
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   989
Also, now we have more
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   990
CPUs in a computer,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   991
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   992
214
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   993
00:10:34,655 --> 00:10:37,400
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   994
but they seem to also come
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   995
with different resources.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   996
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   997
215
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   998
00:10:37,400 --> 00:10:40,310
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   999
So certain tasks in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1000
a program need to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1001
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1002
216
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1003
00:10:40,310 --> 00:10:43,460
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1004
be scheduled on some
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1005
cores, but not on others.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1006
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1007
217
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1008
00:10:43,460 --> 00:10:46,685
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1009
We also have for a
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1010
long time already GPUs,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1011
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1012
218
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1013
00:10:46,685 --> 00:10:49,025
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1014
which are highly specialized for
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1015
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1016
219
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1017
00:10:49,025 --> 00:10:53,240
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1018
very parallel computations
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1019
to do with graphics.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1020
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1021
220
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1022
00:10:53,240 --> 00:10:56,015
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1023
They at least in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1024
the past few years,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1025
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1026
221
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1027
00:10:56,015 --> 00:10:59,360
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1028
they could only do very
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1029
special computations,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1030
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1031
222
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1032
00:10:59,360 --> 00:11:02,255
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1033
but very, very fast
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1034
and highly parallel.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1035
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1036
223
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1037
00:11:02,255 --> 00:11:05,539
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1038
You couldn't use them for
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1039
general-purpose calculations,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1040
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1041
224
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1042
00:11:05,539 --> 00:11:10,205
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1043
which you would usually
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1044
use CPUs. Similarly, DSPs.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1045
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1046
225
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1047
00:11:10,205 --> 00:11:14,075
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1048
They are needed for all
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1049
the signal processing
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1050
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1051
226
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1052
00:11:14,075 --> 00:11:16,040
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1053
in mobile phones.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1054
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1055
227
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1056
00:11:16,040 --> 00:11:20,780
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1057
Without them, we just
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1058
wouldn't have mobile phones.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1059
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1060
228
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1061
00:11:20,780 --> 00:11:23,525
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1062
The second reason Regehr gives is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1063
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1064
229
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1065
00:11:23,525 --> 00:11:25,550
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1066
that we are getting tired of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1067
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1068
230
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1069
00:11:25,550 --> 00:11:27,620
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1070
low-level languages and
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1071
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1072
231
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1073
00:11:27,620 --> 00:11:30,335
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1074
their associated
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1075
security disasters.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1076
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1077
232
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1078
00:11:30,335 --> 00:11:32,435
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1079
While at the beginning
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1080
we were still
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1081
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1082
233
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1083
00:11:32,435 --> 00:11:34,760
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1084
happy to write machine
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1085
code directly,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1086
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1087
234
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1088
00:11:34,760 --> 00:11:37,175
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1089
nobody wants to do this nowadays.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1090
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1091
235
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1092
00:11:37,175 --> 00:11:39,515
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1093
He writes: :We want
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1094
to write new code
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1095
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1096
236
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1097
00:11:39,515 --> 00:11:44,120
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1098
to whatever extent possible in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1099
safer high-level languages.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1100
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1101
237
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1102
00:11:44,120 --> 00:11:46,130
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1103
Compilers are caught right
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1104
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1105
238
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1106
00:11:46,130 --> 00:11:48,365
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1107
in the middle of these
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1108
opposing trends:
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1109
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1110
239
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1111
00:11:48,365 --> 00:11:50,765
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1112
one of their main jobs
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1113
is to have bridged
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1114
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1115
240
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1116
00:11:50,765 --> 00:11:53,240
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1117
the large and growing gap between
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1118
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1119
241
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1120
00:11:53,240 --> 00:11:55,460
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1121
increasingly high-level languages
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1122
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1123
242
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1124
00:11:55,460 --> 00:11:58,565
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1125
and increasingly
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1126
wacky platforms.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1127
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1128
243
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1129
00:11:58,565 --> 00:12:00,320
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1130
So here you have it:
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1131
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1132
244
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1133
00:12:00,320 --> 00:12:02,750
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1134
It's still interesting to study
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1135
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1136
245
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1137
00:12:02,750 --> 00:12:06,244
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1138
compilers nowadays,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1139
especially nowadays.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1140
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1141
246
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1142
00:12:06,244 --> 00:12:09,875
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1143
Well, if you want to work
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1144
on interesting problems,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1145
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1146
247
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1147
00:12:09,875 --> 00:12:14,570
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1148
then very often you have to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1149
know compilers. Here's one:
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1150
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1151
248
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1152
00:12:14,570 --> 00:12:16,940
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1153
In the good old
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1154
times when we were
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1155
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1156
249
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1157
00:12:16,940 --> 00:12:19,310
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1158
still able to fly on holidays,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1159
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1160
250
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1161
00:12:19,310 --> 00:12:23,300
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1162
I'm sure you flew in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1163
a 777 Boeing airplane.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1164
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1165
251
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1166
00:12:23,300 --> 00:12:25,850
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1167
It's actually already
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1168
a quite old airplane.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1169
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1170
252
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1171
00:12:25,850 --> 00:12:28,295
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1172
But they had the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1173
following problem.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1174
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1175
253
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1176
00:12:28,295 --> 00:12:33,020
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1177
What happens if a CPU
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1178
calculates the wrong result?
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1179
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1180
254
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1181
00:12:33,020 --> 00:12:36,065
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1182
And that's actually not
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1183
such a hypothetical problem
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1184
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1185
255
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1186
00:12:36,065 --> 00:12:40,295
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1187
because you remember
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1188
the Pentium CPU
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1189
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1190
256
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1191
00:12:40,295 --> 00:12:43,655
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1192
in around 2000
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1193
contained a bug and it cost
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1194
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1195
257
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1196
00:12:43,655 --> 00:12:48,140
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1197
a lot of money for Intel
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1198
to replace this CPU.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1199
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1200
258
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1201
00:12:48,140 --> 00:12:51,470
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1202
What happens if an CPU calculates
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1203
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1204
259
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1205
00:12:51,470 --> 00:12:56,105
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1206
the wrong result in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1207
some navigation data?
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1208
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1209
260
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1210
00:12:56,105 --> 00:12:58,520
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1211
Do you just let the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1212
airplane crash?
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1213
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1214
261
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1215
00:12:58,520 --> 00:13:00,650
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1216
Well, the engineers at Boeing
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1217
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1218
262
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1219
00:13:00,650 --> 00:13:02,675
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1220
came up with the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1221
following solution:
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1222
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1223
263
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1224
00:13:02,675 --> 00:13:05,055
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1225
They writing one program that
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1226
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1227
264
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1228
00:13:05,055 --> 00:13:08,690
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1229
essentially controls
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1230
how their airplane
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1231
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1232
265
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1233
00:13:08,690 --> 00:13:10,295
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1234
is supposed to fly.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1235
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1236
266
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1237
00:13:10,295 --> 00:13:13,040
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1238
In a programming language
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1239
called Ada that is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1240
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1241
267
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1242
00:13:13,040 --> 00:13:15,770
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1243
slightly obscure
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1244
programming language
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1245
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1246
268
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1247
00:13:15,770 --> 00:13:18,650
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1248
bat is very well-known in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1249
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1250
269
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1251
00:13:18,650 --> 00:13:22,040
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1252
areas where safety
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1253
is really paramount.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1254
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1255
270
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1256
00:13:22,040 --> 00:13:25,010
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1257
And what they did is they
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1258
took this one Ada program
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1259
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1260
271
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1261
00:13:25,010 --> 00:13:28,010
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1262
and they essentially
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1263
took three compilers,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1264
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1265
272
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1266
00:13:28,010 --> 00:13:29,435
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1267
independent compilers,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1268
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1269
273
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1270
00:13:29,435 --> 00:13:32,045
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1271
which compiled the program
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1272
to different CPUs.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1273
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1274
274
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1275
00:13:32,045 --> 00:13:33,815
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1276
One CPU from Intel,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1277
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1278
275
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1279
00:13:33,815 --> 00:13:37,235
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1280
one CPU for Motorola,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1281
and one from AMD.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1282
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1283
276
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1284
00:13:37,235 --> 00:13:38,930
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1285
And these are quite different
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1286
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1287
277
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1288
00:13:38,930 --> 00:13:40,955
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1289
CPUs. Also some of them
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1290
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1291
278
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1292
00:13:40,955 --> 00:13:42,755
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1293
have quite different philosophies
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1294
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1295
279
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1296
00:13:42,755 --> 00:13:45,245
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1297
on how they do their calculations.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1298
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1299
280
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1300
00:13:45,245 --> 00:13:47,330
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1301
Now what they could do is, they
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1302
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1303
281
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1304
00:13:47,330 --> 00:13:50,690
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1305
could put these three computers
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1306
on a single board and
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1307
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1308
282
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1309
00:13:50,690 --> 00:13:54,335
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1310
could now run all their
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1311
calculations in parallel.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1312
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1313
283
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1314
00:13:54,335 --> 00:13:56,690
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1315
One with an Intel
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1316
CPU, one with
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1317
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1318
284
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1319
00:13:56,690 --> 00:14:00,245
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1320
Motorola, and one with a 
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1321
Risc computers say.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1322
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1323
285
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1324
00:14:00,245 --> 00:14:02,795
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1325
And then they could
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1326
compare the results.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1327
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1328
286
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1329
00:14:02,795 --> 00:14:05,030
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1330
And if these results differed,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1331
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1332
287
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1333
00:14:05,030 --> 00:14:07,940
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1334
then they knew one CPU must have
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1335
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1336
288
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1337
00:14:07,940 --> 00:14:11,600
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1338
calculated the wrong result
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1339
and probably told the pilot,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1340
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1341
289
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1342
00:14:11,600 --> 00:14:14,850
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1343
please don't let
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1344
that airplane crash.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1345
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1346
290
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1347
00:14:14,950 --> 00:14:17,270
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1348
Not just Boeing is doing
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1349
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1350
291
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1351
00:14:17,270 --> 00:14:19,355
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1352
interesting things
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1353
with compilers.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1354
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1355
292
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1356
00:14:19,355 --> 00:14:22,640
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1357
Also, Airbus in a completely
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1358
different setting
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1359
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1360
293
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1361
00:14:22,640 --> 00:14:24,260
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1362
is using compilers in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1363
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1364
294
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1365
00:14:24,260 --> 00:14:26,420
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1366
a interesting way to get
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1367
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1368
295
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1369
00:14:26,420 --> 00:14:30,195
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1370
their airplanes up in the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1371
air and let them not crush.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1372
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1373
296
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1374
00:14:30,195 --> 00:14:33,010
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1375
In another example, I
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1376
have friends working
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1377
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1378
297
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1379
00:14:33,010 --> 00:14:35,350
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1380
at Facebook who work on
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1381
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1382
298
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1383
00:14:35,350 --> 00:14:37,900
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1384
compilers to make sense
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1385
are they are heaps
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1386
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1387
299
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1388
00:14:37,900 --> 00:14:41,470
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1389
and heaps and heaps of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1390
code written in PHP,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1391
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1392
300
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1393
00:14:41,470 --> 00:14:42,880
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1394
which is one of the most
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1395
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1396
301
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1397
00:14:42,880 --> 00:14:44,920
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1398
horrible languages on the planet.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1399
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1400
302
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1401
00:14:44,920 --> 00:14:46,630
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1402
The bottom line is,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1403
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1404
303
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1405
00:14:46,630 --> 00:14:50,499
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1406
compilers are still very,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1407
very important nowadays.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1408
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1409
304
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1410
00:14:50,499 --> 00:14:52,810
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1411
And for the foreseeable future,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1412
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1413
305
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1414
00:14:52,810 --> 00:14:56,150
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1415
compilers still need
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1416
to be developed.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1417
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1418
306
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1419
00:14:57,270 --> 00:15:00,235
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1420
When one talks about
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1421
compilers then
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1422
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1423
307
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1424
00:15:00,235 --> 00:15:01,630
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1425
there is, of course,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1426
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1427
308
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1428
00:15:01,630 --> 00:15:05,395
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1429
a magic element involved. They're
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1430
large software systems.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1431
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1432
309
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1433
00:15:05,395 --> 00:15:07,750
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1434
And yes, they're supposed to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1435
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1436
310
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1437
00:15:07,750 --> 00:15:10,525
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1438
generate a runnable binary for
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1439
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1440
311
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1441
00:15:10,525 --> 00:15:12,105
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1442
a high-level program,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1443
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1444
312
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1445
00:15:12,105 --> 00:15:15,230
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1446
but they are also supposed
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1447
to make our programs better.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1448
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1449
313
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1450
00:15:15,230 --> 00:15:18,920
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1451
They optimize our
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1452
programs to run faster.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1453
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1454
314
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1455
00:15:18,920 --> 00:15:22,610
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1456
And there's a lot of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1457
"magic" involved in that.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1458
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1459
315
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1460
00:15:22,610 --> 00:15:24,890
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1461
Magic in inverted quotes.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1462
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1463
316
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1464
00:15:24,890 --> 00:15:26,480
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1465
I would like to show you one of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1466
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1467
317
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1468
00:15:26,480 --> 00:15:29,340
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1469
this magic in one example.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1470
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1471
318
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1472
00:15:31,090 --> 00:15:33,110
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1473
I hope you still have
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1474
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1475
319
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1476
00:15:33,110 --> 00:15:36,485
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1477
fond memories of the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1478
PEP module last year.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1479
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1480
320
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1481
00:15:36,485 --> 00:15:40,280
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1482
And you might remember BF
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1483
language, we had to look at.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1484
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1485
321
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1486
00:15:40,280 --> 00:15:43,670
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1487
This BF language contains
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1488
the kind of memory and
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1489
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1490
322
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1491
00:15:43,670 --> 00:15:45,680
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1492
the memory pointer which can
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1493
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1494
323
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1495
00:15:45,680 --> 00:15:48,140
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1496
be moved to the left
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1497
or to the right,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1498
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1499
324
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1500
00:15:48,140 --> 00:15:50,270
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1501
where an integer in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1502
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1503
325
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1504
00:15:50,270 --> 00:15:52,925
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1505
the memory can be either
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1506
increased or decreased.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1507
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1508
326
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1509
00:15:52,925 --> 00:15:55,730
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1510
We can print
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1511
out the content of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1512
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1513
327
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1514
00:15:55,730 --> 00:15:59,645
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1515
the current cell or input
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1516
something into a cell.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1517
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1518
328
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1519
00:15:59,645 --> 00:16:01,850
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1520
And we have loops, and
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1521
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1522
329
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1523
00:16:01,850 --> 00:16:04,220
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1524
everything else is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1525
considered a comment.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1526
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1527
330
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1528
00:16:04,220 --> 00:16:06,290
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1529
What's good about
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1530
this BF language is that 
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1531
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1532
331
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1533
00:16:06,290 --> 00:16:08,180
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1534
we don't even need a front end.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1535
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1536
332
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1537
00:16:08,180 --> 00:16:09,920
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1538
We can immediately start writing
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1539
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1540
333
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1541
00:16:09,920 --> 00:16:13,529
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1542
an interpreter or a compiler.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1543
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1544
334
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1545
00:16:15,850 --> 00:16:18,155
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1546
Okay, I have here
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1547
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1548
335
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1549
00:16:18,155 --> 00:16:20,600
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1550
a very straightforward
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1551
interpreter for
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1552
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1553
336
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1554
00:16:20,600 --> 00:16:22,865
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1555
the BF language. You
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1556
might recognize it.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1557
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1558
337
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1559
00:16:22,865 --> 00:16:27,120
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1560
And I run it with a
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1561
benchmark program, which
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1562
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1563
338
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1564
00:16:27,760 --> 00:16:30,960
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1565
might also recognize.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1566
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1567
339
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1568
00:16:31,560 --> 00:16:36,835
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1569
And this will now take
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1570
approximately ten minutes.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1571
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1572
340
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1573
00:16:36,835 --> 00:16:39,920
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1574
So see you in a bit.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1575
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1576
341
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1577
00:16:40,710 --> 00:16:43,660
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1578
Okay, this has finished now.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1579
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1580
342
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1581
00:16:43,660 --> 00:16:45,925
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1582
Almost took 11 minutes.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1583
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1584
343
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1585
00:16:45,925 --> 00:16:47,410
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1586
The question now is,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1587
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1588
344
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1589
00:16:47,410 --> 00:16:51,820
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1590
can we to better? 
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1591
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1592
345
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1593
00:16:51,820 --> 00:16:53,260
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1594
Actually, it is not difficult
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1595
to do better
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1596
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1597
346
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1598
00:16:53,260 --> 00:16:54,970
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1599
than this simple-minded
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1600
interpreter.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1601
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1602
347
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1603
00:16:54,970 --> 00:16:58,690
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1604
It is relatively
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1605
straightforward to take
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1606
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1607
348
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1608
00:16:58,690 --> 00:17:03,520
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1609
a BF program and generate equivalent C code.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1610
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1611
349
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1612
00:17:03,520 --> 00:17:06,520
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1613
This can be easily
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1614
done by somehow
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1615
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1616
350
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1617
00:17:06,520 --> 00:17:09,490
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1618
representing the BF memory in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1619
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1620
351
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1621
00:17:09,490 --> 00:17:12,310
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1622
C. We can do this
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1623
by just an array of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1624
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1625
352
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1626
00:17:12,310 --> 00:17:15,380
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1627
characters and a memory pointer,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1628
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1629
353
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1630
00:17:15,380 --> 00:17:19,265
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1631
which points, in this case
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1632
in the middle of this array.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1633
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1634
354
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1635
00:17:19,265 --> 00:17:21,800
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1636
Then it's very easy to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1637
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1638
355
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1639
00:17:21,800 --> 00:17:24,275
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1640
translate the movement
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1641
of the 
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1642
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1643
356
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1644
00:17:24,275 --> 00:17:28,610
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1645
BF memory pointer into increments
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1646
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1647
357
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1648
00:17:28,610 --> 00:17:31,520
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1649
and decrements of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1650
the C pointer.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1651
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1652
358
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1653
00:17:31,520 --> 00:17:33,050
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1654
Similarly, if you want to increment or
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1655
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1656
359
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1657
00:17:33,050 --> 00:17:35,915
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1658
decrement an element
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1659
in this array,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1660
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1661
360
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1662
00:17:35,915 --> 00:17:38,975
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1663
you just have to look up what
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1664
the pointer is and increment
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1665
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1666
361
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1667
00:17:38,975 --> 00:17:42,140
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1668
and decrement what's
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1669
under the pointer. Similarly
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1670
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1671
362
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1672
00:17:42,140 --> 00:17:43,790
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1673
we can print out something from
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1674
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1675
363
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1676
00:17:43,790 --> 00:17:47,450
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1677
this array and we can put
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1678
something into this array.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1679
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1680
364
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1681
00:17:47,450 --> 00:17:49,610
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1682
What is great is that the loops
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1683
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1684
365
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1685
00:17:49,610 --> 00:17:51,530
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1686
from the BF language directly
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1687
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1688
366
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1689
00:17:51,530 --> 00:17:55,580
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1690
translate into while
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1691
loops of the C language.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1692
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1693
367
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1694
00:17:55,580 --> 00:17:58,100
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1695
We essentially have to check is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1696
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1697
368
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1698
00:17:58,100 --> 00:18:02,450
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1699
the memory pointer pointing
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1700
to a field that is 0.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1701
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1702
369
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1703
00:18:02,450 --> 00:18:03,950
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1704
Then we exit the loop,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1705
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1706
370
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1707
00:18:03,950 --> 00:18:05,719
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1708
and otherwise we continue.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1709
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1710
371
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1711
00:18:05,719 --> 00:18:09,575
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1712
And that can be done
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1713
nicely in C, like so.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1714
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1715
372
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1716
00:18:09,575 --> 00:18:12,995
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1717
And everything else is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1718
again, just a comment.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1719
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1720
373
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1721
00:18:12,995 --> 00:18:16,445
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1722
So I have implemented
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1723
this translation for you.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1724
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1725
374
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1726
00:18:16,445 --> 00:18:19,700
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1727
Remember this was the BF
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1728
program for the Mandelbrot Set.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1729
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1730
375
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1731
00:18:19,700 --> 00:18:23,690
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1732
The equivalent C code
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1733
would look like this.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1734
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1735
376
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1736
00:18:23,690 --> 00:18:27,110
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1737
So you can see at the beginning
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1738
is this generation of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1739
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1740
377
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1741
00:18:27,110 --> 00:18:30,140
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1742
the BF memory represented
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1743
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1744
378
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1745
00:18:30,140 --> 00:18:32,345
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1746
as an array and the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1747
memory pointer.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1748
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1749
379
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1750
00:18:32,345 --> 00:18:34,550
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1751
And then inside there are lots
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1752
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1753
380
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1754
00:18:34,550 --> 00:18:36,770
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1755
of increments and decrements
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1756
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1757
381
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1758
00:18:36,770 --> 00:18:41,915
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1759
of pointers and also
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1760
contents of this array.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1761
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1762
382
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1763
00:18:41,915 --> 00:18:45,199
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1764
Now fingers crossed that this
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1765
is the correct translation.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1766
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1767
383
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1768
00:18:45,199 --> 00:18:48,125
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1769
And I can also run this
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1770
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1771
384
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1772
00:18:48,125 --> 00:18:52,805
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1773
and you should see that it runs
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1774
substantially faster.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1775
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1776
385
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1777
00:18:52,805 --> 00:18:55,880
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1778
I'm using now my GCC on
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1779
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1780
386
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1781
00:18:55,880 --> 00:19:01,040
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1782
my computer to generate an
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1783
executable for the C program.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1784
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1785
387
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1786
00:19:01,040 --> 00:19:04,295
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1787
And it should run for
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1788
approximately 20 seconds.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1789
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1790
388
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1791
00:19:04,295 --> 00:19:07,620
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1792
So let's just wait for that.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1793
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1794
389
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1795
00:19:11,430 --> 00:19:14,950
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1796
Okay. What is important to note
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1797
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1798
390
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1799
00:19:14,950 --> 00:19:19,885
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1800
here is that I'm running GCC,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1801
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1802
391
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1803
00:19:19,885 --> 00:19:22,450
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1804
this the option -O0.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1805
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1806
392
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1807
00:19:22,450 --> 00:19:25,600
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1808
That means I tell GCC to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1809
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1810
393
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1811
00:19:25,600 --> 00:19:28,840
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1812
generate a binary which I
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1813
can run as you can see.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1814
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1815
394
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1816
00:19:28,840 --> 00:19:31,810
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1817
But don't apply any optimization.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1818
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1819
395
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1820
00:19:31,810 --> 00:19:38,395
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1821
Keep this in mind.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1822
As a second try,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1823
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1824
396
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1825
00:19:38,395 --> 00:19:42,595
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1826
of course, I can try to now
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1827
generate a better C program.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1828
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1829
397
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1830
00:19:42,595 --> 00:19:46,060
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1831
And as you'll remember from
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1832
the PEP course, it can,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1833
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1834
398
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1835
00:19:46,060 --> 00:19:50,095
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1836
for example, combine
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1837
several steps
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1838
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1839
399
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1840
00:19:50,095 --> 00:19:51,670
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1841
going to the right of the memory
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1842
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1843
400
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1844
00:19:51,670 --> 00:19:53,310
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1845
pointer or to the left.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1846
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1847
401
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1848
00:19:53,310 --> 00:19:55,280
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1849
We can combine that into
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1850
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1851
402
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1852
00:19:55,280 --> 00:19:58,760
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1853
one single increment or
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1854
decrement of not just one,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1855
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1856
403
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1857
00:19:58,760 --> 00:20:00,050
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1858
but of like n,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1859
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1860
404
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1861
00:20:00,050 --> 00:20:02,570
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1862
where n is greater
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1863
than 1. Similarly, 
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1864
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1865
405
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1866
00:20:02,570 --> 00:20:06,980
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1867
if we increment or decrement
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1868
the content of this array,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1869
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1870
406
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1871
00:20:06,980 --> 00:20:09,740
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1872
we can do this in one
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1873
big step by incrementing
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1874
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1875
407
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1876
00:20:09,740 --> 00:20:12,710
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1877
that by not just one
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1878
and increment by one,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1879
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1880
408
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1881
00:20:12,710 --> 00:20:15,635
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1882
but increment and decrement
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1883
by bigger numbers.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1884
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1885
409
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1886
00:20:15,635 --> 00:20:18,870
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1887
Everything else stays the same.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1888
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1889
410
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1890
00:20:20,830 --> 00:20:23,270
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1891
Again, I have implemented that
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1892
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1893
411
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1894
00:20:23,270 --> 00:20:24,950
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1895
for you and you can see now
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1896
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1897
412
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1898
00:20:24,950 --> 00:20:26,835
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1899
the C program moves
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1900
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1901
413
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1902
00:20:26,835 --> 00:20:30,455
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1903
the memory pointer and bigger
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1904
chunks and also increases,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1905
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1906
414
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1907
00:20:30,455 --> 00:20:32,810
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1908
for example, here, memory content
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1909
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1910
415
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1911
00:20:32,810 --> 00:20:35,555
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1912
by 15 than just by 1.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1913
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1914
416
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1915
00:20:35,555 --> 00:20:38,520
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1916
Now let's run this program.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1917
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1918
417
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1919
00:20:38,530 --> 00:20:40,760
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1920
Again, I use GCC
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1921
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1922
418
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1923
00:20:40,760 --> 00:20:45,350
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1924
to compile the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1925
C program and run it.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1926
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1927
419
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1928
00:20:45,350 --> 00:20:49,025
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1929
And again, I made sure
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1930
that it only runs this with
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1931
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1932
420
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1933
00:20:49,025 --> 00:20:51,530
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1934
no optimizations switched on.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1935
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1936
421
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1937
00:20:51,530 --> 00:20:54,050
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1938
So there's minus O0.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1939
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1940
422
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1941
00:20:54,050 --> 00:20:56,090
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1942
And you can see
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1943
it's now down from
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1944
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1945
423
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1946
00:20:56,090 --> 00:20:59,990
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1947
20 seconds to just 6 seconds.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1948
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1949
424
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1950
00:20:59,990 --> 00:21:06,065
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1951
I show you, the GCC is
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1952
called with -O0.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1953
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1954
425
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1955
00:21:06,065 --> 00:21:08,990
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1956
So this reduction
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1957
in time is purely
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1958
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1959
426
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1960
00:21:08,990 --> 00:21:12,755
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1961
because I produced better C code,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1962
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1963
427
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1964
00:21:12,755 --> 00:21:17,220
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1965
which the compiler then just
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1966
transformed into a binary.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1967
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1968
428
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1969
00:21:18,910 --> 00:21:22,055
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1970
So far there's
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1971
nothing interesting.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1972
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1973
429
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1974
00:21:22,055 --> 00:21:25,385
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1975
We used in the first instance
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1976
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1977
430
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1978
00:21:25,385 --> 00:21:29,240
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1979
single increments and use GCC with
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1980
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1981
431
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1982
00:21:29,240 --> 00:21:31,700
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1983
O0 to not introduce
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1984
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1985
432
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1986
00:21:31,700 --> 00:21:35,255
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1987
any optimizations and run
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1988
essentially 20 seconds.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1989
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1990
433
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1991
00:21:35,255 --> 00:21:37,880
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1992
If we then increment
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1993
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1994
434
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1995
00:21:37,880 --> 00:21:40,895
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1996
in bigger chunks or
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1997
decrement in bigger chunks,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1998
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1999
435
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2000
00:21:40,895 --> 00:21:45,380
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2001
use again GCC with -O0,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2002
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2003
436
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2004
00:21:45,380 --> 00:21:50,030
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2005
then it runs in approximately
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2006
five to six seconds.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2007
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2008
437
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2009
00:21:50,030 --> 00:21:51,950
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2010
Now let me do the following:
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2011
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2012
438
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2013
00:21:51,950 --> 00:21:55,430
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2014
I take the first program which
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2015
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2016
439
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2017
00:21:55,430 --> 00:21:58,070
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2018
increments everything
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2019
in a single steps
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2020
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2021
440
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2022
00:21:58,070 --> 00:22:00,185
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2023
or decremented in single steps.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2024
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2025
441
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2026
00:22:00,185 --> 00:22:04,835
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2027
But now I use the full
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2028
capacity of the GCC compiler
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2029
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2030
442
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2031
00:22:04,835 --> 00:22:06,560
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2032
and I tell it,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2033
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2034
443
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2035
00:22:06,560 --> 00:22:11,370
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2036
please do introduce some
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2037
optimizations as you want.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2038
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2039
444
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2040
00:22:11,590 --> 00:22:15,799
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2041
And I'm now running
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2042
exactly the same program...
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2043
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2044
445
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2045
00:22:15,799 --> 00:22:17,870
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2046
just the GCC compiler will
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2047
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2048
446
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2049
00:22:17,870 --> 00:22:22,325
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2050
now have the optimizations
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2051
switched on.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2052
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2053
447
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2054
00:22:22,325 --> 00:22:24,380
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2055
Let's see what happens.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2056
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2057
448
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2058
00:22:24,380 --> 00:22:27,320
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2059
One first needs to compile it.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2060
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2061
449
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2062
00:22:27,320 --> 00:22:29,795
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2063
And that takes a little while.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2064
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2065
450
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2066
00:22:29,795 --> 00:22:32,000
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2067
Okay, this has now
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2068
finished and also
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2069
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2070
451
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2071
00:22:32,000 --> 00:22:34,115
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2072
the calculation of the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2073
picture has finished.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2074
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2075
452
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2076
00:22:34,115 --> 00:22:35,960
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2077
And as you can see, it took
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2078
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2079
453
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2080
00:22:35,960 --> 00:22:38,510
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2081
approximately eight
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2082
seconds to calculate.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2083
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2084
454
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2085
00:22:38,510 --> 00:22:41,645
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2086
That is down from
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2087
approximately 20 seconds.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2088
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2089
455
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2090
00:22:41,645 --> 00:22:46,040
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2091
So the difference from
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2092
switching from -O0 to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2093
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2094
456
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2095
00:22:46,040 --> 00:22:51,935
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2096
-O3 meant that now
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2097
the program runs almost as
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2098
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2099
457
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2100
00:22:51,935 --> 00:22:54,800
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2101
fast as where I by hand
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2102
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2103
458
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2104
00:22:54,800 --> 00:22:58,610
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2105
combined several steps
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2106
into a big chunk.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2107
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2108
459
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2109
00:22:58,610 --> 00:23:00,170
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2110
That is essentially what
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2111
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2112
460
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2113
00:23:00,170 --> 00:23:03,485
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2114
the GCC compiler
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2115
found out on its own.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2116
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2117
461
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2118
00:23:03,485 --> 00:23:05,840
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2119
That rather than jumping
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2120
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2121
462
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2122
00:23:05,840 --> 00:23:08,465
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2123
in just single increments by one,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2124
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2125
463
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2126
00:23:08,465 --> 00:23:11,510
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2127
they can be all combined
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2128
into bigger chunks.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2129
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2130
464
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2131
00:23:11,510 --> 00:23:16,595
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2132
It hasn't been as successful
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2133
as if I do this explicitly.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2134
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2135
465
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2136
00:23:16,595 --> 00:23:18,620
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2137
But that is the magic that
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2138
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2139
466
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2140
00:23:18,620 --> 00:23:22,560
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2141
the compiler essentially found
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2142
out, that this can be done.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2143
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2144
467
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2145
00:23:22,960 --> 00:23:25,700
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2146
Just a quick recap of what I did.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2147
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2148
468
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2149
00:23:25,700 --> 00:23:28,160
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2150
I first run the program with
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2151
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2152
469
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2153
00:23:28,160 --> 00:23:31,730
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2154
an interpreter and it took
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2155
approximately 11 minutes.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2156
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2157
470
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2158
00:23:31,730 --> 00:23:36,559
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2159
Then I had a simple compiler
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2160
generating a C program.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2161
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2162
471
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2163
00:23:36,559 --> 00:23:40,880
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2164
And the C compiler then had
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2165
no optimization switched on.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2166
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2167
472
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2168
00:23:40,880 --> 00:23:44,645
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2169
In the C program had only
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2170
small single increments and
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2171
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2172
473
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2173
00:23:44,645 --> 00:23:46,820
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2174
small jumps. Then it took
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2175
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2176
474
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2177
00:23:46,820 --> 00:23:49,775
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2178
approximately 20 seconds for
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2179
to same program.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2180
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2181
475
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2182
00:23:49,775 --> 00:23:52,460
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2183
Then I had a more advanced
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2184
compiler which does
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2185
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2186
476
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2187
00:23:52,460 --> 00:23:55,730
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2188
big increments and
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2189
also big jumps.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2190
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2191
477
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2192
00:23:55,730 --> 00:23:57,470
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2193
But again, the compiler didn't
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2194
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2195
478
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2196
00:23:57,470 --> 00:23:59,210
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2197
introduce any optimization on its
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2198
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2199
479
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2200
00:23:59,210 --> 00:24:02,915
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2201
own. Then it took
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2202
approximately five seconds.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2203
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2204
480
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2205
00:24:02,915 --> 00:24:05,210
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2206
Then I went back to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2207
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2208
481
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2209
00:24:05,210 --> 00:24:08,465
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2210
the simple compiler with
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2211
only small steps.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2212
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2213
482
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2214
00:24:08,465 --> 00:24:10,400
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2215
But then told the C compiler
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2216
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2217
483
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2218
00:24:10,400 --> 00:24:12,950
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2219
to fully optimize this program.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2220
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2221
484
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2222
00:24:12,950 --> 00:24:14,690
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2223
And then it took more
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2224
or less the same
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2225
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2226
485
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2227
00:24:14,690 --> 00:24:17,465
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2228
time as the more advanced compiler.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2229
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2230
486
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2231
00:24:17,465 --> 00:24:20,465
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2232
I encourage you to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2233
look at this yourself.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2234
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2235
487
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2236
00:24:20,465 --> 00:24:24,240
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2237
As usual, all the programs
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2238
are uploaded on KEATS.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2239
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2240
488
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2241
00:24:25,090 --> 00:24:27,590
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2242
To finish this
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2243
introduction video,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2244
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2245
489
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2246
00:24:27,590 --> 00:24:30,170
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2247
let me give you an
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2248
extremely brief overview
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2249
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2250
490
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2251
00:24:30,170 --> 00:24:32,855
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2252
over the history of compilers.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2253
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2254
491
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2255
00:24:32,855 --> 00:24:35,450
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2256
While I  argued at the beginning
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2257
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2258
492
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2259
00:24:35,450 --> 00:24:38,915
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2260
that it's interesting to
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2261
study compilers nowadays,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2262
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2263
493
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2264
00:24:38,915 --> 00:24:40,400
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2265
obviously in this field,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2266
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2267
494
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2268
00:24:40,400 --> 00:24:43,295
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2269
we are standing on the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2270
shoulders of giants.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2271
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2272
495
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2273
00:24:43,295 --> 00:24:46,520
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2274
The field started with Turing and 
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2275
Turing machines,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2276
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2277
496
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2278
00:24:46,520 --> 00:24:49,130
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2279
which were introduced in 1936.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2280
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2281
497
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2282
00:24:49,130 --> 00:24:52,175
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2283
Turing machines already had
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2284
this concept of memory
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2285
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2286
498
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2287
00:24:52,175 --> 00:24:55,190
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2288
and also programs
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2289
of Turing machines
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2290
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2291
499
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2292
00:24:55,190 --> 00:24:58,775
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2293
needed to be translated
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2294
between different formalisms.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2295
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2296
500
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2297
00:24:58,775 --> 00:25:01,100
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2298
Regular expressions,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2299
which will play
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2300
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2301
501
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2302
00:25:01,100 --> 00:25:03,905
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2303
an important role in our
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2304
lexer of our compiler,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2305
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2306
502
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2307
00:25:03,905 --> 00:25:06,800
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2308
were introduced in 1956.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2309
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2310
503
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2311
00:25:06,800 --> 00:25:10,370
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2312
Arguably the first compiler
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2313
was introduced in
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2314
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2315
504
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2316
00:25:10,370 --> 00:25:13,850
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2317
1957 for a language called COBOL.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2318
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2319
505
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2320
00:25:13,850 --> 00:25:16,550
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2321
This was done by Grace Hopper.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2322
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2323
506
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2324
00:25:16,550 --> 00:25:18,770
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2325
And I recommend that
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2326
you have and look
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2327
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2328
507
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2329
00:25:18,770 --> 00:25:20,900
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2330
at this interview
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2331
of Grace Hopper,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2332
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2333
508
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2334
00:25:20,900 --> 00:25:22,130
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2335
which shows she must have been
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2336
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2337
509
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2338
00:25:22,130 --> 00:25:24,424
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2339
a very interesting personality.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2340
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2341
510
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2342
00:25:24,424 --> 00:25:27,770
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2343
But despite the
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2344
maturity of this field,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2345
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2346
511
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2347
00:25:27,770 --> 00:25:29,465
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2348
it might be surprising that
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2349
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2350
512
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2351
00:25:29,465 --> 00:25:31,505
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2352
research papers are
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2353
still published.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2354
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2355
513
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2356
00:25:31,505 --> 00:25:34,835
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2357
And we will find that
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2358
out in the module.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2359
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2360
514
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2361
00:25:34,835 --> 00:25:37,760
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2362
And a number of
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2363
problems which we would
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2364
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2365
515
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2366
00:25:37,760 --> 00:25:41,270
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2367
assume are already solved by now,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2368
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2369
516
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2370
00:25:41,270 --> 00:25:43,730
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2371
actually turning out
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2372
that they are not solved.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2373
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2374
517
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2375
00:25:43,730 --> 00:25:45,620
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2376
Here in this blog post,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2377
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2378
518
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2379
00:25:45,620 --> 00:25:47,825
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2380
for example, Laurie Tratt
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2381
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2382
519
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2383
00:25:47,825 --> 00:25:49,550
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2384
who is also from this department,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2385
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2386
520
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2387
00:25:49,550 --> 00:25:51,740
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2388
argued that parsing, for example,
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2389
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2390
521
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2391
00:25:51,740 --> 00:25:54,035
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2392
isn't a solved problem yet.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2393
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2394
522
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2395
00:25:54,035 --> 00:25:56,300
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2396
I hope you will have as much fun
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2397
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2398
523
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2399
00:25:56,300 --> 00:25:58,130
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2400
with this module as I have.
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2401
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2402
524
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2403
00:25:58,130 --> 00:26:00,750
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2404
Thank you very much
fb07ac060866 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  2405
for listening.