Please note that these are only notes towards two books that will probably never be finished. The "books" are only about 1% there. Perhaps these notes will make interesting reading in the meantime. -- bayle

Volume I: An Overview of Programming Languages

This is a very short-length book (~25 pages?) for programmers who just want to know (a) what the major programming languages are, what they are good for, and which ones to learn; (b) to learn the basic terminology that programming language afficianados use when comparing languages (eg 'parametric polymorphism') so that they can follow discussions about languages, and (c) to learn the other basic terminology used by programming language designers and implementers (eg 'lexer', 'abstract syntax tree'). Since the reader probably already knows half of this, it is broken into bite-sized chunks so that you can easily skip the stuff you know. This volume assumes that the reader already knows quite a bit about programming.

The target audience is readers who already have a fair bit of programming experience; you should know a couple of languages already. If you don't know things like what a compiler is, or what static vs. dynamic typing is, then this book is probably too advanced.


Volume II: Programming Languages: a survey

This is a more detailed survey of programming languages, constructs found in programming languages, and related ideas. Despite the catalog-like character of some of its parts, it is not intended to be a reference work; it is intended to be read straight through (assuming i ever compile these scattered notes into something readable, of course). This volume assumes that the reader already knows everything in Volume I: An Overview of Programming Languages.

Note: when i quote other people's opinions, often i quote the part in which they give a criticism of a language while omitting the context just before that where they said something to the effect of "Language X is my favorite language but...". This is because my goal is to make lists of specific pros and cons.


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 turinggrade languages that compete with them:

Part IV: A catalog of target languages (ILs; intermediate languages):

Part V: A catalog of programming language constructs and features:

Part VI: A catalog of constructs and features relating to concurrency and distributed computing:

Part VII: Usage patterns, idioms, and best practices:

Part VII: Formal theoretical stuff:

Part IX: Type systems:

Part X: Implementation:

(which part should this be in?) Chapter ?: Natural languages

Part XI: Random thoughts and ideas for the future of programming languages:

Part XII: Links and external resources: