(Translated by https://www.hiragana.jp/)
Autocode - Wikipedia コンテンツにスキップ

Autocode

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

Autocode(オートコード)はコーディング簡略かんりゃくシステムとばれた一連いちれんのソフトウェアであり、のちプログラミング言語げんごばれるようになったもので、1950年代ねんだいと1960年代ねんだいロンドンマンチェスター大学だいがくケンブリッジ大学けんぶりっじだいがく開発かいはつされたコンピュータよう開発かいはつされた。オートコードは広義こうぎにはこれらの各種かくしゅコンピュータじょう使つかわれた高水準こうすいじゅん言語げんご総称そうしょうで、べつのマシンのオートコードはているとはかぎらず、たとえばFORTRANのようなほか高水準こうすいじゅん言語げんごでいうところの方言ほうげんのようなものがあった。

コンピュータの歴史れきしじょうにおいて、この用語ようご狭義きょうぎにはマンチェスターマーク1よう自動じどうコーディングシステムに由来ゆらいする初期しょきのプログラミング言語げんごのファミリーをしている。1960年代ねんだいには高水準こうすいじゅん言語げんごコンパイラ用語ようごとしてオートコーダーという言葉ことばひろ使つかわれた[1]COBOLFORTRAM当初とうしょはオートコーダーの1つに分類ぶんるいされた[2]

グレニーのオートコード

[編集へんしゅう]

世界せかいはつのオートコードとそのコンパイラは、1952ねんにアリック・グレニーがマンチェスター大学だいがくのMark 1コンピュータようとして開発かいはつしたもので、世界せかいはつコンパイラかんがえられている[3]難解なんかいであることで有名ゆうめいだったMark 1のマシンをわかりやすいものにすることがおも目的もくてきだった。開発かいはつされた言語げんごはマシンよりもはるかにわかりやすかったが、しかしマシンのアーキテクチャにおおきく依存いぞんしていた[4]

グレニーのオートコードで数式すうしき計算けいさんする関数かんすうれい以下いかしめす。このれいでは乗算じょうざん結果けっかがアキュムレータの下位かいレジスタにおさまるという前提ぜんていで、整数せいすう変数へんすうおさめるために必要ひつようなスケーリングの計算けいさん省略しょうりゃくしている。

 c@VA t@IC x@½C y@RC z@NC
 INTEGERS +5 →c           # 5をcに代入だいにゅう
       →t                 # 引数ひきすうをアキュムレータの下位かいレジスタから
                          # 変数へんすうtにむ
    +t     TESTA Z        # |t|をアキュムレータの下位かいレジスタに代入だいにゅう
    -t
           ENTRY Z
 SUBROUTINE 6 →z          # アキュムレータの下位かいレジスタにあるで
                          # 平方根へいほうこんのサブルーチンをし
                          # 結果けっかをzに代入だいにゅう
   +tt →y →x              # t^3を計算けいさんしてxに代入だいにゅう
   +tx →y →x
 +z+cx   CLOSE WRITE 1    # z + (c * x) を
                          # アキュムレーターの下位かいレジスタにれて
                          # かえ

グレニーのオートコードコンパイラのマニュアルには、「処理しょり効率こうりつ低下ていかは10%以下いか」と記載きさいされている[5]

マンチェスター大学だいがくほかのユーザーはグレニーのオートコードをほとんど使つかわなかった。ブルッカーが1958ねん発表はっぴょうした論文ろんぶんの「マンチェスター大学だいがくのコンピュータよう開発かいはつされたオートコードプログラム」にすらも言及げんきゅうがなかった。

Mark 1オートコード

[編集へんしゅう]

つぎにMark 1よう開発かいはつされたオートコードは、RAブルッカーが1954ねん計画けいかくして1955ねん開発かいはつしたMark 1 オートコードだった。最初さいしょ言語げんごことなり、特定とくていのマシンにたいする依存いぞんせいがほぼなく、浮動ふどう小数点しょうすうてん演算えんざん機能きのうがあった。一方いっぽう1ぎょうに1命令めいれいしかゆるされず、定義ていぎされたニーモニックはわずかで、サブルーチンを定義ていぎする方法ほうほうがなかった[6]

11個いっこ浮動ふどう小数点しょうすうてんすう配列はいれつ入力にゅうりょくからロードするコードのれい以下いかしめす。

       n1 = 1         
 1    vn1 = I         入力にゅうりょくをv[n[1]]にれる
       n1 = n1 + 1
    j1,11 ≥ n1        n[1] ≤ 11ならば1にジャンプ

ブルッカーのオートコードは、2つの記憶きおく装置そうちのスケーリングとマネージメントがむずかしかったMark 1でのプログラムを容易よういにし、最初さいしょのオートコードとことなり頻繁ひんぱん利用りようされた[7]

のオートコード

[編集へんしゅう]

ブルッカーはまたマンチェスター大学だいがく共同きょうどうで1950年代ねんだいにフェランティ・マーキュリーようのオートコードを開発かいはつした。マーキュリー・オートコードでは、変数へんすうがaからzまでとa'からz'までの52種類しゅるいしかなく、ある意味いみのち登場とうじょうした初期しょきダートマスBASIC言語げんごにもていた。ALGOL以前いぜん言語げんごであり、スタック概念がいねんがなく、そのため再帰さいき記述きじゅつもできず、動的どうてき配列はいれつ確保かくほもできなかった。 マーキュリーのメモリ容量ようりょうちいさかったため、おおきなプログラムをチャプターに分割ぶんかつし、オーバーレイのテクニックを使つかって実装じっそうした。チャプターの制御せいぎょえには時間じかんがかかるため、性能せいのうげるには特殊とくしゅ技能ぎのう必要ひつようとした。ドラム制御せいぎょしてオーバーレイを実現じつげんするテクニックは仮想かそうメモリのち実現じつげんされるまで一般いっぱんてきになった。マーキュリー・オートコードのべつバージョンがフェランティ・アトラス(のアトラス・オートコードとは別物べつもの)や、ICT 1300~1900で実装じっそうされた。

1961ねんケンブリッジ大学けんぶりっじだいがく数学すうがく研究所けんきゅうじょのデビッド・ハートリーがEDSAC 2バージョンを開発かいはつした。EDSAC 2オートコードはマーキュリー・オートコードをベースにしてマシンにわせた改造かいぞうをしたもので、オブジェクトコードを最適さいてきする機能きのうがあり、ソースコードのエラーチェック機能きのうがある、当時とうじとしては先進せんしんてきなコンパイラとして有名ゆうめいだった。ALGOLふう構文こうぶん科学かがく技術ぎじゅつ計算けいさんけに最適さいてきされていた。高水準こうすいじゅん言語げんごCPL完成かんせいするまでの一時いちじてきなつなぎとして、後継こうけい機種きしゅのタイタン(アトラス2のプロトタイプ)にもオートコードが実装じっそうされた。CPLは結局けっきょく完成かんせいしなかったが、マーティン・リチャーズがBCPL開発かいはつし、B言語げんごからC言語げんご発展はってんした。どう時期じきにマンチェスター大学だいがくでもアトラス1ようにアトラス・オートコードを開発かいはつしていた。

出展しゅってん

[編集へんしゅう]
  1. ^ London, Keith (1968). “4, Programming”. Introduction to Computers (1st ed.). 24 Russell Square London WC1: Faber and Faber Limited. p. 184. "The 'high' level programming languages are often called autocodes and the processor program, a compiler." 
  2. ^ London, Keith (1968). “4, Programming”. Introduction to Computers (1st ed.). 24 Russell Square London WC1: Faber and Faber Limited. p. 186. "Two high level programming languages which can be used here as examples to illustrate the structure and purpose of autocodes are COBOL (Common Business Oriented Language) and FORTRAN (Formular Translation)." 
  3. ^ Knuth, Donald E.; Pardo, Luis Trabb, “Early development of programming languages”, Encyclopedia of Computer Science and Technology (Marcel Dekker) 7: 419–493 
  4. ^ London, Keith (1968). “4, Programming”. Introduction to Computers (1st ed.). 24 Russell Square London WC1: Faber and Faber Limited. p. 42-43 
  5. ^ London, Keith (1968). “4, Programming”. Introduction to Computers (1st ed.). 24 Russell Square London WC1: Faber and Faber Limited. p. 48 
  6. ^ London, Keith (1968). “4, Programming”. Introduction to Computers (1st ed.). 24 Russell Square London WC1: Faber and Faber Limited. p. 63-64 
  7. ^ London, Keith (1968). “4, Programming”. Introduction to Computers (1st ed.). 24 Russell Square London WC1: Faber and Faber Limited. p. 65 

参考さんこう文献ぶんけん

[編集へんしゅう]
  • Campbell-Kelly, Martin (1980). “Programming the Mark 1: Early Programming Activity at the University of Manchester”. Annals of the History of Computing (IEEE) 2 (2): 130–167. doi:10.1109/MAHC.1980.10018. 
  • Garcia Camarero, Ernesto (1961) (スペイン). AUTOCODE un sistema simplificado de codificacion para la computadora MERCURY. Universidad de Buenos Aires. pp. 70. http://elgranerocomun.net/AUTOCODE-un-sistema-simplificado.html 
  • London, Keith (1968). Introduction to Computers. pp. 261 
  • Knuth, Donald E.; Pardo, Luis Trabb (1976). "Early development of programming languages". Stanford University, Computer Science Department.
  • Brooker, R. A. (1 January 1958). “The Autocode Programs developed for the Manchester University Computers” (英語えいご). The Computer Journal 1 (1): 15–21. doi:10.1093/comjnl/1.1.15. ISSN 0010-4620. 
  • Brooker, R. A. (1 March 1958). “Further Autocode Facilities for the Manchester (Mercury) Computer” (英語えいご). The Computer Journal 1 (3): 124–127. doi:10.1093/comjnl/1.3.124. ISSN 0010-4620. 
  • Clarke, B. (1 April 1959). “The Pegasus Autocode” (英語えいご). The Computer Journal 1 (4): 192–195. doi:10.1093/comjnl/1.4.192. ISSN 0010-4620. 
  • Titan Autocode programming manual. Cambridge, University Mathematical Laboratory. (1967) 
  • Gill, Stanley, ed (1968). “1.5. Recursion in Functional Programming”. Recursive techniques in programming. Macdonald Computer Monographs (1 ed.). London: Macdonald & Co. (Publishers) Ltd.. p. 8  (viii+64 pages)

外部がいぶリンク

[編集へんしゅう]