コンピュータの100年と、インターネットへの相転移 その4
社団法人日本印刷技術協会 副会長 和久井 孝太郎
1964年には,IBM社の覇権を確かなものとする第3世代のコンピュータと銘打った,システム/360の6機種を発表した。システム/360は時代の先端を行く設計で,ハイブリッド(hybrid:混成)LSIを使用して小型化と信頼度向上を図り,OS(基本ソフト)と呼ばれるコンピュータ運用方式に革新をもたらす新概念を導入した。これによって,人間とコンピュータとのインタフェース(interface:境界)機能向上のために,対話型の入出力を可能とするグラフィック端末が自由に使えるようになり,コンピュータと通信回線を結んで使用するための通信機能も格段に向上した。
コンピュータは始め,数の計算・数値解析をするために作られた数学機械であった。しかし,チューリングが予言したように,コンピュータの最も強力な効果は,意味をともなう「記号」を操作する「言語機械」であって,単なる数学機械を超えるものであることが「UNIVAC-1」から「IBMシステム/360」 へと発展する過程ではっきりしてきた。
コンピュータとは,命令文をデジタル符号(電子的な記号表現)で与えられると,コンピュータ・ハード内部のいろいろなスイッチ(switch:電流を流したり[on],電流を切ったり[off] する機能)状態が変化(反応)して,その記号内容を解釈,命令を実行する『電子のからくり』である。コンピューターは記号,すなわち言葉(言語)に反応する数学機械であり言語機械なのである。
'コンピュータ,ソフトがなければ只の箱'と言われるように,ハードとソフトはコンピュータの車の両輪である。だが,具体的なコンピュータにはハードとソフトの中間領域がある。すでに述べたように,命令である記号を操作するコンピューターの頭脳部分は,CPU(中央処理装置)である。そして,コンピュータが自分の言語コンピュータ言語を持つのは,この部分に組み込まれている制御装置と呼ばれる「からくり」にある。
この重要な「からくり」は,微小な相互に関連して働く極めて多数の電子スイッチと,それらを結ぶ配線(順序制御回路),および,演算装置や主記憶装置などのスイッチ類を操作する仕組み(ゲート制御回路)の二つの機能が合成されたものである。現在では,LSI化された論理回路の固まりなので,そのような'一つのデジタル回路の箱'を想像するだけで良い。なお,一つだけ説明をつけ加えると,ハードの構造だけで言語機能が決まるコンピュータ方式をハード制御方式と呼ぶ。
当初,コンピュータはソフト的には,人間が作成した機械語の命令文と処理すべきデジタル・データ(以上,情報)を,パンチカード(punch card)や穿孔紙テープなどの入力装置から読み込むと,必要なものは主記憶装置に覚え込み,CPUで記号内容を解釈し,作業を実行するするハード制御方式であった。
先のチューリング・マシンの動作説明からも予想できるように,コンピュータの機械語は0と1が組み合わされた数字列であり,人間が実際に長文の命令を正しくプログラミングするのは大変厄介なことであった。
機械語(machine language)は,最も基本的なプログラミング言語(プログラム言語とも呼ぶ)であるが,最も原始的な言語の形態である。その後,人間にも分かりやすい形でプログラムが書けるように,種々の開発が進められた。その結果,使用目的に応じいろいろなプログラミング言語が実用化されることになったが,大きく分けると,機械語に近いが人間にもやや理解しやすいアセンブラ言語(assembler language:アセンブリ言語,記号言語,シンボリック言語とも言うことがある) ,効率の多少の低下は覚悟の上で,使いやすさを追求した高水準言語(high-level language:高級言語とも呼ぶ)に分類される。高水準に対して,前者を低水準言語と呼ぶこともある。
一方,マイクロプログラム(microprogram)と呼ばれる概念がある。一つの機械語の命令は,命令の読み出し,命令の復号(decode),アドレスの計算,データの読み出しなど,より細かい基本的な動作(マイクロ命令)によって構成される。コンピュータがこのような命令を解読し,各部を制御する一連の基本的な操作の手順を示したものが,マイクロプログラムである。
実際にマイクロプログラムを内蔵した順序・制御回路を構成してCPUを制御し,命令を実行するコンピュータ方式がソフト制御方式である。そして,マイクロ命令によってプログラムミングすることを,マイクロプログラムミングと呼ぶ。
マイクロプログラミングの原理は,1951年に英国ケンブリッジ大学のウイルクスによって提案されたが,電子回路技術が未熟で実用化されなかった。しかしその後,機能素子が真空管(真空電子素子)からトランジスタ(個別半導体電子素子),そしてIC(Integrated Circuit:半導体集積回路)へと進展する中で実現が可能となり,先にハードについて説明したIBM社のシステム/360シリーズで,初めて本格的なマイクロプログラミング方式が実用化された。
なお,ある問題を解決するために,明確に定義された規則と手順の集まりのことを,アルゴリズム(algorithm:算法)と言う。実際のプログラミング作業におけるアルゴリズムの役割は,課題をプログラミング言語に移し換える前に,机上で作成するプログラムであると言うこともできる。
機械語やアセンブラ語などの低水準言語が,コンピュータ・ハード依存型であるに対して,高水準言語は,作成したプログラムがコンピュータの機種に関係なく使うことが可能な,汎用プログラミング言語である。汎用プログラミング言語は,問題処理を効率よく扱えるように工夫された言語であるが,扱う問題によって手順向き言語と非手順向き言語とがある。
高水準のプログラミング言語が開発されるようになった最大のねらいは,プログラマーのプログラミング能力を向上させて,プログラミングに要する時間を短縮すること,誤りの発見と修正作業(debugging:デバッキング,バグ取り,虫取りなどとも言う)に要する時間と費用を低減させることであった。
プログラミング言語は,コンピュータの世代と共に進歩してきた。荒っぽく言えば,第1世代の機械言語,第2世代のアセンブラ言語,そして,第3世代でFORTRAN, COBOL, PL/1などの高水準言語が開発された。
なお,コンピュータの世代とは,例えば,第1世代は先にハードの進歩で述べた,1950年代始めのUNVAC-1 やIBM650などで,機能素子は真空管,記憶素子は高速用は真空管によるフリップ・フロップ論理回路列/大容量は磁気ドラム,情報処理速度を表す単位はミリセカンド(1/1000秒),そしてプログラミング言語体系は機械語方式であった。
以下,同様の表現方法と順序で,第2世代は57年以降で,レミントン社がUNIVAC「Solid-State 80」を発表,IBM社は翌年7070,7090を発表した。トランジスタ(3端子半導体素子)とダイオード(2端子半導体素子),記憶素子はトランジスタ論理回路列/磁心記憶方式(コアメモリ),マイクロセカンド(1/1000000秒),アセンブラ方式である。そして,第3世代が先にコンピュータ・ハードの進歩で述べた,IBM社が64年に発表したシステム/360 で,IC,コアメモリ,ナノセカンド(1/1000000000秒),コンパイラ方式である。その後,IBM社が70年に発表したシステム/370は第3.5世代と呼ばれ,記憶素子もIC化されるようになって,主記憶装置や補助記憶装置が強化されコンピュータのデータベース指向が強まったとされている。言語体系はコンパイラ方式である。
2000/05/05 00:00:00