コンピュータ学習/プログラミング言語の種類<元SE独白記>
<元SE独白記> 2016/06/08
「コンピュータ、ソフトがなければただの箱」と、よくいわれます。それだけソフトウエァというのは大切なものだということですね。さて、そのシステムを構築したりその中で動くプログラムを造っていくうえで、必要なことが二つあります。ひとつは開発環境、もう一つはプログラミング言語です。開発環境とは言い換えればコンピュータメーカーの考えに依存する部分、つまり富士通のOS(オペレーティングシステム)、日立のOS、といった感じのものです。プログラミング言語とはソフトウエア部分ですね。最近では「フレームワーク」という、ハードウェに依存しないソフトウエア開発という考えがありますが、僕の現役時代は共通化の考えが浸透していなかった時代でした。でもわざわざ「フレームワーク」などといわなくても、例えばWindows OSはだいたいどこのメーカーでも同じように動きますから、ことさら「フレームワーク」などと意識しなくてもいいのではないでしょうか?
あともうひとつ、ついでに言っておくと、「ファームウエア」というハードウエとソフトウエアの中間みたいなものがあります。これは電子機器に組み込んで、ハードウェアを制御するためのソフトウェアのことで、ソフトウェアをROM等のLSIなどに書き込んだ状態で、機器に組み込んだもの。ゲーム機やロボットなんかも一種のファームウエアでしょうね。
*ROM:Read Only Memory=読み込み専用のメモリー、書き込めません。
*LSI:Large-Scale Integration=大規模集積回路
今日はプログラミング言語にスポットを当てて説明していきます。その種類たるや色々と書き出していくと、結構な数になりますので、今まで僕が現場で経験した言語にのみ限定して説明していきます。順番は時系列です。
アセンブリー言語(機械語とも):これはコンピュータが読み取れる「0」と「1」の並びより一歩人間側に近づいた言語です。僕はワンボードマイコンでこの機械語を打ち込んで練習していました。CPUとしては次のものが有名です。
Zilog Z80 これはZilog社のCPUの名前ですが、「ザイログ ゼットはちまる」あるいは「ザイログ ジーエイティー」と呼びます。そしてこのZ80に固有の命令セットが用意されています。これは以前(今もかな?)ロシアのスカッドミサイルに採用されていたそうで、機械の制御に適している言語です。このスカッドミサイルはいまは北朝鮮も採用しているようですが、誤差が大きいそうです!また軍事分野以外でも工場のロボットなんかはこの「Z80」で書かれていると思います。ではZ80の命令セットとはどんなものかというと、たとえば「LD A,(BC)」と書くとBCレジスターの内容をAレジスターにコピーしろ!という命令文になります。
またZ80の特徴としては可能な算術演算は加算と減算のみです。CPUの機能には乗算や除算の演算はないのです。そこを何とかしていくのがプログラマーの仕事というところですね。例えば2倍するには、シフト命令というのがあるのですがそれを使います。具体的には次のようになります。
00000010=2を表わします。それを1ビット左にシフト(ずらす)します。すると、
00000100=4となります。
これは2進数の数字の表わし方を勉強してからのほうがいいですね。
8ビット(つまり1バイトです)の並びで説明します。
1桁目=00000001(一番右)=数字の1
2桁目=00000010=数字の2
3桁目=00000100=数字の4
4桁目=00001000=数字の8
5桁目=00010000=数字の16
6桁目=00100000=数字の32
7桁目=01000000=数字の64
8桁目=10000000=数字の128
となりますから、8ビットがすべて1だった場合は11111111となり、数字の値は255になります。1+2+4+8+16+32+64+128=255となります。2を4倍するには左に2回ずらせばよろしい。またこのようにZ80は8ビットCPUなので、基本的なデータの単位は8ビットがよく使われます。一回の演算処理の大きさというか幅のことをバンダリーとかいういいかたもします。今で言う32ビットマシーンとか64ビットマシーンとかいうアレです。Z80は8ビットマシーンですね。
このアセンブリー言語は機械語といわれているだけあって、後々出てくるCOBOL、FORTRAN、C言語などと比べるとより原始的な言語といえるでしょう。しかし高級言語であっても最終的には「0」と「1」に翻訳されて、コンピュータの中ではこういう処理が行われているのです。
KOSEI