プログラムの基礎知識


あれ、今回はプログラミングっぽくないね。
今までは文法だったけど、今回はプログラムの仕組についてが主ね。
これは、何かの伏線・・・・かな?
多分、次の章の伏線でしょうね。
じゃあ、行き詰ったらまた来るね。
こら、読み飛ばさない!


今回はC言語の文法などとは少し離れ、プログラムの仕組みについてやります。
少々、ハードウェアの知識が要りますが、基本的なことだけ知っていれば十分です。

さて、少々唐突な話題ですが、コンパイルをして生産された実行ファイル。
これが実行される時、コンピュータは内部でどのような動きをしているのでしょうか。
ここでキーワードとなるのが「ハードディスク」「メモリ」「CPU」です。

ハードディスクはコンピュータの記憶装置です。
全てのデータはここに保存されますが、読み書きの速度は遅いです。
ここにプログラムを保存していないと実行することは出来ません。
(フロッピーやCD-ROMに保存されていても実行できるが....)

メモリはコンピュータの「一時的な」記憶装置です。
ハードディスクより高速な読み書きが出来ますが、電源を切ると内容は消えてしまいます。
プログラムをしようと実行するとこのメモリにいったんプログラムの内容が写されます(ロード)

CPUはメモリやハードディスクなどの他の機器を制御したり、計算をしたりします。
プログラム実行時にはメモリから命令を取り出し、それを元に計算を行ったり、
他の機器に命令を出します(ディスプレイに計算結果を表示するなど)

上の三つの説明で解るように、プログラムは、
ハードディスク→メモリ→CPU
という風に移動していきます。
では、そのプログラム自体はどのようになっているのでしょうか。

プログラムの中身は「命令」と「データ」から出来ています。
命令はC言語で言えば「関数の呼び出し」「変数を使った演算」などにあたります。
データというのはC言語で言えば「変数」にあたります。
いってしまえば「命令」と「データ」は「関数」と「変数」ですね。

+---プログラム---+
|命令1           |
|命令2    +----+ |
|命令3    |命令| |
|...      +----+ |
|命令n           |
|                |
|データ1         |
|データ2 +------+|
|データ3 |データ||
|...     +------+|
|データn         |
+----------------+