PLT

Programming Language Theory

Maintained by Steven Shaw and contributors

Programming Language Theory

Learning about Programming Language Theory can be a tough journey, particularly for programming practitioners who haven’t studied it formally. This resource is here to help. Please feel free to get in touch if you have ideas for improvement.

💡 Top Tips

For a quick course in Type Theory, Philip Wadler recommends: Types and Programming Languages , Proofs and Types , followed by Advanced Topics in Types and Programming Languages .

See also Daniel Gratzer’s Learn Type Theory, and Darryl McAdams’s So you want to learn type theory.

Type Theory

Books

Papers

Videos

Subtopics

Programming Languages

Books

  • DCPL - Design Concepts in Programming Languages – Franklyn Turbak and David Gifford, 2008. Course
  • CTM - Concepts, Techniques, and Models of Computer Programming, Peter Van Roy and Seif Haridi
  • EOPL - Essentials of Programming Languages, 3rd Edition - Daniel P. Friedman
  • PLAI - Programming Languages: Application and Interpretation - Shriram Krishnamurthi
  • PAIP Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp - Peter Norvig, 1992
  • PLP Programming Language Pragmatics - Michael L. Scott
  • FSPL The Formal Semantics of Programming Languages - Glynn Winskel
  • PL:BPC Programming Languages: Build, Prove, and Compare - Norman Ramsey

Papers

Compiler Construction

Books

  • MinCaml - A Crash Course for the MinCaml Compiler
  • MCIiML Modern Compiler Implementation in ML - Andrew W. Appel
  • pj-lester-book Implementing functional languages: a tutorial - Simon Peyton Jones and David Lester, 1992
  • slpj-book-1987 - The Implementation of Functional Programming Languages - Simon Peyton Jones - 1987
  • MCD-2e Modern Compiler Design, Second Edition — Dick Grune et al.
  • EaC-2e Engineering a Compiler, 2nd Edition, Cooper and Torczon
  • Compiler Construction, Niklaus Wirth
  • DragonBook - "The Dragon Book" Compilers: Principles, Techniques, and Tools
  • LiSP - Lisp in Small Pieces - Christian Queinnec
  • CwC Compiling with Continuations - Andrew W. Appel
  • Static Program Analysis, Anders Møller and Michael I. Schwartzbach
  • List of compiler books at the GCC Wiki

Papers

Videos

Runtime systems

Books

Papers

Functional Programming

Books

  • Bird and Wadler - Introduction to Functional Programming, 1st Edition - Bird and Wadler
  • AoP - The Algebra of Programming - Richard Bird, Oege de Moor
  • Programming in Haskell — Graham Hutton (2007)
  • RWH - Real World Haskell - Bryan O’Sullivan, Don Stewart, and John Goerzen
  • FPiS - Functional Programming in Scala - Paul Chiusano and Rúnar Bjarnason
  • SICP, Structure and Interpretation of Computer Programs, by Abelson, Sussman, and Sussman
  • PCPH - Parallel and Concurrent Programming in Haskell - Simon Marlow
  • RWOC - Real World OCaml - Jason Hickey, Anil Madhavapeddy, and Yaron Minsky
  • Developing Applications With OCaml — Emmanuel Chailloux, Pascal Manoury and Bruno Pagano (2000)
  • BTLS - The Little Schemer - Daniel P. Friedman, Matthias Felleisen
  • BTSS - The Seasoned Schemer - Daniel P. Friedman, Matthias Felleisen
  • BTML - The Little MLer - Matthias Felleisen, Daniel P. Friedman
  • The Reasoned Schemer and miniKanren
  • HTDP - How to Design Programs - Matthias Felleisen, Robert Findler, Matthew Flatt, Shriram Krishnamurthi
  • HR - The Haskell Road to Logic, Maths and Programming - 2nd Ed. - Kees Doets, Jan van Eijck pdf
  • A Book of Abstract Algebra - 2nd Ed. - Charles C. Pinter booko
  • Purely Functional Data Structures - Chris Okasaki phd-thesis in pdf paperback@booko More purely functional data structures

Papers

Videos

Category Theory

Philip Wadler’s advice here is "read Pierce for motivation, Mac Lane for the presentation of the maths".

Books

Journals

  • TAC - Theory and Applications of Categories

Subtopics

Mathematics

Some related maths resources.

Mathematical Literacy/Thinking

It can be useful to have some background in mathematical thinking.

Algebra

Other collections

AltStyle によって変換されたページ (->オリジナル) /