Autocodeのソースを表示
←
Autocode
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''Autocode'''('''オートコード''')はコーディング簡略化システムと呼ばれた一連のソフトウェアであり、後に[[高水準言語|プログラミング言語]]と呼ばれるようになったもので、1950年代と1960年代に [[ロンドン大学|ロンドン]]の[[マンチェスター大学|マンチェスター]]大学や[[ケンブリッジ大学]]で開発された[[コンピュータ]]用に開発された。オートコードは広義にはこれらの各種コンピュータ上で使われた[[高水準言語]]の総称で、別のマシンのオートコードは似ているとは限らず、例えば[[FORTRAN]]のような他の高水準言語でいうところの方言のようなものがあった。 コンピュータの歴史上において、この用語は狭義には[[Manchester Mark I|マンチェスターマーク1]]用の自動コーディングシステムに由来する初期のプログラミング言語のファミリーを指している。1960年代には[[高水準言語]][[コンパイラ]]を指す用語として'''オートコーダー'''という言葉が広く使われた<ref name="kleith">{{Cite book|last=London|first=Keith|title=Introduction to Computers|year=1968|publisher=Faber and Faber Limited|location=24 Russell Square London WC1|page=184|edition=1st|chapter=4, Programming|quote=The 'high' level programming languages are often called autocodes and the processor program, a compiler.}}</ref>。[[COBOL]]や[[FORTRAN|FORTRAM]]も当初はオートコーダーの1つに分類された<ref name="kleith2">{{Cite book|last=London|first=Keith|title=Introduction to Computers|year=1968|publisher=Faber and Faber Limited|location=24 Russell Square London WC1|page=186|edition=1st|chapter=4, Programming|quote=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).}}</ref>。 == グレニーのオートコード == 世界初のオートコードとそのコンパイラは、1952年にアリック・グレニーがマンチェスター大学のMark 1コンピュータ用として開発したもので、世界初の[[コンパイラ]]と考えられている<ref>{{citation |last=Knuth |first=Donald E. |last2=Pardo |first2=Luis Trabb |title=Early development of programming languages |journal=Encyclopedia of Computer Science and Technology |volume=7 |pages=419–493 |publisher=Marcel Dekker}}</ref>。難解であることで有名だったMark 1のマシン語をわかりやすいものにすることが主な目的だった。開発された言語はマシン語よりもはるかにわかりやすかったが、しかしマシンのアーキテクチャに大きく依存していた<ref>{{Cite book|last=London|first=Keith|title=Introduction to Computers|year=1968|publisher=Faber and Faber Limited|location=24 Russell Square London WC1|page=42-43|edition=1st|chapter=4, Programming}}</ref>。 グレニーのオートコードで数式<math>f(t) = \sqrt{|t|} + 5t^3</math>を計算する関数の例を以下に示す。この例では乗算の結果がアキュムレータの下位レジスタに収まるという前提で、整数を変数に納めるために必要なスケーリングの計算を省略している。 <code><pre> 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) を # アキュムレーターの下位レジスタに入れて # 返す </pre></code> グレニーのオートコードコンパイラのマニュアルには、「処理効率の低下は10%以下」と記載されている<ref>{{Cite book|last=London|first=Keith|title=Introduction to Computers|year=1968|publisher=Faber and Faber Limited|location=24 Russell Square London WC1|page=48|edition=1st|chapter=4, Programming}}</ref>。 マンチェスター大学の他のユーザーはグレニーのオートコードをほとんど使わなかった。ブルッカーが1958年に発表した論文の「マンチェスター大学のコンピュータ用に開発されたオートコードプログラム」にすらも言及がなかった。 == Mark 1オートコード == 次にMark 1用に開発されたオートコードは、RAブルッカーが1954年に計画して1955年に開発したMark 1 オートコードだった。最初の言語と異なり、特定のマシンに対する依存性がほぼなく、浮動小数点演算機能があった。一方1行に1命令しか許されず、定義されたニーモニックはわずかで、サブルーチンを定義する方法がなかった<ref>{{Cite book|last=London|first=Keith|title=Introduction to Computers|year=1968|publisher=Faber and Faber Limited|location=24 Russell Square London WC1|page=63-64|edition=1st|chapter=4, Programming}}</ref>。 11個の浮動小数点数の配列を入力からロードするコードの例を以下に示す。 <code><pre> n1 = 1 1 vn1 = I 入力をv[n[1]]に入れる n1 = n1 + 1 j1,11 ≥ n1 n[1] ≤ 11ならば1にジャンプ </pre></code> ブルッカーのオートコードは、2つの記憶装置のスケーリングとマネージメントが難しかったMark 1でのプログラムを容易にし、最初のオートコードと異なり頻繁に利用された<ref>{{Cite book|last=London|first=Keith|title=Introduction to Computers|year=1968|publisher=Faber and Faber Limited|location=24 Russell Square London WC1|page=65|edition=1st|chapter=4, Programming}}</ref>。 == 後のオートコード == ブルッカーはまたマンチェスター大学と共同で1950年代にフェランティ・マーキュリー用のオートコードを開発した。マーキュリー・オートコードでは、[[変数 (プログラミング)|変数]]がaからzまでとa'からz'までの52種類しかなく、ある意味で後に登場した初期の[[ダートマスBASIC]]言語にも似ていた。[[ALGOL]]以前の言語であり、[[コールスタック|スタック]]の概念がなく、そのため再帰の記述もできず、[[メモリ管理|動的]]な[[配列]]の確保もできなかった。 マーキュリーのメモリ容量は小さかったため、大きなプログラムをチャプターに分割し、[[オーバーレイ (コンピュータ用語)|オーバーレイ]]のテクニックを使って実装した。チャプターの制御の切り替えには時間がかかるため、性能を上げるには特殊な技能を必要とした。[[磁気ドラムメモリ|ドラム]]を制御してオーバーレイを実現するテクニックは[[仮想記憶|仮想メモリ]]が後に実現されるまで一般的になった。マーキュリー・オートコードの別バージョンがフェランティ・アトラス(後のアトラス・オートコードとは別物)や、ICT 1300~1900で実装された。 1961年にケンブリッジ大学数学研究所のデビッド・ハートリーが[[EDSAC|EDSAC 2]]バージョンを開発した。EDSAC 2オートコードはマーキュリー・オートコードをベースにしてマシンに合わせた改造をしたもので、オブジェクトコードを最適化する機能があり、ソースコードのエラーチェック機能がある、当時としては先進的なコンパイラとして有名だった。[[ALGOL]]風の構文で科学技術計算向けに最適化されていた。高水準言語の[[CPL (プログラミング言語)|CPL]]が完成するまでの一時的なつなぎとして、後継機種のタイタン(アトラス2のプロトタイプ)にもオートコードが実装された。CPLは結局完成しなかったが、マーティン・リチャーズが[[BCPL]]を開発し、[[B言語]]から[[C言語]]に発展した。同時期にマンチェスター大学でもアトラス1用にアトラス・オートコードを開発していた。 == 出展 == {{Reflist}} == 参考文献 == * {{cite journal|last=Campbell-Kelly|first=Martin|year=1980|title=Programming the Mark 1: Early Programming Activity at the University of Manchester|journal=Annals of the History of Computing|volume=2|issue=2|pages=130–167|publisher=IEEE|doi=10.1109/MAHC.1980.10018}} * {{cite book|last=Garcia Camarero|first=Ernesto|title=AUTOCODE un sistema simplificado de codificacion para la computadora MERCURY|publisher=Universidad de Buenos Aires|year=1961|pages=70|url=http://elgranerocomun.net/AUTOCODE-un-sistema-simplificado.html|language=es}} * {{cite book|last=London|first=Keith|title=Introduction to Computers|year=1968|pages=261}} * Knuth, Donald E.; Pardo, Luis Trabb (1976). "Early development of programming languages". Stanford University, Computer Science Department. * {{cite journal|last1=Brooker|first1=R. A.|date=1 January 1958|title=The Autocode Programs developed for the Manchester University Computers|journal=The Computer Journal|volume=1|issue=1|pages=15–21|language=en|doi=10.1093/comjnl/1.1.15|issn=0010-4620}} * {{cite journal|last1=Brooker|first1=R. A.|date=1 March 1958|title=Further Autocode Facilities for the Manchester (Mercury) Computer|journal=The Computer Journal|volume=1|issue=3|pages=124–127|language=en|doi=10.1093/comjnl/1.3.124|issn=0010-4620|doi-access=free}} * {{cite journal|last1=Clarke|first1=B.|date=1 April 1959|title=The Pegasus Autocode|journal=The Computer Journal|volume=1|issue=4|pages=192–195|language=en|doi=10.1093/comjnl/1.4.192|issn=0010-4620|doi-access=free}} * {{cite book|author-first1=David William|author-last1=Barron|author-link1=David W. Barron|display-authors=etal|title=Titan Autocode programming manual|publisher=Cambridge, University Mathematical Laboratory|date=1967}} * {{cite book|author-first=David William|author-last=Barron|author-link=David W. Barron|editor-first=Stanley|editor-last=Gill|editor-link=Stanley Gill|title=Recursive techniques in programming|chapter=1.5. Recursion in Functional Programming|series=Macdonald Computer Monographs|date=1968|orig-year=1967|edition=1|publisher=[[Macdonald & Co. (Publishers) Ltd.]]|location=London|sbn=356-02201-3|page=8}} (viii+64 pages) == 外部リンク == * [http://www.homepages.ed.ac.uk/jwp/history/autocodes/ The Autocodes: a User's Perspective] [[Category:プログラミング言語]]
このページで使用されているテンプレート:
テンプレート:Citation
(
ソースを閲覧
)
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Cite journal
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
Autocode
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報