オートコード

オートコードは、 1950年代から1960年代にかけて マンチェスター大学、ケンブリッジ大学ロンドン大学の一連のデジタルコンピュータ向けに考案された「簡略化されたコーディングシステム」(後にプログラミング言語と呼ばれるようになった)のファミリーの名前です。オートコードは総称であり、異なるマシン向けのオートコードは、例えば単一言語であるFortranの異なるバージョンのように必ずしも密接に関連しているわけではありませんでした。

今日では、この用語はマンチェスター・マーク1オートコーダ・システムから派生した初期の言語群を指すために使用されています。これらのシステムは概ね類似していました。1960年代には、オートコーダという用語はより一般的な意味で、コンパイラを使用するあらゆる高水準プログラミング言語を指していました。[ 1 ] オートコードと呼ばれる言語の例としては、COBOLFortranなどがあります。[ 2 ]

グレニーのオートコード

最初のオートコードとそのコンパイラは、1952年にマンチェスター大学のMark 1コンピュータ向けにアリック・グレニーによって開発され、最初のコンパイル型プログラミング言語であると考える人もいます。彼の主な目的は、難解な機械語で知られていたMark 1マシンのプログラミングの理解度を向上させることでした。結果として得られた言語は機械語よりもはるかに明瞭でしたが、それでも機種依存度は依然として高かったです。[ 3 ]

以下は、式を計算するGlennieのAutocode関数の例です。この例では、整数を変数に格納するために必要なスケーリング命令を省略し、乗算の結果が下位の累算器に収まると想定しています。

c@VA t@IC x@½C y@RC z@NC INTEGERS +5 →c # cに5を入れる →t # 下位アキュムレータから引数をロードする # 変数 t へ +t TESTA Z # |t| を下の累計器に入れる -t エントリーZ サブルーチン 6 →z # 平方根サブルーチンを実行する # 低いアキュムレータ値 # 結果をzに格納する +tt →y →x # t^3を計算してxに代入する +tx →y →x +z+cx CLOSE WRITE 1 # z + (c * x) を # 下位アキュムレータ # そして戻る 

GlennieのAutocodeコンパイラのユーザーマニュアルには、「効率の低下は10%以下」と記載されています。[ 4 ]

グレンニーのオートコードがマンチェスターの他のユーザーのプログラミング習慣に与えた影響はごくわずかでした。ブルッカーが1958年に発表した論文「マンチェスター大学コンピュータ用に開発されたオートコードプログラム」にも、オートコードについて言及されていませんでした。

マーク1オートコード

Mark 1用の2番目のオートコードは1954年に計画され、 1955年にRA Brookerによって開発され、「Mark 1 Autocode」と呼ばれました。この言語はほぼ機種非依存で、最初のオートコードとは異なり、浮動小数点演算をサポートしていました。しかし、1行に1つの演算しか実行できず、ニーモニック名も少なく、ユーザーサブルーチンを定義する手段もありませんでした。[ 5 ]

入力からサイズ11の浮動小数点数の配列をロードするサンプルコードは次のようになります。

 n1 = 1 1 vn1 = Iは入力をvn[1]に読み込む n1 = n1 + 1 j1,11 ≥ n1 は n[1] ≤ 11 の場合に 1 にジャンプする 

BrookerのAutocodeは、Mark 1のプログラマが抱えていた2つの主要な問題点、すなわちスケーリングと2階層ストレージの管理を解消しました。前身とは異なり、Autocodeは頻繁に使用されました。[ 6 ]

後期オートコード

ブルッカーは1950年代にマンチェスター大学と共同で、 フェランティ・マーキュリー用のオートコードも開発しました。マーキュリー・オートコードは変数のレパートリーがazとa'-z'に限られており、ある意味では後のダートマスBASIC言語の初期バージョンに似ていました。ALGOLよりも古く、スタックの概念がなく、したがって再帰動的に割り当てられた配列もありませんでした。マーキュリーで利用可能な比較的小さな記憶域サイズを克服するために、大規模なプログラムは個別の「チャプター」として記述され、各チャプターはオーバーレイを構成していました。チャプター間の制御の移行にかかる時間を最小限に抑えるには、ある程度の技術が必要でした。ドラムからユーザー制御でオーバーレイを作成するというこの概念は、後のマシンで仮想メモリが利用可能になるまで一般的でした。フェランティ・アトラス(後のアトラス・オートコードとは異なる)とICT 1300および1900シリーズ には、わずかに異なるマーキュリー・オートコードの方言が実装されました。

EDSAC 2のバージョンは、1961 年にケンブリッジ大学数学研究所David Hartleyによって考案されました。EDSAC 2 Autocode として知られるこの言語は、Mercury Autocode をそのまま発展させ、ローカルな状況に合わせて調整したもので、当時としては先進的だったオブジェクト コードの最適化とソース言語の診断機能で注目されました。後継のTitan (プロトタイプ Atlas 2 コンピュータ) 用のバージョンは、 CPLと呼ばれるより大幅に進歩した言語が開発されるまでの一時的なつなぎとして開発されました。CPL は完成することはありませんでしたが、 M. Richards が開発したBCPLを生み出し、これがB、そして最終的にはCにつながりました。同時期ではあるものの別の開発の流れとして、マンチェスター大学のAtlas 1マシン用にAtlas Autocodeが開発されました。

参考文献

  1. ^ロンドン、キース (1968). 「4. プログラミング」.コンピュータ入門(第1版). ロンドン: フェイバー・アンド・フェイバー社. p. 184. SBN 571085938「高」レベルのプログラミング言語は、多くの場合、オートコードと呼ばれ、プロセッサ プログラムはコンパイラと呼ばれます
  2. ^ロンドン、キース (1968). 「4. プログラミング」.コンピュータ入門(第1版). ロンドン: フェイバー・アンド・フェイバー社. p. 186. SBN 571085938ここでオートコードの構造と目的を説明する例として使用できる 2 つの高水準プログラミング言語は、COBOL (Common Business Oriented Language) と FORTRAN (Formular Translation) です
  3. ^クヌース、42-43ページ
  4. ^クヌース、48ページ
  5. ^クヌース、63-64ページ
  6. ^クヌース、65ページ

出典

  • キャンベル=ケリー、マーティン (1980). 「Mark 1のプログラミング:マンチェスター大学における初期のプログラミング活動」Annals of the History of Computing . 2 (2). IEEE: 130–167 . doi : 10.1109/MAHC.1980.10018 . S2CID  10845153 .
  • ガルシア・カマレロ、エルネスト(1961年)。AUTOCODE un sistema simplificado de codificacion para la computadora MERCURY (スペイン語)。ブエノスアイレス大学。 p. 70.
  • ロンドン、キース(1968年)『コンピュータ入門』 261ページ。
  • ドナルド・E・クヌース、ルイス・トラブ・パルド (1976). 「プログラミング言語の初期開発」スタンフォード大学コンピュータサイエンス学部.

さらに読む