equal
deleted
inserted
replaced
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. |