Programming Language Design and Implementation ---------------------------------------------- [(Up)](../../README.md#topics) | _See also: [Type Systems](../Type%20Systems/README.md#type-systems), [Partial Evaluation](../Partial%20Evaluation/README.md#partial-evaluation), [Compiler Construction](../Compiler%20Construction/README.md#compiler-construction), [Programming Languages](../Programming%20Languages/README.md#programming-languages), [Attribute Grammars](../Attribute%20Grammars/README.md#attribute-grammars)_ - - - - ### Web resources [CMSC 430: Design and Implementation of Programming Languages: Notes](https://www.cs.umd.edu/class/fall2020/cmsc430/Notes.html) ★ [programming languages - Structural equivalence of self-referential structures - Computer Science Stack Exchange](https://cs.stackexchange.com/questions/159595/structural-equivalence-of-self-referential-structures) ★ [Borrow checking, escape analysis, and the generational hypothesis](https://steveklabnik.com/writing/borrow-checking-escape-analysis-and-the-generational-hypothesis) ★ [Programming Language Foundations (University of Iowa - 22C: 123 - Graduate Course)](https://homepage.cs.uiowa.edu/~slonnegr/plf/) ★ [An opinionated history of programming languages \| artagnon.com](https://artagnon.com/art/pl) ★ [CSE 40431/60431: Programming Languages (2022 course notes)](https://www3.nd.edu/~dchiang/teaching/pl/2022/) ★ [language design - Why F\#, Rust and Others Use Option Type Instead Of Nullable types like C\# 8 Or TypeScript? - Software Engineering Stack Exchange](https://softwareengineering.stackexchange.com/questions/410724/why-f-rust-and-others-use-option-type-instead-of-nullable-types-like-c-8-or-t) ★ [language design - Why do \"checked exceptions\", i.e., \"value-or-error return values\", work well in Rust and Go but not in Java? - Software Engineering Stack Exchange](https://softwareengineering.stackexchange.com/questions/420898/why-do-checked-exceptions-i-e-value-or-error-return-values-work-well-in) ★ ### Compilation [compiling - Do C compilers discard unused functions when statically linking to .a file? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/715899/do-c-compilers-discard-unused-functions-when-statically-linking-to-a-file) ★ [What blocks Ruby, Python to get Javascript V8 speed? - Stack Overflow](https://stackoverflow.com/questions/5168718/what-blocks-ruby-python-to-get-javascript-v8-speed) ★ [Why is JavaScript not compiled to bytecode before sending over the network? - Software Engineering Stack Exchange](https://softwareengineering.stackexchange.com/questions/402250/why-is-javascript-not-compiled-to-bytecode-before-sending-over-the-network) ★ ### Repositories [ibrahimsag/rw: an experiment in presenting code.](https://github.com/ibrahimsag/rw) ★★★ [ebuswell/noneleatic: Noneleatic (Mutable State) Languages](https://github.com/ebuswell/noneleatic) ★ ### Papers Fundamental Concepts in Programming Languages (online @ [ics.uci.edu](https://ics.uci.edu/~jajones/INF102-S18/readings/05_stratchey_1967.pdf)) 🏛️ [💭](commentary/Chris%20Pressey.md#fundamental-concepts-in-programming-languages) Definitional interpreters for higher-order programming languages (online @ [homepages.inf.ed.ac.uk](https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/reynolds-definitional-interpreters-1998.pdf)) 🏛️ [💭](commentary/Chris%20Pressey.md#definitional-interpreters-for-higher-order-programming-languages) Trampolined style (online @ [dl.acm.org](https://dl.acm.org/doi/abs/10.1145/317636.317779)) ★★★ [💭](commentary/Chris%20Pressey.md#trampolined-style) _(in [Name Binding](../Name%20Binding/README.md#name-binding))_ [A Metalanguage for Programming with Bound Names Modulo Renaming](https://www.cl.cam.ac.uk/~amp12/papers/metpbn/metpbn.pdf) _(in [Theorem Proving](../Theorem%20Proving/README.md#theorem-proving))_ Theorem proving support in programming language semantics (online @ [arxiv.org](https://arxiv.org/abs/0707.0926)) ★ [💭](commentary/Chris%20Pressey.md#theorem-proving-support-in-programming-language-semantics) ### Books A Practical Introduction to Denotational Semantics (borrow @ [archive.org](https://archive.org/details/practicalintrodu0000alli)) ★★★ [💭](commentary/Chris%20Pressey.md#a-practical-introduction-to-denotational-semantics) Formal Syntax and Semantics of Programming Languages (borrow @ [archive.org](https://archive.org/details/formalsyntaxsema0000slon)) ★★★ [💭](commentary/Chris%20Pressey.md#formal-syntax-and-semantics-of-programming-languages) Theories of Programming Languages (borrow @ [archive.org](https://archive.org/details/theoriesofprogra0000reyn)) ★★ [💭](commentary/Chris%20Pressey.md#theories-of-programming-languages) Threaded Interpretive Languages (online @ [archive.org](https://archive.org/details/R.G.LoeligerThreadedInterpretiveLanguagesTheirDesignAndImplementationByteBooks1981)) _(in [Philosophy](../Philosophy/README.md#philosophy))_ The Cognitive Connection: Thought and Language in Man and Machine (borrow @ [archive.org](https://archive.org/details/cognitiveconnect0000levi)) ★★★ [💭](commentary/Chris%20Pressey.md#the-cognitive-connection-thought-and-language-in-man-and-machine)