68 resources on creating programming languages
An Incremental Approach to Compiler Construction: Scheme and Functional Programming 2006; Abdulaziz Ghuloum -- Github Step-by-step development of a Scheme-to-x86 compiler
An Introduction to GCC - Brian Gough
Basics of Compiler Design (Anniversary Edition) - Torben Mogensen
Compiler Design in C (1990) - Allen Holub, Prentice Hall
Compiler Design: Theory, Tools, and Examples - Seth D. Bergmann
Computer Language Notes: Compilers and Interpreters
Compiling Scala for the Java Virtual Machine - Michel Schinz (PDF)
Compiling Techniques (1969) - F.R.A. Hopgood, Macdonald
Essentials of Compilation: An Incremental Approach by Siek, Newton: A book about compiling Racket to x86-64 assembly
Essentials of Programming Languages: EOPL, as it’s better known, introduces readers to the internal workings of programming languages by describing small programming languages and creating an interpreter for each one. The book is very hands-on, with lots of exercises for the reader to modify the interpreters with new features. It touches on the ideas of reasoning about languages and formal semantics, but mostly sticks to the interpreter-as-semantics approach.
Great Works in Programming Languages - a list by Dr. Pierce, the professor who wrote Types and Programming Languages and Software Foundations, about great papers in the PL field
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)
Programming Language Pragmatics by Michael L Scott. Covers theoretical background behind languages beyond syntax.
Programming Languages: Application and Interpretation (http://cs.brown.edu/courses/cs173/2012/book/)
Programming languages and techniques (PDF)
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.
GCC Wiki - List of compiler books
Jordan Rose (Swift team) recommendations
http://jschuster.org/blog/2016/11/29/getting-started-in-programming-languages/
Jonathan Turner’s Reading List: Turner is an engineer on Mozilla’s Rust team and recently posted his reading list for getting up-to-speed on programming languages. The list starts with some resources on how to build interpreters and compilers, but also points to more academic material later.
10PL: This is a list compiled by Northeastern’s PL faculty of (roughly) ten academic papers that they think every student in PL should know. Not all of them are PL papers themselves, and they don’t form a full foundation on their own, but they form a kind of “great books” list for PL.
Benjamin Pierce, the author of TAPL, also has a similar list (although with a slightly more type-heavy and theoretical bent).
Classic Papers in Programming Languages and Logic by Karl Crary
FreeCompilerCamp.org: Online Training for Extending Compilers Github:
- Clang/LLVM Tutorials
- http://freecompilercamp.org/clang-llvm-landing
- Alok Mishra, Anjia Wang, Chunhua Liao, Yonghong Yan, Barbara Chapman
- https://sc19.supercomputing.org/proceedings/tech_poster/tech_poster_pages/rpost138.html
- FreeCompilerCamp.org: Training for OpenMP Compiler Development from Cloud
- https://sc19.supercomputing.org/proceedings/workshops/workshop_pages/ws_bphpcte103.html
Creating the Bolt Compiler (series):
Let's Build an Interpreter (series) (Github):
Immo Landwerth has done a collection of videos on building a language called Minsk, for the CLR platform, in a live-streaming style: Source:
Functional programming and type systems; supplemental repo
Stanford OpenEdX: Compilers - Alex Aiken
Brown CS: CSCI 1730: Programming Languages Videos
OPLSS (Oregon Programming Languages Summer School)
Principles of Programming Languages
Programming Language Implementation Summer School (PLISS) YouTube
University of Utah: Advanced Compilers - John Regehr
UW professor Dan Grossman's teaching materials
UW CSE CSEP 501: Compilers - Hal Perkins
SFU CMPT 886: Program Analysis and Reliability - Nick Sumner, Spring 2015 YouTube playlist
UCSD CSE 131: Compiler Construction
UCSD CSE 231: Advanced Compiler Design
NPTEL: Compiler Design (YouTube playlist): 2011; Y.N. Srikant
Pre-defined Compiler Macros - https://sourceforge.net/p/predef/wiki/
SPY: Friendly Neighborhood C++17 Constexpr Predef Wrapper
Compilers Call For Papers for Conferences, Workshops and Journals at WikiCFP - http://www.wikicfp.com/cfp/call?conference=compilers
Computer Architecture and Compilers Conference Map - http://archconfmap.com/
Last modified 16 December 2024