見出し画像

⌨️コボルの母列伝

[グレース・ホッパーは)直接の委員であるスタッフに一般的な指導をした以外には、その作業に参加しなかった。したがって、彼女の間接的な影響力は非常に重要であったが、残念なことに、「グレース・ホッパーがCobolを開発した」とか「グレース・ホッパーはCobolのコード開発者であった」とか「グレース・ホッパーはCobolの母である」というようなことが頻繁に繰り返されているが、これは正しくない。

https://en.wikipedia.org/wiki/COBOL#:~:text=COBOL%20(%2F%CB%88ko%CA%8Ab,2002%2C%20object%2Doriented%20language.

1950年代後半、コンピューターのユーザーとメーカーは、プログラミングにかかるコストの上昇を懸念していた。1959年の調査では、あらゆるデータ処理設備において、プログラミングには平均80万米ドルがかかり、新しいハードウェアで動作するようにプログラムを翻訳するには60万米ドルがかかることが判明していた。新しいプログラミング言語が急増していた当時、同じ調査では、一般的なビジネス指向の言語が使用されれば、変換ははるかに安価で迅速なものになると示唆されていた[16]。

1959年4月8日、バロウズ社のコンピュータ科学者であったメアリー・K・ホーズは、ペンシルバニア大学において、学界、コンピュータ・ユーザー、製造業者の代表者を招集し、共通のビジネス言語に関する正式な会議を開催した[17]。

4月の会合で、グループは国防総省(DoD)に対し、共通のビジネス言語を作成する取り組みの後援を要請した。この代表団は、国防総省のデータシステムリサーチスタッフのディレクターであるチャールズ・A・フィリップスに感銘を与え[20]、彼は彼らが国防総省の問題を「徹底的に理解している」と考えた。国防総省は225台のコンピュータを運用しており、さらに175台のコンピュータを発注中で、その上で動作するプログラムの実装に2億ドル以上を費やしていた。ポータブルプログラムは、時間を節約し、コストを削減し、近代化を容易にするだろう[21]。

チャールズ・フィリップスは会議のスポンサーになることに同意し、代表団に議題を起草するよう命じた。

1959年5月28日と29日(チューリッヒのALGOL 58会議からちょうど1年後)、国防総省でビジネス用の共通プログラミング言語の作成について話し合う会議が開かれた。国防総省は、同じデータ処理プログラムを異なるコンピュータで実行できるかどうかを懸念していた。当時唯一の主流言語であったFORTRANには、そのようなプログラムを書くために必要な機能が欠けていた[24]。

代表者たちは、銀行や保険から公共事業や在庫管理に至るまで、さまざまな環境で機能する言語について熱心に説明した。彼らは、より多くの人々がプログラミングを行えるようにすべきであり、新しい言語は現代の技術の限界によって制限されるべきではないという点で一致していた。その言語は、英語を最大限に活用し、変更が可能で、機械に依存せず、パワーを犠牲にしても使いやすいものであるべきだということに、大多数が同意した[25]。

会議の結果、運営委員会、短期、中期、長期の委員会が設立された。短距離委員会には、9月(3ヶ月)までに暫定的な言語の仕様を作成し、その後、他の委員会によって改良されることが与えられた[26][27]。しかし、彼らの公式な使命は、既存のプログラミング言語の長所と短所を特定することであり、新しい言語を作成することを明確に指示するものではなかった[24]。

メンバーの一人であるベティ・ホルバートンは、3ヶ月という期限を「大いなる楽観主義」と評し、その言語が本当に一時しのぎになるのか疑っていた[29]。

運営委員会は6月4日に会合を開き、活動全体をデータシステム言語委員会(Committee on Data Systems Languages、CODASYL)と命名し、実行委員会を設置することに合意した[30]。

