パソコンおもしろ講座
4)言語とOSという謎のソフト
◆「言語」という謎のプログラム
「言語」というとずいぶん難しい話だなあ、と敬遠される方が多いかもしれません。でも、これはこれで面白い話がいっぱいあります。今回は「言語とOS」の話題でおつきあいください。
ところで「プログラミング言語」がなにをするものなのか、ご存知でしょうか?
……もちろん、プログラム・ソフトを作るものですね。
プログラム・ソフトとはコンピュータに対し「あの数字とこの数字を合計しろ」「この文字とこの文字を出して文章を作れ」と命令し、仕事をさせるものです。でも、コンピュータが読めるのはマシン語(1と0の数字を組み合わせたデータ)だけです。これを「ネイティブ・コード」とも呼びます。
これに対しプログラミング言語が作るコードはソース・コードと呼ばれます。ソース・コードはコンピュータの中でマシン語に翻訳されます。この翻訳作業のことをコンパイルと呼びます。
|
ソース・コード |
>コンパイル> |
ネイティブ・コード |
|
if{a>b}break,into{b<c} sum=0 do 20 1=1,n continue write(5,100)n…… |
00101000 10011001 11001001 0011100100101000 10011001 11001001 00111001…… |
最初に作られたプログラミング言語は「 アセンブリ言語 」(1954)と言い、マシン語と一対一の対応をするものでした。それゆえに効率が悪く、一般人向きではなかったので、もっと「高級な言語」(人間の言葉に近い使いやすい言語)の開発が求められました。それから様々なプログラミング言語が開発されました。
|
言語名 |
開発年代 |
仕様と作者 |
| Fortran | 1957 | 科学技術計算用言語(IBM/ジョン・バッカス他) |
| Cobol | 1959 | 事務計算用言語(米国防省を中心とした言語開発委員会) |
| Algol | 1960頃 | ヨーロッパ学者グループが開発した汎用言語 |
| LISP | 1960頃 | 記号処理用の特殊言語(マサチューセッツ工科大/ジョン・マッカーシー他) |
| PL/1 | 1965頃 | 総合言語として作られたが広まらず(IBM) |
| Basic | 1965 | Fortranを簡易化した入門者用言語(ダートーマス大学/ジョン・ケメニー他) |
| Pascal | 1968 | 教育用言語(チューリヒ工科大/ニコラス・ワース) |
| Turbo Pascal | 1971 | Pascalを多機能にしたもの(Borland社) |
| C | 1972 | 非常に効率のいいプログラム言語(AT&T社/デニス・リッチー) |
| C++ | 1980代 | C言語にオブジェクト指向を取り入れたもの |
注: オブジェクト指向 ……プログラムコードとそれに付随するデータをひとまとまりの単位として管理し、プログラムの論理的な構造化を図るプログラミング技法の1つ。
パソコンが広まる前のオフィス・コンピュータ時代には、FortranとCobolがプログラマ必須の言語でした。しかしC言語が使われ始めると、たちまちこの二つは時代遅れにされてしまいました。時代の変化に取り残されたコボル・プログラマの悲劇が無数にあったようです。
(現在は『過去の資産を生かす』ということでコボル復権が取り沙汰されています)
言語は高等で複雑になるほどコンパイルに時間がかかり、遅くなるという宿命をもっています。速度だけを考えればアセンブリ言語が最も早いわけですが、C言語はそこがうまく調整されていて、素朴で早い部分と複雑な部分のバランスがとれていると言われています。
![]()
◆「OS」という謎のプログラム
OS(Operating System)とはなにか、と聞かれてどう答えるかは面倒です。一言でいうと「ソフトとハードをまとめて管理する便利屋(マネージャ?)」でしょうか。
パソコンの歴史は、一方ではOSの歴史だということも出来ます。
パソコンの初期の言語と言えばMS-Basicです。そしてパソコン用OSと言えばMS-DOSです。この二つがMicrosoft社のビル・ゲイツを億万長者にした大もとです。
しかし、MS-Basicはオフィス・コンピュータ用Basicをパソコンへ移植したものです。
さらにMS-DOSはというと、はっきり「盗作だ」と言う人もいるくらいです。
故ゲイリー・キルドール氏
8ビットパソコン時代のOSはゲイリー・キルドール(デジタル・リサーチ社)のCP/Mが主流でした。それを16ビットにしたのがCP/M86です。IBMはパソコン用OSにキルドールのCP/M86を使いたいと申し出たのですが、交渉は不具合に終わりました。(この経過については諸説あります)そこで焦ったIBMは、マイクロソフト社に16ビットOSの開発を依頼するのです。
しかし時間も能力もなかったマイクロソフトは、CP/M86のコピーだった「86DOS」を会社ごと買い取り、それを自分たちの会社の製品(MS-DOS)としてIBMに提供したのです。 著作権という概念がまだ確立されていない時代とはいえ、よくこんなことがまかり通ったものです。(その後、IBMとデジタル・リサーチ社は和解しています)
左:CP-Mのパッケージ 右:CP-Mのマニュアル
マイクロソフトの根源をなす二つのソフトがオリジナルでないために、パソコンマニアの間では「ビル・ゲイツはプログラマではなくてただの商売人だ」と言われてきました。Windowsはその汚名を晴らすためのOSでしたが、それもまた「マックOSのパクリだ」と言われました。
こうした批難がどこまで真実かは微妙です。ただ、実際にはマッキントッシュの開発にマイクロソフトも関与しており、マックOSとウィンドウズはルーツが同じなのです。その元になったのは先輩の開発者、ダグラス・エンゲルバートの"NLS"と、アラン・ケイの"Alto"です。
Alto1973年ゼロックス社パロアルト研究所で
開発されたワークステーション。
すでにマウスによる操作やマルチ・タスク
を実現していた。
ウィンドウズを駆逐するだけの力をもったOSが他に出現しなかったのも事実です。IBMのOS/2はかなりがんばったものの開発中止になりました。
しかしもとになった部分は共同開発者だったMicrosoftのWindowsNTの一部に変わり、現在のXPに引き継がれています。(なお、WindowsNTの原型はDEC社のミニコン用OS「OpenVMS」です)
IBMと仲たがいしたばかりに世界制覇を逃した天才プログラマ、ゲイリー・キルドールもすでに故人です。
一方、現在最も隆盛を見せるC言語は、オフィス・コンピュータのOS、UNIXと切っても切れない関係にあります。
1963年、マサチューセッツ工科大学がマルチ・ユーザー、マルチ・タスクの新しいOS開発を始めました。それはGE(General Electric)社やAT&T社を巻き込んで「MULTICSシステム開発計画」へと進みました。
70年頃のパロアルト研究所
しかしこの壮大な企画は、当時の貧弱なハード環境のために中途で挫折してしまいます。
この計画から撤退したAT&T社ベル研究所に、ケン・トンプソンという研究員がいました。彼はMULTICS用に開発された「スペース・トラベル」というゲームをやりたいために簡単なOSを作りました。そしてそれにMULTICSをもじってUNIXという名前をつけました。(MULTI=多機能に対し、UNI=単機能というわけです)
それを見た同僚のデニス・リッチーが「これが出来るとすごいOSになるぞ」と言って熟成を手伝い、ついでAlgolを改良した高級言語「C言語」を作り、それでソース・データ(元になるデータ)を書き直したのです。

