videos/01-intro.srt
changeset 833 aad5957eb7e4
parent 761 82a1315c128d
equal deleted inserted replaced
832:a6e9fc38ae54 833:aad5957eb7e4
    50 this module is that you
    50 this module is that you
    51 
    51 
    52 12
    52 12
    53 00:00:46,130 --> 00:00:49,310
    53 00:00:46,130 --> 00:00:49,310
    54 do not need to be an
    54 do not need to be an
    55 Über hacker to implement your own
    55 Überhacker to implement your own
    56 
    56 
    57 13
    57 13
    58 00:00:49,310 --> 00:00:51,305
    58 00:00:49,310 --> 00:00:51,305
    59 compiler for your
    59 compiler for your
    60 own language, say.
    60 own language, say.
   508 you reload the variable.
   508 you reload the variable.
   509 
   509 
   510 110
   510 110
   511 00:05:41,560 --> 00:05:45,935
   511 00:05:41,560 --> 00:05:45,935
   512 Even though we cut corners
   512 Even though we cut corners
   513 into could generate apart.
   513 in the code generater part
   514 
   514 
   515 111
   515 111
   516 00:05:45,935 --> 00:05:48,575
   516 00:05:45,935 --> 00:05:48,575
   517 By producing code for the JVM,
   517 by producing code for the JVM,
   518 
   518 
   519 112
   519 112
   520 00:05:48,575 --> 00:05:51,710
   520 00:05:48,575 --> 00:05:51,710
   521 we can still obtain quite
   521 we can still obtain quite
   522 impressive results.
   522 impressive results.
   833 published on compilers.
   833 published on compilers.
   834 
   834 
   835 180
   835 180
   836 00:08:52,190 --> 00:08:56,690
   836 00:08:52,190 --> 00:08:56,690
   837 Why on Earth studying
   837 Why on Earth studying
   838 compilers in 2020? And even worse
   838 compilers in 2020 (and of course in 2021)? 
   839 
   839 
   840 181
   840 181
   841 00:08:56,690 --> 00:08:59,659
   841 00:08:56,690 --> 00:08:59,659
   842 why implementing
   842 And even worse: Why implementing
   843 your own compiler?
   843 your own compiler?
   844 
   844 
   845 182
   845 182
   846 00:08:59,659 --> 00:09:02,720
   846 00:08:59,659 --> 00:09:02,720
   847 Well, a slightly humorous take on
   847 Well, a slightly humorous take on
   888 First, he says
   888 First, he says
   889 hardware is getting
   889 hardware is getting
   890 
   890 
   891 192
   891 192
   892 00:09:29,690 --> 00:09:32,585
   892 00:09:29,690 --> 00:09:32,585
   893 wierder, rather than
   893 weirder, rather than
   894 getting clocked faster.
   894 getting clocked faster.
   895 
   895 
   896 193
   896 193
   897 00:09:32,585 --> 00:09:34,520
   897 00:09:32,585 --> 00:09:34,520
   898 And that's definitely true.
   898 And that's definitely true.
   948 crypto accelerators, etc.
   948 crypto accelerators, etc.
   949 
   949 
   950 205
   950 205
   951 00:10:07,189 --> 00:10:11,930
   951 00:10:07,189 --> 00:10:11,930
   952 We have TSPs, GPUs, ARM
   952 We have TSPs, GPUs, ARM
   953 big,little, Xeon Phis,
   953 big,little, Xeon Phi,
   954 
   954 
   955 206
   955 206
   956 00:10:11,930 --> 00:10:14,630
   956 00:10:11,930 --> 00:10:14,630
   957 and this only scratches the surface.
   957 and this only scratches the surface.
   958 
   958 
  1243 slightly obscure
  1243 slightly obscure
  1244 programming language
  1244 programming language
  1245 
  1245 
  1246 268
  1246 268
  1247 00:13:15,770 --> 00:13:18,650
  1247 00:13:15,770 --> 00:13:18,650
  1248 bat is very well-known in
  1248 but is very well-known in
  1249 
  1249 
  1250 269
  1250 269
  1251 00:13:18,650 --> 00:13:22,040
  1251 00:13:18,650 --> 00:13:22,040
  1252 areas where safety
  1252 areas where safety
  1253 is really paramount.
  1253 is really paramount.
  1366 a interesting way to get
  1366 a interesting way to get
  1367 
  1367 
  1368 295
  1368 295
  1369 00:14:26,420 --> 00:14:30,195
  1369 00:14:26,420 --> 00:14:30,195
  1370 their airplanes up in the
  1370 their airplanes up in the
  1371 air and let them not crush.
  1371 air and let them not crash.
  1372 
  1372 
  1373 296
  1373 296
  1374 00:14:30,195 --> 00:14:33,010
  1374 00:14:30,195 --> 00:14:33,010
  1375 In another example, I
  1375 In another example, I
  1376 have friends working
  1376 have friends working
  1483 language, we had to look at.
  1483 language, we had to look at.
  1484 
  1484 
  1485 321
  1485 321
  1486 00:15:40,280 --> 00:15:43,670
  1486 00:15:40,280 --> 00:15:43,670
  1487 This BF language contains
  1487 This BF language contains
  1488 the kind of memory and
  1488 a kind of memory and
  1489 
  1489 
  1490 322
  1490 322
  1491 00:15:43,670 --> 00:15:45,680
  1491 00:15:43,670 --> 00:15:45,680
  1492 the memory pointer which can
  1492 a memory pointer which can
  1493 
  1493 
  1494 323
  1494 323
  1495 00:15:45,680 --> 00:15:48,140
  1495 00:15:45,680 --> 00:15:48,140
  1496 be moved to the left
  1496 be moved to the left
  1497 or to the right,
  1497 or to the right,
  1556 might recognize it.
  1556 might recognize it.
  1557 
  1557 
  1558 337
  1558 337
  1559 00:16:22,865 --> 00:16:27,120
  1559 00:16:22,865 --> 00:16:27,120
  1560 And I run it with a
  1560 And I run it with a
  1561 benchmark program, which
  1561 benchmark program, which you 
  1562 
  1562 
  1563 338
  1563 338
  1564 00:16:27,760 --> 00:16:30,960
  1564 00:16:27,760 --> 00:16:30,960
  1565 might also recognize.
  1565 might also recognize.
  1566 
  1566 
  1613 This can be easily
  1613 This can be easily
  1614 done by somehow
  1614 done by somehow
  1615 
  1615 
  1616 350
  1616 350
  1617 00:17:06,520 --> 00:17:09,490
  1617 00:17:06,520 --> 00:17:09,490
  1618 representing the BF memory in
  1618 representing the BF memory in C.
  1619 
  1619 
  1620 351
  1620 351
  1621 00:17:09,490 --> 00:17:12,310
  1621 00:17:09,490 --> 00:17:12,310
  1622 C. We can do this
  1622 We can do this
  1623 by just an array of
  1623 by just an array of
  1624 
  1624 
  1625 352
  1625 352
  1626 00:17:12,310 --> 00:17:15,380
  1626 00:17:12,310 --> 00:17:15,380
  1627 characters and a memory pointer,
  1627 characters and a memory pointer,
  1817 But don't apply any optimization.
  1817 But don't apply any optimization.
  1818 
  1818 
  1819 395
  1819 395
  1820 00:19:31,810 --> 00:19:38,395
  1820 00:19:31,810 --> 00:19:38,395
  1821 Keep this in mind.
  1821 Keep this in mind.
  1822 As a second try,
  1822 
  1823 
  1823 
  1824 396
  1824 396
  1825 00:19:38,395 --> 00:19:42,595
  1825 00:19:38,395 --> 00:19:42,595
  1826 of course, I can try to now
  1826 As a second try, of course, I can try to 
  1827 generate a better C program.
  1827 generate a better C program.
  1828 
  1828 
  1829 397
  1829 397
  1830 00:19:42,595 --> 00:19:46,060
  1830 00:19:42,595 --> 00:19:46,060
  1831 And as you'll remember from
  1831 And as you'll remember from
  1933 00:20:49,025 --> 00:20:51,530
  1933 00:20:49,025 --> 00:20:51,530
  1934 no optimizations switched on.
  1934 no optimizations switched on.
  1935 
  1935 
  1936 421
  1936 421
  1937 00:20:51,530 --> 00:20:54,050
  1937 00:20:51,530 --> 00:20:54,050
  1938 So there's minus O0.
  1938 So it runs with minus O0.
  1939 
  1939 
  1940 422
  1940 422
  1941 00:20:54,050 --> 00:20:56,090
  1941 00:20:54,050 --> 00:20:56,090
  1942 And you can see
  1942 And you can see
  1943 it's now down from
  1943 it's now down from
  1982 00:21:29,240 --> 00:21:31,700
  1982 00:21:29,240 --> 00:21:31,700
  1983 O0 to not introduce
  1983 O0 to not introduce
  1984 
  1984 
  1985 432
  1985 432
  1986 00:21:31,700 --> 00:21:35,255
  1986 00:21:31,700 --> 00:21:35,255
  1987 any optimizations and run
  1987 any optimizations and it runs
  1988 essentially 20 seconds.
  1988 essentially for 20 seconds.
  1989 
  1989 
  1990 433
  1990 433
  1991 00:21:35,255 --> 00:21:37,880
  1991 00:21:35,255 --> 00:21:37,880
  1992 If we then increment
  1992 If we then increment
  1993 
  1993 
  2014 I take the first program which
  2014 I take the first program which
  2015 
  2015 
  2016 439
  2016 439
  2017 00:21:55,430 --> 00:21:58,070
  2017 00:21:55,430 --> 00:21:58,070
  2018 increments everything
  2018 increments everything
  2019 in a single steps
  2019 in single steps
  2020 
  2020 
  2021 440
  2021 440
  2022 00:21:58,070 --> 00:22:00,185
  2022 00:21:58,070 --> 00:22:00,185
  2023 or decremented in single steps.
  2023 or decrements in single steps.
  2024 
  2024 
  2025 441
  2025 441
  2026 00:22:00,185 --> 00:22:04,835
  2026 00:22:00,185 --> 00:22:04,835
  2027 But now I use the full
  2027 But now I use the full
  2028 capacity of the GCC compiler
  2028 capacity of the GCC compiler
  2145 00:23:22,960 --> 00:23:25,700
  2145 00:23:22,960 --> 00:23:25,700
  2146 Just a quick recap of what I did.
  2146 Just a quick recap of what I did.
  2147 
  2147 
  2148 468
  2148 468
  2149 00:23:25,700 --> 00:23:28,160
  2149 00:23:25,700 --> 00:23:28,160
  2150 I first run the program with
  2150 I first run the Mandelbrot program with
  2151 
  2151 
  2152 469
  2152 469
  2153 00:23:28,160 --> 00:23:31,730
  2153 00:23:28,160 --> 00:23:31,730
  2154 an interpreter and it took
  2154 an interpreter and it took
  2155 approximately 11 minutes.
  2155 approximately 11 minutes.