Essentials of Interpretation. Lecture [3/18] Compilers: AOT, JIT, Transpiler

Поделиться
HTML-код
  • Опубликовано: 23 дек 2024

Комментарии • 19

  • @DmitrySoshnikov-education
    @DmitrySoshnikov-education  4 года назад +1

    ⭐ *Enroll:* dmitrysoshnikov.com/courses/essentials-of-interpretation/
    📚 *Udemy:* www.udemy.com/course/essentials-of-interpretation/?referralCode=E7D6C9ADFCA273A53950
    👉 *DS Education:* www.dmitrysoshnikov.education/p/essentials-of-interpretation
    Lecture 1: Parsers, ASTs, Interpreters and Compilers
    Lecture 2: AST Interpreters and Virtual Machines
    Lecture 3: Compilers: AOT, JIT, Transpiler
    Lecture 4: Eva programming language
    Lecture 5: Self-evaluating expressions
    Lecture 6: Variables and Environments
    Lecture 7: Blocks: expression groups and Nested Scopes
    Lecture 8: Control flow: If and While expressions
    Lecture 9: Back to parsers: S-expression to AST
    Lecture 10: Built-in and Native functions
    Lecture 11: User-defined functions, Activation Records and Closures
    Lecture 12: Lambda functions and Functional programming
    Lecture 13: Call-stack and Recursive calls
    Lecture 14: Syntactic sugar: Switch, For, Inc, Dec operators
    Lecture 15: Object-oriented Eva: Classes
    Lecture 16: Class inheritance and Super calls
    Lecture 17: Code isolation: Modules and Imports
    Lecture 18: Final executable and further data structures

  • @Egrodo1
    @Egrodo1 5 лет назад +1

    Can't wait for the next one! Great work here, very clear explanations.

  • @riskey93
    @riskey93 5 лет назад +2

    Thanks for the courses, when you planning to release next videos?
    '

  • @evanxg852000
    @evanxg852000 5 лет назад +1

    Thanks for the hard work, waiting for the next video

  • @DebdutBiswasOnline
    @DebdutBiswasOnline 5 лет назад +1

    Very useful tutorial...

  • @eaglenight9826
    @eaglenight9826 5 лет назад +1

    Thanks.

  • @zhenghaohe4727
    @zhenghaohe4727 3 года назад +1

    Hi thanks for putting out such amazing content. Wanted to ask a few quick questions:
    1. You mentioned that it doesn't matter how you implement your language, what matters is the runtime semantics should be preserved. I am still not super clear on what you meant by the runtime semantics. In the context of JavaScript, can we think of the runtime semantics as the ECMAScript specs, as in the JS implementors have to follow and conform to the specs?
    2. Is there a discord channel or any kind of support community for people who bought your courses?

    • @DmitrySoshnikov-education
      @DmitrySoshnikov-education  3 года назад

      Thanks for the feedback, glad you liked the course. Yes, the ES spec is a good example, since exactly a specification for a programming language defines its semantics (static and runtime). And for the same formal spec there might be multiple implementations: simple AST interpreter for JavaScript, or a Stack-based virtual machine, or static LLVM compiler to native code.
      A dedicated discord channel might be good idea, I'll think about creating one. Current students use discussion comments within each lecture.

    • @zhenghaohe4727
      @zhenghaohe4727 3 года назад

      ​@@DmitrySoshnikov-education hey thanks for the reply! I have two more followup questions if you don't mind
      1. I am not super clear on the concept of runtime. it seems to me that it has multiple meanings: I understand it means "during the code execution, the opposite is compile time" but people always use it when they are saying that "V8/node/deno is a JS runtime" or "react is a UI runtime". Could you expound on this please? Also when you say "runtime semantics", which one were you referring to?
      2. you mentioned that ES spec might have multiple implementations: simple AST interpreter for JavaScript, or a Stack-based virtual machine, or static LLVM compiler to native code. Do these implementations exist in the real world? Could you give me some examples?

    • @DmitrySoshnikov-education
      @DmitrySoshnikov-education  2 года назад

      @@zhenghaohe4727 yes, "Runtime" may refer to a system which handles execution of a program. It might be a VM (such as V8) or a framework (like React for UI), set of extra helper tools. And the "runtime" is the *time* during execution, i.e. opposite to the "static time", which is before execution.
      The "runtime semantics" refers to formal *rules* which describes how a Runtime should be implemented. I.e. it refers to implementations like V8 and others.
      Also, yes - V8, JavaScriptCore, Hermes, etc are all the different implementations of the ECMAScript spec, which defines formal semantics.

    • @zhenghaohe4727
      @zhenghaohe4727 2 года назад

      @@DmitrySoshnikov-education Hi thanks for the reply! Do you mind if I ask a few more followup questions about JavaScript specifically?
      1. are variables in JavaScript basically C++ pointers under the hood (assuming the runtime is V8)? Even for primitive values like numbers and strings, they either live in the heap or they are pooled in Constant Pool. Therefore JS variables (their memory blocks) actually store the memory addresses of other C++ objects?
      2. when we declare `const a = 1; const b = 'foo'` , what exactly provides the program with the number `1` and the string `foo` , is it the runtime e.g. V8 or it is something else that is providing these primitive values?

  • @saftsos8150
    @saftsos8150 4 года назад

    I do not find some lectures including: Lecture 2: AST Interpreters and Virtual Machines... and many others? thanks,

    • @DmitrySoshnikov-education
      @DmitrySoshnikov-education  4 года назад

      HI Saft, you can enroll to full course here: dmitrysoshnikov.com/courses/essentials-of-interpretation/

  • @chackokabraham738
    @chackokabraham738 3 года назад +1

    Hi Dmitry,
    Unable to find the Lecture 2: i dont see it in the playlist. Is it available ?

    • @DmitrySoshnikov-education
      @DmitrySoshnikov-education  3 года назад +1

      Hi Chacko, yes, you can enroll to full class here: dmitrysoshnikov.com/courses/essentials-of-interpretation/

    • @chackokabraham738
      @chackokabraham738 3 года назад

      @@DmitrySoshnikov-education Thank you

  • @anantmishra9813
    @anantmishra9813 5 лет назад

    which software do you use to make these presentations?

    • @DmitrySoshnikov-education
      @DmitrySoshnikov-education  5 лет назад +1

      This is a combination of Good Notes, Notability, Camtasia, and live editing on iPad.