左:ケン・トンプソン氏 右:デニス・リッチー氏
PDP7 ケン・トンプソンが「スペース・トラベル」で遊ぶためにこれでUNIXを作ったという「ベル研究所の片隅に眠っていた」DEC社のミニコン
UNIXは作られた当初はベル研究所の中で使われ、その優秀性が認められると、各地の研究者(特に大学関係者が多かった)から注目が集まりました。しかし当時の反トラスト法によってAT&T社は通信分野以外の分野でのビジネスが禁じられていました。そこでAT&T社はUNIXの「サポートなしでの無償配布」を決めたのです。ここからオフィス・コンピュータ用のOSでUNIXが主流を占める流れが始まりました。
UNIXは後に巨額の使用料金を取るようになりますが、この最初の無償配布が理想化されて「全てのソフトは無償であるべきだ」という理念の運動(フリー・ソフトウェア・ファンデーション)が発生することになりました。この運動の中からFreeBSDやLINUXが生まれました。
現在のUNIXは完全に無償ではないものの、次第にオープン・ソース化(ソースコードを含めて公開し、使用・改良・開発を自由にすること)しています。余談ですがトロンやBeOSも無償です。
一方、MS-DOSはシンプルだったCP/M86の機能にUNIXの諸機能を取り入れて「使えるOS」に成長したという経過があります。
![]()
*現在、IBM互換機で動くOSは以下の通りです
| DOS | MS-DOS、PC-DOS、Free-DOSなど |
| Windows | 1,0から3,1までの初期ウィンドウズ |
| Windows9X系 | Windows95、98、ME |
| WindowsNT系 | WindowsNT、2000、XP、Vista |
| OS/2 | IBMの傑作32ビットOS |
| UNIX系 | ソラリス、FreeBSD、LINUXなど |
| BeOS | フリーのマルチメディア指向OS |
| BTRON | 国産の悲劇のOS 製品名は「超漢字」 |
| *エミュレータを使えばMacOS(OSXからUNIX系になった)も動きます | |
*また、プログラミング言語としてはC、C++以外に以下の言語などが使われています。
| Visual C# | C言語をGUIで動かすもの |
| Visual Basic | BasicをGUIで動かすもの |
| Java | C言語を簡易化した、ネットワーク向け言語(スイス) |
| Pearl | フリーの入門者用言語(ラリー・ウォール作) |
| Ruby | Pearlを手本にしたオブジェクト指向のフリー言語(まつもとひろゆき作) |
| Delphi | Turbo Pascalの発展形(Borland社) |
| Java Server Pages (JSP) | Javaの発展形 |
| Hot Soup Processor(HSP) | Basicを基礎にしたホビー系の言語(おにたま作・オニオンソフト) |
| Squeak | Smalltalkをベースにしたマルチプラットフォーム言語(アラン・ケイほか) |
マイクロソフト製の「C++」 Windowsもこれで作られているかも? ![]()
*番外
日本語を使ってプログラムを作る「日本語プログラミング言語」も古くから開発されています 下の4つはフリーソフトの力作です。しかしどれもまだ発展途上で本当に楽チンな日本語環境というわけにはいかないようです。プログラミング言語をさわってみたいけど英語は苦手だ、とお考えの方はリンク先からご入手ください
| Mind (スクリプツ・ラボ/DOS版のみフリー) | http://www.scripts-lab.co.jp/ |
| ひまわり・なでしこ(クジラ飛行机作) | http://nadesi.com/ |
| TTS・TTSneo(ゆうと作) | http://tts.s28.xrea.com/ |
| ことだま on Squeak(慶応大学大岩研究室作) | http://www.crew.sfc.keio.ac.jp/index.html |
◆OSの行方・ウィンドウズ対ユニックス
これまで大型コンピュータとパソコンの間には厳然とした壁がありました。しかし、パソコンが高性能化するに従って、大型コンピュータの代わりにパソコンを使って業務をこなそうとする動き(第二次ダウンサイジング)が広まりました。
注:二度のダウンサイジング
◆第一次ダウンサイジング
1960年代後半、汎用コンピュータ(メインフレーム)がハードウェアだけでも数千万円、そのうえ専用OS(IBMならMVS)が毎月の使用料数百万円、と高価だったので、経費節減のためにDEC社が開発したミニコン(ミニコンピュータ)などに鞍替えしようとする動き。
◆第二次ダウンサイジング
1980年代、電子機器の発展成長にともないメインフレームやミニコンに代わってサン・マイクロシステムズが開発した「SUN」を始めとするワークステーションや、高性能化したパソコンで業務を行おうとする動き。
これに、1993年、マイクロソフトが開発したウィンドウズNTというサーバソフトが拍車をかけました。それまで安閑としていた大型コンピュータ陣営は危機感を感じ、大同団結し始めました。
大型コンピュータに使われているOSは主にUNIXですが、各社で仕様はバラバラでした。これ以後、ユニックス陣営は互換性のあるOSを開発しています。
(サンソフト=ソラリス、ノベル社=ユニックスウェアー、ネクスト社=ネクストステップなど)
これらのOSはフリーソース化する傾向にあり、ブラックボックスであるウィンドウズに圧力をかける効果を果たしています。
注目すべきはマイクロソフトの市場独占に反発する技術者たちが、パソコン用のソフトをフリーのUNIX(FreeBSD、LINUXなど)に向けて開発していることです。パソコンにウィンドウズではなくLINUXを導入してサーバとして使用する会社もたくさんあります。
さらにすでに述べたように、他にもユニークなフリーOSや言語が開発されており、これを使ったフリーのオフィスソフトや各種コンシューマ向けソフトが続々と作られています。これからパソコンの中身がどう変遷するか、まだまだ予断を許しません。
Windowsが市場を独占し、せいぜいMacintoshだけがついていく、という形はあまり好ましいものではありません。新しいハードウェアが生まれたときには新しいソフトウェアも生まれてほしいものです。そして市場を活発化させ、競い合っていいものを作り出してほしいですね。
インテル対AMD CPU開発競争 へすすむ
![]()