Please note that these are only notes towards a book that will probably never be finished. Perhaps these notes will make interesting reading in the meantime. -- bayle
Programming Languages: a survey
Contents
- Preface and Introduction
- Part I: The design of programming languages
- Part II: A catalog of general-purpose programming languages
- Part III: A catalog of subturing programming languages, and languages that compete with them
- Part IV: A catalog of target languages
- Part V: A catalog of programming language constructs and features
- contains: data, OOP, extensible data, evaluation strategy (call-bys), operations, extensible operations, modules and encapsulation, linked data, managing state, managing state: scoping, team programming, misc, runtime features, std lib, interop,
- Chapter 24: Syntax
- Chapter ?: Control
- Chapter ?: Error handling
- Chapter ?: Type
- Chapter ?: Numbers
- Chapter ?: Strings
- Chapter ?: Metaprogramming
- contains: hacking the call stack, hacking the ENV, operations, hacking classes, syntax, macros etc, eval (todo generalize), misc
- Chapter ?: Low level
- Chapter ?: Alternative paradigms motivated by physics
- Chapter ?: Misc constructs
- Chapter ?: Other features
- Part VI: A catalog of constructs and features relating to concurrency and distributed computing
- Part VII: Usage patterns, idioms, and best practices
- contains: patterns, types of coding tasks
- Part VII: Formal theoretical stuff
- Part IX: Type systems
- Part X: Implementation
- contains: the general pipeline, modularity, concurrency implementation, efficiency, Normal forms, Performance optimizations, etc
- Chapter ?: Parsing (and lexing)
- Chapter ?: targets, IRs, VMs and runtimes
- Chapter ?: Interop
- Chapter ?: Hard things to make it easy for the programmer (contains: garbage collection, greenthreads, TCO and strictness analysis)
- Chapter ?: Tradeoffs
- contains: Constraints that performance considerations of the language and the toolchain impose on language design
- Part XI: Random thoughts and ideas for the future of programming languages
- Part XII: Links and external resources
todo
todo add in stuff from [1] and [2] and [3] and [4] and [5] and any non-opinions from [6].