プログラミングに取り組むとき、「このプログラムを解釈して実行するプログラムは…?」などと思ったことはないでしょうか。それは実に真っ当な疑問であり、実際にコンピューターがプログラムを実行するときは、内部で様々な処理が行われます。
今回は、コンピューターに搭載されているCPUやメモリの仕組みや、それが実際にはどのようにプログラムを実行しているのかを見ていきます。
このページでは、
- CPUとメモリの簡単な仕組み
- CPUが実行するプログラム(アセンブリ言語)
- プログラムの実行方法(コンパイラ方式、インタプリタ方式、中間言語方式)
を解説しています。
コンピューター内部の仕組み

コンピューターの内部には、CPU(中央処理装置;Central Processing Unit)と主記憶装置(メインメモリ)が搭載されています。さらにCPUの内部には、計算処理を担う演算装置と、メインメモリへのデータの読み書きを担う制御装置があります。演算装置の中にはレジスタがあり、演算のためのデータを一時的に保管しています。
CPUはメインメモリに保存されているプログラムを読み取り、データを読み書きしてプログラムを実行していきます。
主記憶装置とは、演算を助けるいわゆる“メモリ”のことで、一般的な(家庭用の)パソコンには8GBや16GB程度搭載されています。数百GB~数TBのハードディスクやSSDは、補助記憶装置と呼ばれます。
CPUが実行するプログラムとは?
CPUは、2進数の機械語で表現されたプログラムに従って演算を実行します。そうしたプログラムをバイナリプログラムといいます。ただ、当然のことながら2進数のプログラムを人間が読み書きするのは無理があります。よって機械語を人間が読める言葉に置き換えたものが作られました。これがアセンブリ言語です。
アセンブリ言語には例えば以下のようなコードがあります。
mov x,yこれは、x(レジスタ)に y(値)を代入せよという意味です。ここで、命令の種類を表す「mov」のような部分を一般にオペコード(オペレーションコード)、「x」「y」のような部分(引数)のことをオペランドと言います。また、このようなアセンブリ言語における命令文一つ一つのことをニーモニックといいます。
人間がアセンブリ言語を使って書いたプログラムは、機械語に置き換えられてCPUが実行します。アセンブリ言語を機械語に置き換えるプログラムをアセンブラといいます。

アセンブリ言語・機械語を用いたプログラムは複雑で、CPUやメモリの性質に即したものを作成しなければなりません。そこで、人間がより直感的にプログラムを書ける「高水準言語」の登場です。
高水準言語によるプログラム
記述の抽象度が高く、人間が理解しやすいプログラミング言語のことを、高水準言語といいます。例としてC言語やPythonなどが挙げられます。
人間が理解しやすいということは、コンピューターは(直ちには)理解できないということです。そのため、高水準言語によって書かれたプログラムを実行する際には様々な処理が行われます。処理の方法によって、高水準言語は以下のように分類できます。
コンパイラ方式

C言語などのプログラミング言語では、実行時にコンパイラと呼ばれるプログラムが全て機械語に翻訳し、それをコンピューターが実行します。このとき元のプログラムをソースプログラム、翻訳後のプログラムをオブジェクトプログラムといいます。
実行速度が速いというメリットがありますが、プログラムの実行にコンパイルするという手間がかかります。
また、以下のようにアセンブリ言語を用いたプログラムを介する場合もあります。

インタプリタ方式

Pythonなどでは、インタプリタがプログラムを1行ずつ解釈しながら実行します。
コンパイラを用いず随時、解釈・実行されるので、プログラムを手軽に変更できるなどのメリットがありますが、コンパイラ方式より実行速度は遅くなります。
中間言語方式

Javaなどでは、コンパイラがプログラムを機械語に近い中間言語に変換し、それを仮想機械が実行します。
仮想機械を用意すればOSなどに依存せずどんな環境でも同じように動作するというメリットがあります。
また、以下のように機械語を用いたプログラムを介する場合もあります。

3行まとめ
このページではコンピューターの内部処理について解説しました。まとめると以下の通りです。
- CPUは2進数のバイナリプログラムを実行するが、それを人間に読みやすいように置き換えたものをアセンブリ言語という。
- 高水準言語には、コンパイラにより機械語に変換する方式とインタプリタで直接実行する方式がある。
- 両者の中間にあたり、中間言語を用いて仮想機械が実行する方式もある。
皆様の参考になれば幸いです。
当サイトでは教養としての情報科学を体系的に紹介しています。以下から当サイトの記事一覧をご覧いただけます。

