Dziwi mnie, że nikt nie podał oczywistej odpowiedzi i, jak podejrzewam, najczęściej używanej w praktyce: po prostu nie czytaj komunikatów o błędach.
Zdecydowana większość wartości większości komunikatów o błędach polega po prostu na tym, że coś jest nie tak w takim i takim wierszu. Przez większość czasu po prostu patrzę na numer linii i przechodzę do tej linii. Moje „odczytanie” komunikatu o błędzie w tym momencie jest zwykle dokładnie tym, co przykuwa moje oko, nawet śladem. Jeśli nie jest od razu jasne, co jest nie tak na linii lub w jej pobliżu, wtedy faktycznie przeczytam wiadomość. Ten przepływ pracy jest jeszcze lepszy z IDE lub oprzyrządowaniem, które natychmiast rozpoznaje błędy i automatycznie realizuje sugestię Karla Bielefeldta, aby rozważyć tylko niewielkie zmiany.
Oczywiście komunikaty o błędach nie zawsze wskazują odpowiednią linię, ale często nie wskazują też właściwej przyczyny źródłowej, więc nawet pełne zrozumienie komunikatu o błędzie byłoby bardzo pomocne. Nie trwa długo, aby zorientować się, które komunikaty o błędach są bardziej niezawodne w zlokalizowaniu właściwej linii.
Z jednej strony większość błędów, które może popełnić nowicjusz, może być boleśnie oczywista dla doświadczonego programisty bez konieczności korzystania z kompilatora. Z drugiej strony są znacznie mniej prawdopodobne, że będą tak oczywiste dla początkującego (choć wielu będzie oczywistych, większość błędów to głupie błędy). W tym momencie całkowicie zgadzam się z Robertem Harveyem, nowicjusz musi po prostu lepiej poznać język. Nie da się tego uniknąć. Błędy kompilatora, które odnoszą się do nieznanych pojęć lub wydają się zaskakujące, powinny być postrzegane jako zachęta do pogłębienia znajomości języka. Podobnie w przypadkach, gdy kompilator narzeka, ale nie można zrozumieć, dlaczego kod jest nieprawidłowy.
Ponownie zgadzam się z Robertem Harveyem, że potrzebna jest lepsza strategia wykorzystania błędów kompilatora. Przedstawiłem niektóre aspekty powyżej, a odpowiedź Roberta Harveya podaje inne aspekty. Nie jest nawet jasne, co twój przyjaciel ma nadzieję zrobić z takim „glosariuszem”, i jest bardzo mało prawdopodobne, że taki „glosariusz” byłby bardzo przydatny dla twojego przyjaciela. Komunikaty kompilatora z pewnością nie są miejscem na wprowadzenie do pojęć języka 1, a „glosariusz” nie jest dla niego lepszym miejscem. Nawet z jasnym opisem, co oznacza komunikat o błędzie, nie powie ci, jak rozwiązać problem.
1 Próbuje tego jednak dokonać w kilku językach, takich jak Elm i Dhall (i prawdopodobnie Racket), a także kilka implementacji języków dla początkujących. W tym duchu doradztwo MSalters dotyczące zastosowania innej implementacji jest bezpośrednio istotne. Osobiście uważam takie rzeczy za nieprzekonujące i niezupełnie ukierunkowane na właściwy problem. Nie oznacza to, że nie ma sposobów na poprawianie komunikatów o błędach, ale dla mnie mają one tendencję do objaśniania przekonań kompilatora i ich podstaw.