この記事は、オペレーティングシステム からの続編です。
この記事は、絵でわかる プログラムとは何か(2)~翻訳と管理のプログラム~ の一記事です。
この記事のポイント
- 人間の使う言葉(自然言語)により近い形で書けるプログラミング言語を高級プログラミング言語と言う。
- 逆に、マシンコードやアセンブリ言語を低級プログラミング言語と言う。
- 高級プログラミング言語で書かれたプログラムを、低級プログラミング言語のプログラムに変換(翻訳)するプログラムをコンパイラと言う。
より自然言語に近い言語へ
アセンブリ言語は、マシンコードよりは人間にわかりやすくなったものの、言ってみればマシンコードを人間の言葉(英単語)に直訳しただけのものであり、その文法(単語順序)は、ほぼマシンコードそのままでした。

人間がコンピューターにさせたいことを、アセンブリ言語として書き表すには、人間の脳内でプログラム設計(自然言語による設計)をして、そこからプロセッサに合わせてアセンブリ言語化(翻訳)をする必要がありました。
そこをもっと効率良くするために、高級プログラミング言語(high-level programming language)とコンパイラ(compiler)が作られました。
高級プログラミング言語(略して高級言語)は、人間の脳内でのプログラム設計を、人間の使う言葉(自然言語)=英語の文法 により近い形で書き表せるようにしたプログラミング言語です。

高級プログラミング言語に対して、マシンコードやアセンブリ言語を低級プログラミング言語(略して低級言語)とも言います。
コンパイラ
そしてコンパイラは、高級言語で書かれたプログラムを、マシンコードまたはアセンブリ言語のプログラムに変換(翻訳)するプログラムです。

なお、コンパイラという言葉の元となったコンパイル(compile)という言葉は、プロセッサの動作につながらない高級言語から、プロセッサの動作につながるマシンコードへと、プログラムを機械的に【再編集】することを指した言葉です。
話は少し脱線しますが、CDが音楽メディアの中心だった1990年~2010年頃は、同一の企画テーマで集められ再編集されたCDをよく「コンピレーション(compilation)」と言っていました(2010年以降の音楽ストリーミングサービスで「プレイリスト」と言われているものとほぼ同じものです)。これも英語では同じ compile から派生した言葉です。
アセンブリ言語までの低級言語では、プログラマが、使用するアーキテクチャを意識してプログラミングをする必要がありました。しかし、高級言語では、プラットフォームに合わせたコンパイラさえ使用すれば、コンパイラがアーキテクチャに合わせてマシンコードへ変換してくれるため、高級言語でのプログラムは、アーキテクチャを意識してプログラミングする必要がなくなりました。(それでも、アーキテクチャを意識した方が、より良いプログラムになることに変わりはありません。)
この記事のまとめ
アセンブリ言語よりもさらに自然言語に近い形で書けるプログラミング言語を、高級プログラミング言語と言います。逆に、マシンコードやアセンブリ言語のことを低級プログラミング言語と言います。
高級プログラミング言語で書かれたプログラムを、低級プログラミング言語のプログラムに変換(翻訳)する処理をコンパイルと言い、コンパイル専用のプログラムをコンパイラと言います。
以上で、絵でわかる プログラムとは何か(2)~翻訳と管理のプログラム~ は終わりです。
次は、絵でわかる プログラムとは何か(3)~進化したプログラミング言語の翻訳処理~ へ進みましょう。
コンピューターのしくみ全体を理解したい場合は、以下の2コースがお勧めです。
日本全国 オンラインレッスン にも対応しています。
知りたいことだけ単発で聞きたい場合は、 オンラインサポート をご利用ください。