Chunks and Beacons

Reddit r/ProgrammingLanguages

Protos are Wrong: Protobuffers were obviously built by amateurs because they offer bad solutions to widely-known and already-solved problems. ... What’s so frustrating about all of this is a little understanding of how modern type-systems work would be enough to drastically simplify the protobuffer spec and simultaneously remove all of the arbitrary restrictions. The solution is as follows: Make all fields in a message required. This makes messages product types; Promote oneof fields to instead be standalone data types. These are coproduct types; Give the ability to parameterize product and coproduct types by other types. That’s it! These three features are all you need in order to define any possible piece of data. With these simpler pieces, we can re-implement the rest of the protobuffer spec in terms of them.

Categories

Code Generation | Concurrency implementation | Continuations | Correctness | DSLs | Effects | Implementation | Lists | Logic | Parsing | Syntax | Testing | Types and Type Systems | Validation and Verification

Resources: Courses

Reading

Articles/Blogs/Essays/Papers

Books

Object-Oriented

Gradual Typing

Language Learnings

PL Paradigms

PL Research

Backend

Program Synthesis

Parallel/Concurrent Programming


Implementing Functional Languages: A Tutorial - Simon Peyton Jones, David Lester

Introduction to Compilers and Language Design | Introduction to Compilers and Language Design - Douglas Thain (PDF)

Let's Build a Compiler (PDF)

Practical and Theoretical Aspects of Compiler Construction (class lectures and slides)

Resources for Amateur Compiler Writers

Semantics Engineering with PLT Redex: The PhD-level programming languages course at Northeastern uses the Redex book, and I found it to be a good introduction. The tool itself (Redex) is a great way to experiment with semantics, including reduction relations (roughly, the part of the semantics that says how the program runs) and type systems. You could use this book as a substitute for TAPL (at least for learning the basics of formal semantics), or you could use Redex to experiment with the languages described in TAPL.

mpri-2.4-public: Resources for course MPRI 2-4 on functional programming and type systems.

"Bits of History, Words of Advice": The creator of Newspeak and one of the core developers working on Java and the JVM offers some advice about Smalltalk's lack of success in the mainstream.


Detail Pages:

Last modified 11 December 2025