- Abelson, Sussman, "Structure and Interpretation of Computer Programs, 2nd ed.", MIT Press

- Aho, Sethi, Ullman, "Compilers - Principles, techniques, and tools", Addison-Wesley Longman

- Kaplan, "Constructing language processors for little languages", John Wiley & Sons

- Mak, "Writing compilers and interpreters", John Wiley & Sons

- Gries, "Principi di progettazione dei compilatori", Franco Angeli Editore

- Morgan, "Building an optimizing compiler", DP Digital Press

- Kennedy & Allen, "Optimizing Compilers for Modern Architectures", Morgan Kaufmann

- Winskel, "La semantica formale dei linguaggi di programmazione", UTET

- Bruno, "Linguaggi formali e compilatori", UTET

- Srikant & Shankar, "The Compiler Design Handbook", CRC Press

- Kaspersky, "Code Optimization", A-List Publishing

Inventare un "nuovo" linguaggio di ragionevole complessità non è un esercizio particolarmente frequente nella didattica informatica di base. Se ne parla semmai in corsi di dottorato e seminari piuttosto esoterici sulla progettazione formale di linguaggi secondo paradigmi molto specifici (dichiarativo, funzionale, constrained etc.).

Scrivere un compilatore o interprete per un linguaggio ben definito, asseverato e coerente, è già un compito applicativo sufficientemente impegnativo a livello didattico e/o di autoapprendimento, che richiede una lunga full immersion in nozioni complesse e molto peculiari, fortemente radicate nella conoscenza dell'architettura dei sistemi.

Oltre livelli piutto bassi di complessità (i "little languages" di Kaplan, o giù di lì), la progettazione di linguaggi e l'implementazione dei relativi processori sono compiti diversi e condotti da specialisti con preparazioni diverse, spesso anche molto divergenti (logici matematici e informatici teorici tra i progettisti di linguaggi, informatici applicativi o ingegneri gli implementatori di buoni compilatori o interpreti).

Questo vale in linea generale, naturalmente: per l'informatico quadratico medio è più probabile prendere facilmente confidenza col codice ed i concetti di un compilatore ottimizzante che con le notazioni formali necessarie a descrivere sintassi e semantica di un linguaggio di programmazione, permettendo di dimostrarne a priori coerenza ed altre proprietà in modo rigoroso, evitando quindi a monte situazioni penose, ambiguità e conflitti insolubili.
Certo, è vero che nel real world esiste anche roba come PHP e molti altri linguaggi che semplicemente non sono stati progettati...