Sono sorpreso che nessuno abbia dato la risposta ovvia e, sospetto, quello più spesso usato in pratica: semplicemente non leggere i messaggi di errore.
La stragrande maggioranza del valore della maggior parte dei messaggi di errore è semplicemente che qualcosa non va su tale e tale linea. Il più delle volte guardo solo il numero di riga e vado a quella riga. La mia "lettura" del messaggio di errore a quel punto di solito è esattamente ciò che il mio sguardo cattura di sfuggita, nemmeno una scrematura. Se non si capisce subito cosa c'è che non va nella linea o vicino, allora in realtà leggerò il messaggio. Questo flusso di lavoro è ancora migliore con un IDE o uno strumento che evidenzia errori sul posto e realizza automaticamente il suggerimento di Karl Bielefeldt di considerare solo piccoli cambiamenti.
Naturalmente, i messaggi di errore non puntano sempre alla riga appropriata, ma spesso non indicano nemmeno la causa principale appropriata, quindi anche una piena comprensione del messaggio di errore sarebbe di aiuto limitato. Non ci vuole molto per avere un'idea di quali messaggi di errore sono più affidabili nel trovare la linea corretta.
Da un lato, la maggior parte degli errori che un principiante potrebbe commettere sono probabilmente dolorosamente ovvi per un programmatore esperto senza che sia necessario l'aiuto del compilatore. D'altra parte, è molto meno probabile che siano così ovvi per il principiante (anche se molti saranno ovvi, la maggior parte degli errori sono errori stupidi). A questo punto sono completamente d'accordo con Robert Harvey, il novizio ha semplicemente bisogno di familiarizzare con la lingua. Non si può evitare questo. Gli errori del compilatore che fanno riferimento a concetti sconosciuti o sembrano sorprendenti dovrebbero essere visti come suggerimenti per approfondire la conoscenza della lingua. Allo stesso modo per i casi in cui il compilatore si lamenta ma non si vede perché il codice è errato.
Ancora una volta, concordo con Robert Harvey sulla necessità di una strategia migliore per l'utilizzo degli errori del compilatore. Ho delineato alcuni aspetti sopra e la risposta di Robert Harvey fornisce altri aspetti. Non è nemmeno chiaro cosa il tuo amico speri di fare con un "glossario" del genere, ed è molto improbabile che un simile "glossario" possa effettivamente essere di grande utilità per il tuo amico. I messaggi del compilatore non sono certamente il posto per un'introduzione ai concetti del linguaggio 1 e un "glossario" non è un posto molto migliore per esso. Anche con una descrizione lucida di cosa significa il messaggio di errore, non ti dirà come risolvere il problema.
1 Alcune lingue, come Elm e Dhall (e probabilmente Racket), così come alcune implementazioni di lingue "orientate ai principianti" tentano di farlo. In questo senso, il consiglio di MSalters di utilizzare un'implementazione diversa è direttamente pertinente. Personalmente trovo queste cose poco interessanti e non del tutto mirate al giusto problema. Questo non vuol dire che non ci sono modi per rendere migliori i messaggi di errore, ma, per me, tendono a girare intorno a rendere più chiare le credenze del compilatore e la base di quelle credenze.