A comprehensive discussion of the components of programming languages which emphasises how a language is built. It covers core concepts including specification, objects, expressions, control and types with discussions of fundamentals, implementations strategies and related semantic issues.