■Z80や8086……って何?

なになに「Z80や8086ってCPUのことでは……」だって? なんだ、ちゃんとわかっているんじゃないの……と思ったけど、要はCPUの存在自体は理解していても、その本当の機能や役割がわかっていないんだよネ。

コンピュータがこうまで広く浅く浸透した現代では、それも仕方のないことかもしれない。というのは、CPU名やクロック数は「コンピュータの主要性能の一端を表す代名詞」のように扱われているのが現状だからだ。車でいうなら、カタログで見た最大スピードでエンジンを理解した気分になってしまうのに似ている。つまり、車内からエンジンを始動して運転することはできても、実際にどのようにエンジンが動作しているのかまでは知らないようなものだ。

とはいえ、コンピュータがプログラムによって動いているということは、ほとんどの人が知っている。さらに、プログラムとは具体的にどういったものか……ということも、意外にも「英数字や記号がズラズラと並んだもの」という程度のことは漠然と知られている。しかし、こうした目に見えるプログラムが「コンピュータのエンジン部に相当するCPU」を直接動かしているわけではないのだ。

なぜなら、古今東西「CPUが理解できるのは1と0の組み合わせで作られた数値による命令」だけだからだ。すなわち、英数字や記号などで作成された見かけ上のプログラムは、すべてこの「数値によるCPUが理解できる言語」に変換されているのである。そして、この「CPUが理解できる数値言語」のことをマシン語という。

ところが、数値言語であるマシン語は人間にとって非常にわかりにくい。そこで、数値に相当する英文字を用意し、それをマシン語に変換するようになった。これがアセンブリ言語である。もちろん、人間の言語と同じようにアセンブリ言語もCPUによって異なっている。すなわち、Z80用、8086用……というように、アセンブリ言語にも種類がある……ということ。ただし、CPUを直接コントロールする言語だから、命令としてはシンプルなものしか用意されていない。そのため、画面に文字を表示するだけでも複数の命令を組み合わせなければならないなど、すべてにおいて手続きが面倒なのである。

そこで、こうしたCPUによる命令や手続きの違いを省き、より人間にわかりやすい言語にしたのがBASICやC……といった、いわゆる高級言語と呼ばれるものである。もちろん、これらも最終的にはマシン語に変換(←コンパイルという)されるのだが、この変換作業はコンピュータがやってくれるようになっている。だから、マシン語の存在はますます知られにくくなっているのだ。一方で、そういうコンピュータ操作の原点を勉強するために、あえてシンプルなZ80や8086に触れようという人もいる。新日本プログラミングがアッサリと過去を見捨てないのも、そういう少数派にエールを送っているから……なのである。