Sono sorpreso che nessuno abbia dato la risposta ovvia e, sospetto, quella più utilizzata nella pratica: non leggere i messaggi di errore.
La stragrande maggioranza del valore della maggior parte dei messaggi di errore è semplicemente che qualcosa non va in questa o quella linea. Il più delle volte guardo il numero della linea e vado su quella linea. La mia "lettura" del messaggio di errore a quel punto di solito è proprio qualunque cosa il mio sguardo catturi di sfuggita, nemmeno una sbavatura. Se non è immediatamente chiaro cosa c'è di sbagliato sopra o vicino alla linea, allora leggerò il messaggio. Questo flusso di lavoro è ancora migliore con un IDE o tooling che evidenzia gli errori sul posto e realizza automaticamente il suggerimento di Karl Bielefeldt di prendere in considerazione solo piccole modifiche.
Naturalmente, i messaggi di errore non puntano sempre sulla riga appropriata, ma spesso non puntano nemmeno alla causa principale appropriata, quindi anche una piena comprensione del messaggio di errore potrebbe essere di aiuto limitato. Non ci vuole molto a farsi un'idea di quali sono i messaggi di errore più affidabili sulla localizzazione della linea corretta.
Da un lato, è probabile che la maggior parte degli errori che un principiante dovrebbe essere dolorosamente ovvi per un programmatore esperto senza l'aiuto del compilatore necessario. D'altra parte, è molto meno probabile che siano così ovvi per i novizi (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 familiarizzarsi con la lingua. Non si può evitare questo. Errori del compilatore che fanno riferimento a concetti non familiari 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 riesci a capire perché il codice è sbagliato.
Ancora una volta, sono d'accordo con Robert Harvey sul fatto che sia necessaria una strategia migliore per utilizzare gli errori del compilatore. Ho delineato alcuni aspetti sopra e la risposta di Robert Harvey fornisce altri aspetti. Non è nemmeno chiaro cosa speri di fare il tuo amico con un simile "glossario", ed è molto improbabile che un simile "glossario" sia di grande utilità per il tuo amico. I messaggi del compilatore non sono certo il posto giusto per un'introduzione ai concetti del linguaggio 1 e un "glossario" non è tanto un posto migliore per questo. Anche con una descrizione chiara 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 linguistiche "orientate ai principianti", tentano di farlo comunque. In questo senso, il consiglio di MSalters di utilizzare una diversa implementazione è direttamente rilevante. Personalmente trovo tali cose non interessanti e non mirate al giusto problema. Questo non vuol dire che non ci siano modi per creare messaggi di errore migliori, ma, per me, tendono a ruotare attorno a rendere più chiare le convinzioni del compilatore e le basi di quelle credenze.