Обучающие видео » Компьютерные видеоуроки и обучающие интерактивные DVD » Программирование (видеоуроки)
Building a Virtual Machine for Programming LanguageГод выпуска: 2021
Производитель: dmitrysoshnikov.com
Сайт производителя:
http://dmitrysoshnikov.com/courses/virtual-machine/Автор: Dmitry Soshnikov
Продолжительность: 4:26:52
Тип раздаваемого материала: Видеоурок
Язык: Английский + субтитры
Описание: How programming languages work under the hood? What’s the difference between compiler and interpreter? What is a virtual machine, and JIT-compiler? And what about the difference between functional and imperative programming?
There are so many questions when it comes to implementing a programming language!
The problem with “compiler classes” in school is such classes are usually presented as some “hardcore rocket science” which is only for advanced engineers.
Moreover, classic compiler books start from the least significant topic, such as Lexical analysis, going straight down to the theoretical aspects of formal grammars. And by the time of implementing the first Tokenizer module, students simply lose an interest to the topic, not having a chance to actually start implementing a programing language itself. And all this is spread to a whole semester of messing with tokenizers and BNF grammars, without understanding an actual semantics of programming languages.
I believe we should be able to build and understand a full programming language semantics, end-to-end, in 4-6 hours — with a content going straight to the point, showed in live coding sessions as pair-programming and described in a comprehensible way.
In the Building a Virtual Machine class we focus specifically on runtime semantics, and build a stack-based VM for a programming language very similar to JavaScript or Python. Working closely with the bytecode level you will understand how lower-level interpretation works in production VMs today.
Implementing a programing language would also make your practical level in other programming languages more professional.
Preview[spoiler="Содержание"]
Part 1: VM basic operations
Lecture 1: Introduction to Virtual Machines (19:22)
Lecture 2: Stack-based vs. Register-based VMs (9:36)
Lecture 3: Logger implementation (4:00)
Lecture 4: Numbers: introduction to Stack (8:00)
Lecture 5: Math binary operations (7:07)
Lecture 6: Strings: introduction to Heap and objects (6:39)
Lecture 7: Syntax: parser implementation (9:20)
Lecture 8: Compiler | Bytecode (9:13)
Lecture 9: Complex expressions (5:26)
Part 2: Control flow and variables
Lecture 10: Comparison | Booleans (5:18)
Lecture 11: Control flow | Branch instruction (8:18)
Lecture 12: Disassembler (8:45)
Lecture 13: Global variables (11:07)
Lecture 14: Blocks | Local variables (14:39)
Lecture 15: Control flow | While-loops (3:34)
Part 3.1: Functions and Call stack
Lecture 16: Native functions | Function calls (7:52)
Lecture 17: User-defined functions (12:07)
Lecture 18: Call stack | Return address (6:37)
Lecture 19: Lambda functions (5:27)
Lecture 20: Bytecode optimizations (5:31)
Part 3.2: Closures implementation
Lecture 21: Closures | Scope analysis (17:55)
Lecture 22: Closures | Compilation (9:31)
Lecture 23: Closures | Runtime (12:23)
Part 4: Garbage Collection
Lecture 24: Tracing heap | Object header (11:00)
Lecture 25: Mark-Sweep GC (15:03)
Part 5: Object-oriented programming
Lecture 26: Class objects | Methods storage (13:23)
Lecture 27: Instance objects | Property access (10:57)
Lecture 28: Super classes | Inheritance (2:13)
Lecture 29: Final VM executable (6:14)
[/spoiler]
[spoiler="Серия курсов от Dmitry Soshnikov"]
Automata Theory inside a RegExp machineGarbage Collection AlgorithmsBuilding an Interpreter from scratchParsing AlgorithmsBuilding a Parser from scratchBuilding a Virtual Machine for Programming Language
Building a Typechecker from scratchProgramming Language with LLVMBuilding a Transpiler from scratch[/spoiler]
Файлы примеров: присутствуют
Формат видео: MP4
Видео: MPEG-4 H.264 AVC, 1280x800, 16:10, 30fps, ~3000kbps
Аудио: MPEG-4 AAC LC, 44.1kHz, 128kbps, stereo
[spoiler="Скриншоты"]



[/spoiler]