短距離委員会のメンバーは6つのコンピュータメーカーと3つの政府機関を代表していた。コンピュータメーカーは、バロウズ・コーポレーション、IBM、ミネアポリス・ハネウェル(ハネウェル研究所)、RCA、スペリーランド、シルバニア・エレクトリック・プロダクツであった。政府機関は米空軍、海軍のデビッド・テイラー・モデル・ベイスン、米国立標準局(現在の米国立標準技術研究所)であった[31]。委員長は米国立標準局のジョセフ・ウェグスタインが務めた。作業は、データの記述、ステートメント、既存のアプリケーション、ユーザーの経験を調査することから始まった[32]。

委員会は主にFLOW-MATIC、AIMACO、COMTRANプログラミング言語を調査した[24][33]。FLOW-MATIC言語は実装済みであり、AIMACOはわずかな変更のみで派生したものであったため、特に影響力があった[34][35]。

ホッパー

ホッパーは「COBOLの母」または「COBOLの祖母」と呼ばれることもあるが[37][38][39]、COBOLのリード・デザイナーであったジャン・サンメットは、ホッパーは「COBOLの母でも生みの親でも開発者でもない」と述べている[40][1]。

IBMのCOMTRAN言語は、ボブ・ベマーによって発明され、グレース・ホッパーの同僚で構成された短期委員会によってFLOW-MATIC[41][42]の競合とみなされていた[43]。その機能のいくつかは、IBMが設計プロセスを支配していたように見えないようにするためにCOBOLに組み込まれなかった[26]。 [44]あるケースでは、COMTRANマニュアルの著者であり中距離委員会のメンバーであったロイ・ゴールドフィンガーが、自身の言語を支持し代数式の使用を奨励するために小委員会の会合に出席した後、グレース・ホッパーは、英語に基づいた言語を作成するスペリー・ランドの努力を繰り返すメモを近距離委員会に送った[45]。

1980年、グレース・ホッパーは「COBOL 60は95%がFLOW-MATIC」であり、COMTRANの影響は「極めて小さい」とコメントした。さらに、彼女は、仕事が FLOW-MATIC と COMTRAN の両方から影響を受けていると主張するのは、「他の人々を(私たちを打ち負かそうとしないように)満足させる」ためだけであると述べた。

COBOLに組み込まれたCOMTRANからの機能には、数式、[47]PICTURE句、[48]GO TOの必要性をなくした改良されたIF文、より堅牢なファイル管理システムなどがあった[41]。

委員会の作業の有用性は、大きな議論の対象となった。この言語には妥協点が多すぎ、委員会による設計の結果だと考えるメンバーもいれば、検討された3つの言語よりも優れていると考えるメンバーもいた。言語が複雑すぎると感じる者もいれば、単純すぎると感じる者もいた[49]。

論争の的となった機能には、データ処理ユーザーにとって役に立たない、あるいは高度すぎると考えるものも含まれていた。そのような機能には、ブール式、数式、表の添え字(インデックス)などがあった[50][51]。もう1つの論争のポイントは、キーワードを文脈依存にするかどうか、またそれが可読性に及ぼす影響であった[50]。文脈依存のキーワードは却下されたが、このアプローチは後にPL/Iで使用され、2002年からはCOBOLでも部分的に使用されるようになった[52]。双方向性、オペレーティングシステムとの相互作用(当時はほとんど存在しなかった)、関数(純粋に数学的なものと考えられ、データ処理では使用されなかった)についてはほとんど考慮されなかった。

スペックは9月4日の実行委員会に提出された。それは期待に沿うものではなかった: ジョセフ・ウェグスタインは「粗い部分があり、いくつかの追加が必要」と指摘し、ボブ・ベマーは後に「寄せ集め」と評した。小委員会には12月まで改善するよう与えられた[28]。

9月中旬の会議で、委員会は新語の名称について話し合った。提案には「BUSY」(ビジネス・システム)、「INFOSYL」(情報システム言語)、「COCOSYL」(共通コンピュータ・システム言語)などがあった[55]。誰が「COBOL」という名前を作ったのかは不明であるが[56][57]、ボブ・ベーマーは後にそれが彼の提案であったと主張した[58][59][60]。

