「コンパイルエラー」と「文法エラー」の違い
予備知識
| 用語 | 意味 |
|---|---|
| ソースコード | 人間語で書いたプログラムの元ネタ |
| コンパイル | ソースコードをコンピュータさんが分かる言葉に翻訳する作業 |
| エラー | 「やべっ、予定と違うんだけど!」な状況・状態 |
プログラムを作って動かすまでの一般的な流れは
1.人間語でプログラムの元ネタを書く
2.元ネタを人間語から機械語に翻訳する
3.翻訳された指示に従って、コンピュータさんが お仕事する
です。

コンピュータさんは人間語が分かりません。

人間様はコンピュータさんの言葉が分かりません。

プログラムは人間様が作るものです。
そこで最初は人間様が分かる言葉でプログラムを作ります。
コンピュータさんに対する「あれをやれ」「これをやれ」な命令を人間語で書くのです。

次に人間語で書いたプログラムの元ネタをコンピュータさんが分かる言葉に翻訳します。
実際に お仕事をするのは、コンピュータさんですからね。
コンピュータさんが分かる言葉に変換する必要があるのです。

コンピュータさんが分かる言葉に翻訳したので、コンピュータさんは命令の内容を理解できます。
指示に従って、お仕事をしてくれるでしょう。

かなり簡略化した説明ですけどね。
これがプログラムを作るときの流れです。
この話で登場した「人間語で書いたプログラムの元ネタをコンピュータさんが分かる言葉に翻訳する作業」を「コンパイル」と言います。
人間語を機械語に翻訳する作業です。

それぞれの用語の意味
| 用語 | 意味 |
|---|---|
| コンパイルエラー | 「コンパイルするのに失敗しました」エラー |
| 文法エラー | 「書き方が間違っているからコンパイルできませんでした」エラー |
似ているところ
同じことを言っている場合が少なくありません。
その場合は、コンパイル時に発生する「書き方が間違っていますよ!」エラーを指しているはずです。

違うところ
用語の意味を厳密に捉えたら
コンパイルエラー:コンパイル時に発生したエラー
文法エラー:書き方を間違っているのが原因のエラー
です。
「タイミング」に注目した分類か「原因」に注目した分類かという違いがあります。
備考
ほとんどの場合では
「コンパイル」というタイミングで発生した「書き方を間違っている」のが原因のエラー
を指して「コンパイルエラー」と言ったり「文法エラー」と言ったりしています。
「コンパイル」というタイミングで発生した「書き方を間違っている」のが原因のエラーは「コンパイルエラー」であり「文法エラー」でもあります。
それが混同されがちな理由です……多分。






