|Analysis||Requirements & Principles||
|building blocks: Features||
|foundational||safety: type systems, etc.||flexibilized: polymorphism, etc.|
Note that programming languages are in fact languages:
(1) They use symbols unrelated to their meaning.
(2) The order of the symbols is not arbitrary.
(3) The meaning of symbols depends on the context (overloading is an extreme case).
(4) They have morphemes (c.f. Jabberwocky).
C.f. the ethymology of PL symbols and keywords.
If you know further references, please don't hesitate to tell me (Ulf Schünemann), likewise if you have any suggestions.
Abbreviations: ADT = abstract data type; HOF = Higher order functions; LC = lambda-calculus; LNCS = Lecture Notes of Computer Science (series from Springer); OB = object-based; OO = object-oriented; OTOH = on the other hand; PL = programming language; SW = software.
An (incomplete) list of Courses in Principles and Implementation of Programming Languages. I just want to add:
|Analysis||Requirements & Principles||Paradigms||Abstractions||Structure||Features||foundational||safety||flexible typing||Syntactics||Defining PLs||Language List|