10月、中距離委員会はロイ・ナットが作成したFACT言語仕様のコピーを受け取った。その機能は委員会に大きな感銘を与え、委員会はCOBOLをそれに基づくものとする決議を可決した[61]。

これは、仕様について順調に進んでいた短距離委員会にとっては打撃であった。技術的に優れているにもかかわらず、FACTは移植性を念頭に置いたり、メーカーやユーザーのコンセンサスによって作成されたものではなかった。また、実証可能な実装も欠けていたため[28]、FLOW-MATICベースのCOBOL支持者は決議を覆すことができた。RCA代表のHoward BrombergもFACTを阻止し、COBOL実装に関するRCAの作業を無駄にしないようにした[62]。

委員会の規模が大きすぎて、これ以上の進展がすぐに望めないことはすぐに明らかになった。苛立ったハワード・ブロンバーグは、「COBOL 」と刻まれた15ドルの墓石を購入し、それをチャールズ・フィリップスに送り、彼の不快感を示した。

既存の言語を分析するために小委員会が結成され、以下の6名で構成された[24][66]。

IBMのウィリアム・セルデンとガートルード・ティアニー、
RCAのハワード・ブロンバーグとハワード・ディスカウント
シルバニア・エレクトリック・プロダクツのヴァーノン・リーヴスとジーン・E・サンメット。
小委員会は仕様書の作成作業のほとんどを行い、完成した仕様書を作成する前に、ショートレンジ委員会にその作業の見直しと修正を任せた[24]。

仕様は1960年1月8日に実行委員会によって承認され、政府の印刷局に送られ、COBOL 60として印刷された。この言語の述べられた目的は、効率的で移植可能なプログラムを簡単に書けるようにすること、ユーザーが最小限の労力とコストで新しいシステムに移行できるようにすること、経験の浅いプログラマに適したものにすることであった[67]。

CODASYL実行委員会は後にCOBOL保守委員会を設立し、ユーザやベンダからの質問に答え、仕様を改善し拡張した[68]。

1960年の間に、COBOLコンパイラの製造を計画しているメーカーのリストは増えていった。9月までに、さらに5つのメーカーがCODASYLに参加し(Bendix、Control Data Corporation、General Electric (GE)、National Cash Register、Philco)、代表されるすべてのメーカーがCOBOLコンパイラを発表した。GEとIBMは、COBOLをそれぞれ自分たちの言語であるGECOMとCOMTRANに統合する計画であった。対照的に、International Computers and Tabulatorsは彼らの言語であるCODELをCOBOLに置き換えることを計画していた[69]。

一方、RCAとSperry RandはCOBOLコンパイラの作成に取り組んだ。最初のCOBOLプログラムは8月17日にRCA 501上で実行された[70]。12月6日と7日には、同じCOBOLプログラムが(若干の変更はあったものの)RCAコンピュータとRemington-Rand Univacコンピュータ上で実行され、互換性が達成できることが実証された[71]。

どの言語が使用されたかの相対的な影響は、すべてのCOBOL参照マニュアルに印刷されている推奨勧告に今日まで続いている:

COBOLは業界言語であり、いかなる企業または企業グループ、あるいはいかなる組織または組織グループの所有物ではない。

COBOLは業界言語であり、いかなる企業または企業グループ、あるいはいかなる組織または組織グループの所有物でもない。プログラミング・システムおよび言語の正確性と機能に関して、いかなる貢献者またはCODASYL COBOL委員会は、明示または黙示を問わず、いかなる保証も行わない。さらに、いかなる寄稿者または委員会も、これに関連していかなる責任も負わない。本書で使用されている著作物の著者および著作権者は、以下の通りである:

