diff --git a/src/appendix/background.md b/src/appendix/background.md index dbfe6a3db..50a550dc8 100644 --- a/src/appendix/background.md +++ b/src/appendix/background.md @@ -126,3 +126,38 @@ So what does this have to do with regions? Well, we can apply the analogous concept to type and regions. For example, in the type `&'a u32`, `'a` appears free. But in the type `for<'a> fn(&'a u32)`, it does not. + +# Further Reading About Compilers + +> Thanks to `mem`, `scottmcm`, and `Levi` on the official Discord for the +> recommendations, and to `tinaun` for posting a link to a [twitter thread from +> Graydon Hoare](https://twitter.com/graydon_pub/status/1039615569132118016) +> which had some more recommendations! +> +> Other sources: https://gcc.gnu.org/wiki/ListOfCompilerBooks +> +> If you have other suggestions, please feel free to open an issue or PR. + +## Books +- [Types and Programming Languages](https://www.cis.upenn.edu/~bcpierce/tapl/) +- [Programming Language Pragmatics](https://www.cs.rochester.edu/~scott/pragmatics/) +- [Practical Foundations for Programming Languages](https://www.cs.cmu.edu/~rwh/pfpl/2nded.pdf) +- [Compilers: Principles, Techniques, and Tools, 2nd Edition](https://www.amazon.com/dp/9332518661/ref=cm_sw_r_other_apa_1tUSBb5VHAVA1) +- [Garbage Collection: Algorithms for Automatic Dynamic Memory Management](https://www.cs.kent.ac.uk/people/staff/rej/gcbook/) +- [Linkers and Loaders](https://linker.iecc.com/) +- [Advanced Compiler Design and Implementation](https://www.goodreads.com/book/show/887908.Advanced_Compiler_Design_and_Implementation) +- [Building an Optimizing Compiler](https://www.goodreads.com/book/show/2063103.Building_an_Optimizing_Compiler) +- [Crafting Interpreters](http://www.craftinginterpreters.com/) + +## Courses +- [University of Oregon Programming Languages Summer School archive](https://www.cs.uoregon.edu/research/summerschool/archives.html) + +## Wikis +- [Wikipedia](https://en.wikipedia.org/wiki/List_of_programming_languages_by_type) +- [Esoteric Programming Languages](https://esolangs.org/wiki/Main_Page) +- [Stanford Encyclopedia of Philosophy](https://plato.stanford.edu/index.html) +- [nLab](https://ncatlab.org/nlab/show/HomePage) + +## Misc Papers and Blog Posts +- [Programming in Martin-Löf's Type Theory](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.118.6683&rep=rep1&type=pdf) +- [Polymorphism, Subtyping, and Type Inference in MLsub](https://www.cl.cam.ac.uk/~sd601/papers/mlsub-preprint.pdf)