Building a Transpiler from scratch
Building a Transpiler from scratch, available at $59.99, has an average rating of 4.75, with 18 lectures, based on 6 reviews, and has 103 subscribers.
You will learn about Compile your programming language to JavaScript High-level compilers pipeline AST (Abstract Syntax Tree) transformation Code generation Syntactic sugar Runtime modules Cooperative multitasking Lightweight processes (aka "Green threads") Message-passing mechanism Concurrent execution of processes Parsing tools This course is ideal for individuals who are Curious software engineers who want to build their own programming language compiling to JavaScript or Compiler engineers It is particularly useful for Curious software engineers who want to build their own programming language compiling to JavaScript or Compiler engineers.
Enroll now: Building a Transpiler from scratch
Summary
Title: Building a Transpiler from scratch
Price: $59.99
Average Rating: 4.75
Number of Lectures: 18
Number of Published Lectures: 18
Number of Curriculum Items: 18
Number of Published Curriculum Objects: 18
Original Price: $59.99
Quality Status: approved
Status: Live
What You Will Learn
- Compile your programming language to JavaScript
- High-level compilers pipeline
- AST (Abstract Syntax Tree) transformation
- Code generation
- Syntactic sugar
- Runtime modules
- Cooperative multitasking
- Lightweight processes (aka "Green threads")
- Message-passing mechanism
- Concurrent execution of processes
- Parsing tools
Who Should Attend
- Curious software engineers who want to build their own programming language compiling to JavaScript
- Compiler engineers
Target Audiences
- Curious software engineers who want to build their own programming language compiling to JavaScript
- Compiler engineers
Course overview
In recent compilers implementation, it became popular to translate from one high-level language to another high-level language. Examples might be desugaring new version of JavaScript to an older version of JavaScript, or languages like TypeScript, etc. Such high-level compilers are known today as transpilers, and what is the topic of our course.
It proved to be very practical, since we can fully rely on an existing runtime such as a JavaScript engine, avoid dealing with lower-level constructs like memory, bytecode instructions, etc.
If you would like to explore the world of compilers and implement your own programming language, starting from the high-level compilation is a good hands-on practical approach, and which we apply in this class.
Often related books on compilers go to theoretical aspects, stucking in parsing, regular grammars, etc – not explaining how actually to build a practical transpiler. I believe we should be able to build a transpiler for a full programming language,end-to-end, in 2-4 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 Transpiler from scratch class we focus on compiling a high-level concurrent programming language with message-passing processes, down to JavaScript. That is, in addition to the deep dive on the transpiling, you will get a better understanding of how concurrent functional languages, such as Erlang, or even an operating system itself with its processes and threads, work today.
Implementing a transpiler will also increase your engineering level, as it touches several aspects of data structures and algorithms.
Prerequisites
An optional prerequisite for this class is the Building an Interpreter from scratch (aka Essentials of Interpretation) course, where we build an AST-interpreter for a full programming language. Unless you already have understanding of how programming languages work at this level, i.e. what eval, a closure, a scope chain, environments, and other constructs are — it is recommended to take the interpreters class as a prerequisite.
Who this class is for?
This class is for any curious engineer, who would like to gain skills of building complex systems (and building a transpiler for a programming language is an advanced engineering task!), and obtain a transferable knowledge for building such systems.
If you are interested specifically in compilers, PL and Type theory, and want to build a transpiler for your programming language, this class is also for you.
What is used for implementation?
We build the transpiler in JavaScript, compiling to JavaScript.
JavaScript, being the most popular programming language, should be accessible for many engineers, and also our goal is to provide a simple and concise implementation, not focusing on specifics of a host language. So the code should be portable to any language of your taste and choice: TypeScript, Rust, OCaml, C++, Python, etc.
Note: we want our students to actually follow, understand and implement every detail of the Transpiler themselves, instead of just copy-pasting from final solution. Even though the full source code for the transpiler is presented in the video lectures, the code repository for the project contains /* Implement here */ assignments, which students have to solve.
What’s specific in this class?
The main features of these lectures are:
-
Concise and straight to the point. Each lecture is self-sufficient, concise, and describes information directly related to the topic, not distracting on unrelated materials or talks.
-
Animated presentation combined with live-editing notes. This makes understanding of the topics easier, and shows how the object structures are connected. Static slides simply don’t work for a complex content.
-
Live coding session end-to-end with assignments. The full source code, starting from scratch, and up to the very end is presented in the video lectures
What is in the course?
The course is divided into four parts, in total of 18 lectures, and many sub-topics in each lecture. Below is the table of contents and curriculum.
Part 1: Transpiler pipeline
In this part we start talking about transpiler pipeline, parsing, code generation, and exploring AST nodes.
Part 2: Functions and Processes
In this part we focus implementing our runtime components, such as Process and Scheduler classes, and discuss cooperative multitasking.
Part 3: Pattern matching
In this part we implement packed data structures, such as Lists and Records, and also build support for pattern matching.
Part 4: Message passing
In the final part we implement the message passing mechanism, do a case study analysis, using the compiled code from Web, and build the final executable.
Course Curriculum
Chapter 1: Transpiler pipeline
Lecture 1: Transpiler overview | Numbers
Lecture 2: Strings | Blocks and Statements
Lecture 3: Parsing: S-expression to AST
Lecture 4: Variable declaration and lookup
Lecture 5: Function calls | Runtime
Lecture 6: Binary and Unary expressions
Lecture 7: Control flow: If statement | While loops
Chapter 2: Functions and Processes
Lecture 1: Function declarations | Return statement
Lecture 2: Primer on generators
Lecture 3: Process | Scheduler class
Lecture 4: Spawning processes | JS Transform
Chapter 3: Pattern matching
Lecture 1: Records and Lists
Lecture 2: Pattern matching | Decomposition
Lecture 3: Pattern matching statement
Chapter 4: Message passing
Lecture 1: Awaiting messages | Process mailbox
Lecture 2: Receive statement | Recursive calls
Lecture 3: Using compiled code from Web
Lecture 4: Final executable | Next steps
Instructors
-
Dmitry Soshnikov
Software engineer and Instructor
Rating Distribution
- 1 stars: 0 votes
- 2 stars: 0 votes
- 3 stars: 0 votes
- 4 stars: 2 votes
- 5 stars: 4 votes
Frequently Asked Questions
How long do I have access to the course materials?
You can view and review the lecture materials indefinitely, like an on-demand channel.
Can I take my courses with me wherever I go?
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don’t have an internet connection, some instructors also let their students download course lectures. That’s up to the instructor though, so make sure you get on their good side!
You may also like
- Top 10 Video Editing Courses to Learn in November 2024
- Top 10 Music Production Courses to Learn in November 2024
- Top 10 Animation Courses to Learn in November 2024
- Top 10 Digital Illustration Courses to Learn in November 2024
- Top 10 Renewable Energy Courses to Learn in November 2024
- Top 10 Sustainable Living Courses to Learn in November 2024
- Top 10 Ethical AI Courses to Learn in November 2024
- Top 10 Cybersecurity Fundamentals Courses to Learn in November 2024
- Top 10 Smart Home Technology Courses to Learn in November 2024
- Top 10 Holistic Health Courses to Learn in November 2024
- Top 10 Nutrition And Diet Planning Courses to Learn in November 2024
- Top 10 Yoga Instruction Courses to Learn in November 2024
- Top 10 Stress Management Courses to Learn in November 2024
- Top 10 Mindfulness Meditation Courses to Learn in November 2024
- Top 10 Life Coaching Courses to Learn in November 2024
- Top 10 Career Development Courses to Learn in November 2024
- Top 10 Relationship Building Courses to Learn in November 2024
- Top 10 Parenting Skills Courses to Learn in November 2024
- Top 10 Home Improvement Courses to Learn in November 2024
- Top 10 Gardening Courses to Learn in November 2024