HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

Episode 1: A basic expression evaluator

Immo Landwerth (terrajobst)2 HN recommenders · recommended in 2 months, 2020-2026
YouTube
284K views · 8 years ago · course · evergreen

The first episode of a long live-coding series in which Immo Landwerth builds the Minsk compiler for a small language in C#. It starts with a basic expression evaluator and builds toward a full language.

Recommended as a practical, approachable build-it-step-by-step introduction to writing compilers, light on theory.

Compilers, interpreters & program analysisPython, Ruby & scripting languagesSoftware practice, open source & careers#compilers#c##.net#parsing#livecoding

3 comments from Hacker News

@tester7562026 · in “Introduction to Compilers and Language Design”

I've been working full time for like 3 yrs as C# dev + doing higher edu at weekends at the same time and I was about to decide thesis topic. I've been searching for something challenging and found some very random post on programming forums about how compilers are hard etc and decided to give it a try. I had kind of advantage that I accidentally had some significant amount of experience with handwritten parsers (at first job we were doing custom-markdown-like-language renderer as PoC or even when doing apprenticeship in high school I was rolling out csv parser instead of using libs, because... I'm not sure why, I probably didnt know how to use package manager or something) I started reading about it a lot like dragon book (but it wasnt that useful tbh, too much math heavy) or link or playlist like this: ▶ this video And after year of jumping into it from time to time I've implemented small, custom-lang to LLVM IR to webassembly (via LLVM) compiler. Then I had to find new job (we were very poorly paid) and I was interested in semiconductors industry because it was gaining traction (e.g chip war book) and it felt way more engineering oriented unlike web dev. Web dev tech decisions felt for me very religious, like fancy-conferences/blogposts oriented. And since semiconductor industry often touches compilers, then that was opportunity for: better salary, interesting projects and in future transition to compilers I've joined semico company as C# dev and then due to project cancellati

CitesView on HN
@neonsunset2024 · in “The search for easier safe systems programming”

I don't have something that could be of Crafting Interpreters level on hand, but the general suggestion given to this question on DotNetEvolution discord by Roslyn team members was to start with the spec itself: link This might be a bit of a learning curve if you don't have experience with writing compilers like that though. There are other materials that might prove useful should you go down this path: - A series of blog posts of a student who is writing a Rust to .NET compiler which you could follow along: link The project itself: link - A video series on writing a compiler for .NET from scratch: ▶ this video Notes: link As for CLR via C#, while it has certain facts that remained the same, the ecosystem has changed a lot since then, you really want to target the latest LTS to get best experience and performance. If you liked it, then I can strongly suggest link which covers .NET runtime internals. p.s.: if it's any consolation, the promise in CLR via C# of JIT having the advantage of dynamically profiling code execution and compiling to profile-guided version, tuned to the exact hardware and environment is finally fulfilled, many years later :)

RecommendsView on HN
@Nelkins2020 · in “Ask HN: Online Compiler Courses?”

Here's a great YouTube series where a developer codes, step-by-step, a pretty fully-fledged programming language: ▶ this video Not too much theory but from a nuts and bolts perspective I found it extremely approachable.

RecommendsView on HN
Building Your Own Dynamic Language1:14:32

Building Your Own Dynamic Language

Stanford
21K views • 18 years ago
Demo: Base language, compile-time execution2:07:18

Demo: Base language, compile-time execution

Jonathan Blow
164K views • 12 years ago
Saša Jurić - Parsing from first principles - WebCamp Zagreb 20191:10:16

Saša Jurić - Parsing from first principles - WebCamp Zagreb 2019

WebCamp Zagreb
6K views • 7 years ago
Let's prototype a JavaScript JIT compiler!1:21:25

Let's prototype a JavaScript JIT compiler!

Andreas Kling
49K views • 3 years ago
Anders Hejlsberg on Modern Compiler Construction34:10

Anders Hejlsberg on Modern Compiler Construction

Kasper
25K views • 9 years ago
Brandt Bucher – A JIT Compiler for CPython47:51

Brandt Bucher – A JIT Compiler for CPython

encukou
14K views • 2 years ago
"Tree-sitter - a new parsing system for programming tools" by Max Brunsfeld38:38

"Tree-sitter - a new parsing system for programming tools" by Max Brunsfeld

Strange Loop Conference
63K views • 8 years ago
Compiling and Optimizing Scripting Languages1:01:37

Compiling and Optimizing Scripting Languages

Google TechTalks
21K views • 17 years ago
Andy Keep - Writing a Nanopass Compiler40:48

Andy Keep - Writing a Nanopass Compiler

ClojureTV
29K views • 12 years ago
Tree-sitter: a new parsing system for programming tools - GitHub Universe 201743:00

Tree-sitter: a new parsing system for programming tools - GitHub Universe 2017

GitHub
24K views • 8 years ago
CppCon 2017: Matt Godbolt “What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid”1:15:46

CppCon 2017: Matt Godbolt “What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid”

CppCon
178K views • 9 years ago
A Talk Near the Future of Python (a.k.a., Dave live-codes a WebAssembly Interpreter)1:01:45

A Talk Near the Future of Python (a.k.a., Dave live-codes a WebAssembly Interpreter)

David Beazley
26K views • 7 years ago
Lecture 1B | MIT 6.001 Structure and Interpretation, 198658:22

Lecture 1B | MIT 6.001 Structure and Interpretation, 1986

MIT OpenCourseWare
116K views • 17 years ago
Chris Seaton @ VMSS16: JRuby+Truffle: Why it’s Important to Optimise the Tricky Parts1:02:44

Chris Seaton @ VMSS16: JRuby+Truffle: Why it’s Important to Optimise the Tricky Parts

softdevteamuk
5K views • 10 years ago
GoingNative 2012 - Day 2 - Clang1:00:54

GoingNative 2012 - Day 2 - Clang

aghuttun
13K views • 13 years ago
Build Your Own Async2:12:42

Build Your Own Async

David Beazley
60K views • 7 years ago
Co-dfns Live Stream: Compiler Design and Architecture2:03:12

Co-dfns Live Stream: Compiler Design and Architecture

Aaron Hsu (arcfide)
21K views • 9 years ago
Lecture 1 | Programming Paradigms (Stanford)17:26

Lecture 1 | Programming Paradigms (Stanford)

Stanford
1.2M views • 18 years ago
Tim Ewald - Clojure: Programming with Hand Tools58:39

Tim Ewald - Clojure: Programming with Hand Tools

ClojureTV
48K views • 12 years ago
C++Now 2018: Matt Godbolt “What Else Has My Compiler Done For Me Lately?”1:30:03

C++Now 2018: Matt Godbolt “What Else Has My Compiler Done For Me Lately?”

CppNow
11K views • 8 years ago