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) ★ [Structural equivalence of self-referential structures](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/) ★ [Why F\#, Rust and Others Use Option Type Instead Of Nullable types like C\# 8 Or TypeScript?](https://softwareengineering.stackexchange.com/questions/410724/why-f-rust-and-others-use-option-type-instead-of-nullable-types-like-c-8-or-t) ★ [Why do \"checked exceptions\", i.e., \"value-or-error return values\", work well in Rust and Go but not in Java?](https://softwareengineering.stackexchange.com/questions/420898/why-do-checked-exceptions-i-e-value-or-error-return-values-work-well-in) ★ ### Compilation [Do C compilers discard unused functions when statically linking to .a file?](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?](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?](https://softwareengineering.stackexchange.com/questions/402250/why-is-javascript-not-compiled-to-bytecode-before-sending-over-the-network) ★ _(in [Formal Language](../Formal%20Language/README.md#formal-language))_ [Is \"regex\" in modern programming languages really \"context sensitive grammar\"?](https://stackoverflow.com/questions/612654/is-regex-in-modern-programming-languages-really-context-sensitive-grammar) ★ _(in [Python](../Python/README.md#python))_ [Python Is Middleware](https://www.tundraware.com/Technology/Python-Is-Middleware/) ★ [💭](commentary/cpressey.md#python-is-middleware) ### 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/cpressey.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/cpressey.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/cpressey.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/cpressey.md#theorem-proving-support-in-programming-language-semantics) ### Books A Practical Introduction to Denotational Semantics (borrow with print disabilities @ [archive.org](https://archive.org/details/practicalintrodu0000alli)) ★★★ [💭](commentary/cpressey.md#a-practical-introduction-to-denotational-semantics) Formal Syntax and Semantics of Programming Languages (borrow @ [archive.org](https://archive.org/details/formalsyntaxsema0000slon)) ★★★ [💭](commentary/cpressey.md#formal-syntax-and-semantics-of-programming-languages) Theories of Programming Languages (borrow with print disabilities @ [archive.org](https://archive.org/details/theoriesofprogra0000reyn)) ★★ [💭](commentary/cpressey.md#theories-of-programming-languages) Threaded Interpretive Languages (online @ [archive.org](https://archive.org/details/R.G.LoeligerThreadedInterpretiveLanguagesTheirDesignAndImplementationByteBooks1981)) Programming Language Pragmatics (borrow @ [archive.org](https://archive.org/details/programminglangu0000scot_4edi), [archive.org](https://archive.org/details/programminglangu0000scot_m3j1), [archive.org](https://archive.org/details/programminglangu0000scot_i7d2)) _(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/cpressey.md#the-cognitive-connection-thought-and-language-in-man-and-machine)