FLOW-MATIC(ユニシス・コーポレーションの商標)、Programming for the UNIVAC (R) I and II, Data Automation Systems, copyrighted 1958, 1959, by Unisys Corporation; IBM Commercial Translator Form No. F28-8013, copyrighted 1959, by IBM; FACT, DSI 27A5260-2760, copyrighted 1960, by Minneapolis-Honeywell.
これらの資料の全部または一部をCOBOL仕様で使用することを明確に許可している。このような許可は、プログラミング・マニュアルまたは同様の出版物におけるCOBOL仕様の複製および使用にも及ぶ。

1949

1949年、ホッパーは上級数学者としてエッカート-モークリーコンピュータコーポレーションの従業員となり、UNIVAC Iの開発チームに加わった[17] 。UNIVACは1950年に市販された最初の大規模な電子計算機として知られており、Mark Iよりも情報処理において競争力があった[20]。

ホッパーが、完全に英単語を使用する新しいプログラミング言語の開発を勧めたとき、彼女は「コンピュータは英語を理解しないので、これはできないとすぐに言われた」。それでも彼女は粘った。「ほとんどの人にとって、記号を使うよりも英語の文章を書く方がずっと簡単なのです」と彼女は説明した。「だから私は、データ処理者が英語でプログラムを書けるようにし、コンピュータがそれを機械語に翻訳するべきだと考えたのです」[21]。

彼女のアイデアは3年間受け入れられなかった。その間、彼女は1952年にコンパイラに関する最初の論文を発表した。1950年代初頭、同社はレミントン・ランド社に買収され、彼女がレミントン・ランド社に勤務していたときに、彼女のオリジナルのコンパイラの研究が行われた。このプログラムはAコンパイラとして知られ、その最初のバージョンはA-0であった[22]: 11 

1952年、彼女は当時コンパイラと呼ばれていたリンクローダを実用化した。彼女は後に、「誰もそんなことは信じなかった」と語り、「動作するコンパイラを持っていたのに、誰もそれに触れようとしなかった。コンピュータは算数しかできないと言われた」[23]。

1954年、ホッパーは会社の自動プログラミングの最初のディレクターに任命された[17]。1954年から、ホッパーの仕事は代数記法を入力として受け入れる最初のコンパイラであったLaning and Zierlerシステムの影響を受けた[24]。

ホッパーは、彼女のコンパイラA-0について、「数学的記法を機械語に翻訳した。記号を操作することは、数学者にとっては良いことだが、記号を操作することのできないデータ処理者にとっては良いことではなかった。本当に記号を操る人はほとんどいない。もしそうなら、データ処理者ではなく、プロの数学者になる。ほとんどの人にとって、記号を使うよりも英語の文章を書く方がずっと簡単なのだ。そこで私は、データ処理者は英語でプログラムを書くことができ、コンピュータはそれを機械語に翻訳するべきだと考えた。それがCOBOLの始まりで、データ処理業者用のコンピュータ言語だった。8進数コードで書いたり、あらゆる記号を使ったりする代わりに、『給与から所得税を引いてください』と言うことができる。COBOLは今日、データ処理で使われている主要な言語である」[25]。

1959年の春、データシステム言語会議(CODASYL)として知られる2日間の会議に、産業界と政府からコンピュータの専門家が集まった。ホッパーは委員会の技術コンサルタントを務め、彼女の元従業員の多くが、新しい言語COBOL(COmmon Business-Oriented Languageの頭文字)を定義した短期委員会の委員を務めた。この新言語は、ホッパーのFLOW-MATIC言語を拡張し、IBMの同等言語であるCOMTRANからいくつかのアイデアを取り入れたものであった。プログラムは(マシンコードや、アセンブリ言語のようなマシンコードに近い言語ではなく)英語に近い言語で書かれるべきだというホッパーの信念は、この新しいビジネス言語に受け継がれ、COBOLは今日まで最もユビキタスなビジネス言語となった[26]。
1967年から1977年まで、ホッパーは海軍の情報システム計画局で海軍プログラミング言語グループのディレクターを務め、1973年に大尉に昇進した。海軍全体のCOBOL標準化プログラムの一環として、COBOLとそのコンパイラの検証ソフトウェアを開発した。

お願い致します