誰も明白な答えを出さなかったことに驚いています。実際に最も頻繁に使用されるのは、エラーメッセージを読まないでください。
ほとんどのエラーメッセージの価値の大部分は、単にそのような行で何かが間違っているということです。ほとんどの場合、私は単に行番号を見て、その行に移動します。その時点でのエラーメッセージの「読み取り」は、通常、目をつぶっただけでなく、目を引くものです。行またはその近くで何が間違っているかがすぐにわからない場合は、実際にメッセージを読みます。このワークフローは、その場でエラーを強調表示するIDEまたはツールを使用するとさらに良くなり、小さな変更のみを考慮するというカールビーレフェルトの提案を自動的に実行します。
もちろん、エラーメッセージは常に適切な行を指しているわけではありませんが、適切な根本原因も指し示していない場合が多いため、エラーメッセージを完全に理解することでさえも助けになりません。適切な行を見つけることに関して、どのエラーメッセージがより信頼できるのかを知るのに時間はかかりません。
一方で、初心者が犯す可能性が高いエラーのほとんどは、コンパイラーの助けを必要とせずに、経験豊富なプログラマーにとって痛々しいほど明白です。一方で、初心者にはそれほど明白ではありません(多くの人が明白になりますが、ほとんどの間違いは愚かな間違いです)。この時点で、私はロバート・ハーベイに完全に同意します。初心者は単に言語に精通する必要があります。これを避けることはできません。なじみのない概念を参照している、または意外と思われるコンパイラエラーは、言語の知識を深めるためのプロンプトと見なされるべきです。同様に、コンパイラーが文句を言っているのに、コードが間違っている理由がわからない場合も同様です。
繰り返しますが、コンパイラー・エラーを利用するためのより良い戦略が必要であるというロバート・ハーベイに同意します。上記のいくつかの側面を概説しましたが、Robert Harveyの答えは他の側面を提供します。あなたの友人がそのような「用語集」で何をしたいのかさえ明確ではなく、そのような「用語集」が実際にあなたの友人にとって大いに役立つことはほとんどありません。コンパイラーのメッセージは、言語1の概念を紹介する場所ではないことは確かであり、「用語集」はそれほど良い場所ではありません。エラーメッセージの意味が明快に説明されていても、問題を修正する方法はわかりません。
1 ElmやDhall(およびおそらくRacket)のようないくつかの言語、および言語のいくつかの「初心者向け」実装は、これを試みます。このように、異なる実装を使用するというMSaltersのアドバイスは直接関連しています。私は個人的にそのようなことは説得力がなく、正しい問題に向けられたものではないと感じています。これは、より良いエラーメッセージを作成する方法がないと言うことではありませんが、私にとっては、コンパイラの信念とそれらの信念の基礎を明確にすることを中心に展開する傾向があります。