What does HackerNews think of Essentials-of-Compilatio?

You can try this book if you want something that came out this year https://github.com/IUCompilerCourse/Essentials-of-Compilatio.... Go to the releases to either get the racket version or python version. But I mean cmu uses the dragon book second edition for a graduate level compiler optimization class.
This paper is my favorite introduction to compilers, it's short and hands-on, goes from compiling a primitive program that does nothing but returns a single integer to a full-blown implementation of a real programming language in 24 small steps: http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf

There is a book-length expansion of this paper that goes into more detail: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

# Programming

"A Data-Centric Introduction to Computing"

https://dcic-world.org/

# Programming Language Theory

"Programming Languages: Application and Interpretation"

https://www.plai.org/

"Crafting Interpreters"

https://craftinginterpreters.com/

# Algorithms/Data Structures

* Pure C *

"Algorithmic Thinking: A Problem-Based Introduction"

https://nostarch.com/algorithmic-thinking-2nd-edition

# Competitive Programming/Interviews

"Competitive Programming book, 4th edition (CP4)"

https://cpbook.net/

"Elements of Programming Interviews in Python"

http://elementsofprogramminginterviews.com/

# Compilation

"Essentials of Compilation: An Incremental Approach in Python"

https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

# Database Systems

"CMU: Intro to Database Systems"

https://15445.courses.cs.cmu.edu/

"CMU: Advanced Database Systems"

https://15721.courses.cs.cmu.edu/

# Calculus I/II & Real Analysis

"A Course in Calculus and Real Analysis"

https://link.springer.com/book/10.1007/978-3-030-01400-1

"A Course in Multivariable Calculus and Analysis"

https://link.springer.com/book/10.1007/978-1-4419-1621-1

# Physics

"Matter and Interactions"

https://matterandinteractions.org/

# Linear Algebra & ML

* A Series of books by prof. Joe Suzuki without using any external library for the implementations *

"Statistical Learning with Math and Python"

https://link.springer.com/book/10.1007/978-981-15-7877-9

"Sparse Estimation with Math and Python"

https://link.springer.com/book/10.1007/978-981-16-1438-5

"Kernel Methods for Machine Learning with Math and Python"

https://link.springer.com/book/10.1007/978-981-19-0401-1

# Discrete Mathematics

"CMU 21-228 Discrete Mathematics (prof. Poh-Shen Loh"

https://www.math.cmu.edu/~ploh/2021-228.shtml

# Mathematical Logic

"Mathematical Logic Through Python"

https://www.logicthrupython.org/

# CS Complexity and Theory:

Courses by Ryan O'Donnell at CMU

http://www.cs.cmu.edu/~odonnell/

# Cryptography

"Serious Cryptography: A Practical Introduction to Modern Encryption"

https://nostarch.com/seriouscrypto

# Problem Solving

"Math 235: Mathematical Problem Solving"

https://www.cip.ifi.lmu.de/~grinberg/t/20f

# Computer Graphics

* Also look up the course by @pikuma for a pure c impl without OpenGL *

"Computer Graphics from Scratch: A Programmer's Introduction to 3D Rendering"

https://gabrielgambetta.com/computer-graphics-from-scratch/

"The Ray Tracer Challenge A Test-Driven Guide to Your First 3D Renderer"

https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng...

# Reverse Engineering

"Reverse Engineering for Beginners"

https://beginners.re/

# SAT/SMT

"SAT/SMT by Example"

https://sat-smt.codes/

Also Hakan Kjellerstrand's z3 page:

http://www.hakank.org/z3/

# Game Engine Development

* 2/4 volumes out (no digital format for the 2 pending volumes due to the authors "piracy" concerns *

"Foundations of Game Engine Development"

https://foundationsofgameenginedev.com/

# Creative Coding

"Generative Design: Visualize, Program, and Create with JavaScript in p5.js"

http://www.generative-gestaltung.de/2/

Articles by Tyler Hobbs specially the one on "Flow Fields" :

https://tylerxhobbs.com/essays/2020/flow-fields

Articles by Sighack specially the one on "Watercolor Techniques":

https://sighack.com/post/generative-watercolor-in-processing

My favorite language implementation tutorial is "An Incremental Approach to Compiler Construction" by Abdulaziz Ghuloum: http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf

What makes it stand out is that it shows you how to build a compiler rather than an interpreter, and shows that it's really not that much more difficult.

There is a book-length "sequel" to this paper that goes into more detail: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

Various books do this. Essentials of Compilation is a recent one: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

You can find a PDF and the associated course with a very minimal amount of following links.

If you are thinking of making your own language, it's also good to learn something about programming language theory, if you don't already. Many languages make mistakes that have been solved 25+ years ago. PLAI is good for that: https://www.plai.org/

I presume that's this, run in \racket mode? https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

I ask because there seems to be a \python mode, too, that folks may find valuable: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

I also don't know why the ci.yml only ran for a few seconds: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

I took the IU compilers course as an undergrad and can easily say it was my favorite course. If anyone is interested, here is a link to the textbook which will cover this papers content in much finer detail:

https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

There is a great paper by Abdulaziz Ghuloum, An Incremental Approach to Compiler Construction, that is pretty much the cookbook you want: http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf

"We show that building a compiler can be as easy as building an interpreter. The compiler we construct accepts a large subset of the Scheme programming language and produces assembly code for the Intel x86 architecture, the dominant architecture of personal computing. The development of the compiler is broken into many small incremental steps. Every step yields a fully working compiler for a progressively expanding subset of Scheme. Every compiler step produces real assembly code that can be assembled then executed directly by the hardware."

There is also a work-in-progress effort to write a more extensive textbook that follows the same approach to teaching compiler development, using Racket instead of R5RS Scheme: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

There are already a lot of suggestions here, I've added to my always increasing reading list this one[1] because, being based on Scheme (Racket to be exact), I'm curious on how a Lisp dialect compiler works internally.

[1] https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

Yes, we still have a similar course at IU. Here's the textbook for the current incarnation: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...