Building an Interpreter from scratch

Why take this course?
🎉 Building an Interpreter from Scratch: A Deep Dive into Programming Language Semantics 👩💻🧠
Course Overview 🚀
Understanding the Essentials of Interpretations 📚
Dive into the world of programming languages and unravel the mysteries behind their operation with Dmitry Soshnikov, your expert instructor. This course is designed to demystify the concepts of compilers, interpreters, and source code transformation tools in a practical and engaging manner.
Who is this for? 🎯
This course is tailored for any curious engineer eager to gain skills in building complex systems. Whether you're fascinated by compilers, interpreters, or just want to deepen your understanding of programming languages, this class will equip you with transferable knowledge essential for system building.
🔹 Beginners Welcome! No need for advanced degrees or years of experience—just a grasp of basic data structures and algorithms is required.
Implementation Details 🛠️
We'll be using JavaScript, a versatile language similar to Python, as our implementation base due to its multi-paradigm structure that encompasses functional programming, class-based object-oriented programming (OOP), and prototype-based OOP.
- Language Similarity: Our focus will be on a language resembling JavaScript, Python, or Ruby.
- Live Coding: The entire source code journey, from the ground up to a fully functioning AST interpreter, will be demonstrated in video lectures.
- Hands-On Practice: You'll follow along with coding assignments as you build your own interpreter.
Course Structure 🏗️
The course is meticulously structured into four comprehensive parts, comprising a total of 18 lectures and numerous sub-topics. Each part builds upon the previous, ensuring a solid foundation for understanding the intricacies of programming language interpretation.
PART 1: Compilers Crash Course 🎩
- Compilation vs Interpretation: Explore the difference between JIT-compilers, AOT-compilers, and interpreters.
- Virtual Machines & Bytecode Interpreters: Discover how they work and their roles in executing code.
- Native Code and LLVM IR: Learn about the low-level aspects of code execution.
PART 2: Interpreters: Basic Expressions and Variables 📈
- Basic Expressions: Work with numbers, strings, and understand their evaluation.
- Variables & Scopes: Get to grips with variable declarations, scopes, and lexical environments.
- Control Structures: Implement conditionals, loops, and more.
- Parser Generators: Briefly touch on the role of these powerful tools in parsing code.
PART 3: Functions and Functional Programming 🔄
- Function Abstraction & Calls: Understand how functions are defined and invoked.
- Closures, Lambda Functions, and IILEs: Explore the concepts that make functional programming so powerful.
- Call Stack & Recursion: Manage function calls and handle recursive functions.
PART 4: Object-Oriented Programming (OOP) 🧙♂️
- Classes, Instances, and Modules: Implement and understand OOP concepts in our interpreter.
- Class-Based vs Prototype-Based OOP: Discuss the differences and learn how they are implemented.
Additional Resources 📚
To complement your learning experience, we recommend these two seminal books:
- "Structure and Interpretation of Computer Programs (SICP)" by Harold Abelson and Gerald Jay Sussman—a foundational text for understanding programming languages.
- "Programming Languages: Application and Interpretation (PLAI)" by Shriram Krishnamurthi—for a comprehensive exploration of programming languages.
Join the Journey! 🌟
Embark on this exciting learning adventure with Dmitry Soshnikov, where you'll not only gain knowledge but also experience the joy of creating your own programming language interpreter from scratch. We look forward to your active participation and are here to answer any questions or provide further clarification in the comments below.
-Dmitry Soshnikov
Loading charts...