アルゴル

アルゴル
1965年のALGOL-20マニュアル
パラダイム手続き型命令型構造化型
家族アルゴル
デザイン:バウアーボッテンブルッフルーティシャウザーザメルソンバッカスカッツパーリスウェグシュタインナウルヴォーコワ、ファン・ワインガーデンウッジャーグリーンマッカーシー
初登場1958 (1958年
タイピングの規律静的強い
範囲語彙
影響を受けた
その後のほとんどの命令型言語(いわゆるALGOL系言語を含む) 、例えばPL/ISimulaPascalCScheme

ALGOL/ ˈæ lɡɒ l , -ɡɔː l / ;「アルゴリズム言語」の略)[ 1 ]は 1958年に開発された命令型コンピュータプログラミング言語のファミリーです。ALGOL他の多くの言語に大きな影響を与え、30年以上にわたってACM( Association for Computing Machinery )の教科書や学術資料でアルゴリズム記述の標準的な方法でした。[ 2 ]

現代の言語の構文のほとんどが「Algolに似ている」という意味で、 [ 3 ] Algolは、ほぼ同時期に存在したFORTRANLispCOBOLという他の3つの高級プログラミング言語よりも影響力があったと言えるでしょう。[ 4 ] FORTRANで問題視されていたいくつかの問題を回避するように設計され、最終的にはPL / ISimulaBCPLBPascalAdaCなど、他の多くのプログラミング言語の誕生につながりました。

ALGOLはコードブロックと、それらを区切るためのbegin...ペアを導入しました。また、レキシカルスコープを持つネストされた関数定義を実装した最初の言語でもありました。さらに、ALGOLは形式言語定義に細心の注意を払った最初のプログラミング言語であり、Algol 60レポートを通じて、言語設計のための主要な形式文法記法で あるバッカス・ナウア記法を導入しました。end

主な仕様は 3 つあり、最初に公開された年にちなんで名付けられています。

  • ALGOL 58 – 当初はIAL ( International Algebraic Language)と呼ばれることが提案されました。
  • ALGOL 60 – 1961年にX1 ALGOL 60として初めて実装されました。1963年に改訂されました。 [ 5 ] [ 6 ] [ 7 ]
  • ALGOL 68 – 柔軟な配列、スライス、並列処理、演算子識別などの新しい要素を導入。1973年に改訂。[ 8 ]

ALGOL 68 は ALGOL 60 とは大幅に異なり、あまり受け入れられなかったため、「Algol」という場合は一般に ALGOL 60 とその方言を指すものと理解されています。

歴史

ALGOLは、1958年にチューリッヒのスイス連邦工科大学で開催された会議において、ヨーロッパとアメリカのコンピュータ科学者の委員会によって共同で開発されました( ALGOL 58参照)。[ 9 ] ALGOLは、参照構文、出版構文、実装構文という3つの異なる構文を規定しており、これらの構文により、言語ごとに異なるキーワード名や小数点の表記規則(カンマとピリオド)を使用することができました。[ 5 ]

ALGOLは主に米国とヨーロッパの計算機科学者の研究に使用されていましたが、その記述に標準的な入出力機能が欠けていたことと、大手計算機ベンダー(バローズ社以外)がこの言語に興味を示さなかったことが、商用利用の妨げとなりました。[ 10 ]しかし、ALGOL 60はアルゴリズムの公開における標準となり、その後の言語開発に大きな影響を与えました。[ 10 ]

キャプション
Algol、FortranCOBOLプログラミング言語王朝の系図

ジョン・バッカスは、 ALGOL 58向けにプログラミング言語を記述するバッカス正規形法を開発した。これはALGOL 60向けにピーター・ナウアによって改訂・拡張され、ドナルド・クヌースの提案によりバッカス・ナウア形と改名された。[ 11 ]

ピーター・ナウア:「私はALGOL Bulletinの編集者として言語に関する国際的な議論に巻き込まれ、1959年11月にヨーロッパ言語設計グループのメンバーに選ばれました。この立場で、私は1960年1月にパリで開催されたALGOL 60会議の結果として作成されたALGOL 60レポートの編集者でした。」[ 12 ]

パリでの会議(1月11日から16日)には以下の人々が出席した。[ 5 ]

アラン・パーリスは会議の様子を鮮やかに描写している。「会議は疲れ果て、果てしなく長く、そして爽快だった。自分の良いアイデアが他人の悪いアイデアと一緒に却下されると、誰もが苛立ちを覚えた。しかし、会議中ずっと勤勉さは続いた。13人の間の相性は抜群だった。」[ 13 ]

遺産

ALGOL 58レポートの重要な貢献は、プログラミングの概念(ステートメント、宣言、型、ラベル、プライマリ、ブロックなど)に標準的な用語を提供したことです。[ 10 ]

ALGOL 60は、その後に続く多くの言語に影響を与えました。トニー・ホーアは、「これは時代をはるかに先取りした言語であり、先行言語だけでなく、ほぼすべての後継言語よりも優れたものでした」と述べています。[ 14 ] Lispの派生言語であるSchemeプログラミング言語も、ALGOLのブロック構造と語彙範囲を採用し、ALGOLへの敬意を表して、標準文書に「アルゴリズム言語Schemeの改訂報告書」という文言を採用しました。[ 15 ]

プロパティ

公式に定義されたALGOL 60にはI/O機能が存在せず、実装はそれぞれ独自の方法でI/Oを定義していましたが、それらの実装は互いに互換性がほとんどありませんでした。対照的に、ALGOL 68は広範なトランスプット(入出力)機能のライブラリを提供していました。

ALGOL 60 では、パラメータを渡すための2 つの評価戦略が許可されていました。1 つは一般的な値渡し、もう1 つは名前渡しです。名前渡しは参照渡しとは対照的に特定の効果があります。たとえば、パラメータをまたは参照として指定しないと、渡される実際のパラメータが整数変数と、同じ整数変数でインデックス付けされた配列である場合に、2 つのパラメータの値を交換するプロシージャを開発することは不可能です。[ 16 ] swap(i, A[i]) へのポインタを関数に渡すことを考えてみましょう。swap が参照されるたびに、再評価されます。たとえば、i := 1 で A[i] := 2 の場合、swap が参照されるたびに、値の別の組み合わせ ([1,2]、[2,1]、[1,2] など) が返されます。同様の状況が、実際の引数として渡されるランダム関数でも発生します。

名前呼び出しは、その実装に使用される興味深い「サンク」によって、多くのコンパイラ設計者に知られています。ドナルド・クヌースは、「再帰と非局所参照」を正しく実装したコンパイラを区別するために、「男か少年かテスト」を考案しました。このテストには、名前呼び出しの例が含まれています。

ALGOL 68は、 Adriaan van Wijngaardenによって発明され、彼の名前を冠した2階層の文法形式を用いて定義されました。Van Wijngaarden文法は文脈自由文法を用いて、特定のALGOL 68プログラムを認識する無限の規則を生成します。特に、他の多くのプログラミング言語標準では「セマンティクス」とラベル付けされ、曖昧さを伴いやすい自然言語の散文で表現され、その後、形式言語パーサーに付随するアドホックコードとしてコンパイラに実装されるような要件を表現できます。

例と移植性

コードサンプルの比較

アルゴル60

(太字のテキストの書き方は実装によって異なります。たとえば、整数の場合は引用符を含む 'INTEGER' とします。これはストロッピングと呼ばれます。)

手順Absmax(a) サイズ:(n, m) 結果:(y) 添え字:(i, k); n, m;配列a;整数n, m, i, k;実数y; コメントサイズ n × m の行列 a の絶対最大要素は、 y にコピーされ、この要素の添え字が i と k にコピーされます。 整数p、qを開始します。 y := 0; i := k := 1; for p := 1 step 1 until n do for q := 1 step 1 until m do if abs(a[p, q]) > y then begin y := abs(a[p, q]); i := p; k := q 終了終了Absmax 

以下はElliott 803 ALGOLを使用してを作成する方法の例です。 [ 17 ]

浮動小数点アルゴリズムテスト リアルA、B、C、Dの開始 読むD' A:= 0.0 ステップD 6.3まで実行 始める 印刷パンチ(3)、££L??' B := SIN(A)' C := COS(A)' 印刷パンチ(3)、同一線整列(1,6)、A、B、C' 終わり 終わり' 

アルゴル68

次のコード サンプルは、上記の ALGOL 60 コード サンプルの ALGOL 68 バージョンです。

ALGOL 68実装では、ALGOL 60のストロッピング手法が採用されています。ALGOL 68の場合、太字のトークンは予約語、型(モード)、または演算子です。

proc abs max = ([,] real a, ref real y, ref int i, k) real : comment行列aの絶対最大要素。サイズは⌈a×2⌈a。 は y に転送され、この要素の i と k への添え字になります。コメント開始real y := 0; i := ⌊a; k := 2⌊a; for p from ⌊a to ⌈a do for q from 2⌊a to 2⌈a do if abs a[p, q] > y then y := abs a[p, q]; i := p; k := q fi od od ; y 終了# 腹筋最大 # 

注: 配列の下限 (⌊) と上限 (⌈) の境界、および配列のスライスは、プログラマーが直接利用できます。

浮動小数点algol68テスト: ( 実数a、b、c、d;   # printf – 出力をファイルstand outに送信します。# # printf($p$);新しいページを選択します# printf(($pg$,"Enter d:")); 読む(d);   for step from 0 while a:=step*d; a <= 2*pi do printf($l$); # $l$ -新しい行を選択します。# b := sin(a); c := cos(a); printf(($zd.6d$,a,b,c)) # 小数点の前に 1 桁、小数点の後に 6 桁で出力をフォーマットします。 # od

タイムライン: Hello world

プログラムの実装ごとに異なるバリエーションと移植性の欠如は、古典的なhello world プログラムで簡単に実証されます。

アルゴル 58 (IAL)

ALGOL 58 には I/O 機能はありませんでした。

ALGOL 60ファミリー

ALGOL 60にはI/O機能がなかったため、ALGOLには移植可能なHello Worldプログラムはありません。次の3つの例はBurroughs Extended Algolで記述されています。最初の2つは、実行されている対話型端末に直接出力されます。最初の例はC言語と同様に文字配列を使用しています。この言語では、配列識別子を配列へのポインタとして使用できるため、REPLACE文で使用できます。

BEGIN FILE F ( KIND = REMOTE ); EBCDIC ARRAY E [ 0 : 11 ]; REPLACE E BY "HELLO WORLD!" ; WRITE ( F , * , E ); END .

インライン形式を使用したより単純なプログラム:

BEGIN FILE F ( KIND = REMOTE ); WRITE ( F , < "HELLO WORLD!" > ); END .

Displayステートメントを使った、さらにシンプルなプログラムです。出力はシステムコンソール('SPO')に表示されることに注意してください。

BEGIN DISPLAY ( "HELLO WORLD!" ) END .

Elliott Algol I/Oを使用した別の例を以下に示します。Elliott Algolは「open-string-quote」と「close-string-quote」に異なる文字を使用しており、ここでは次のように表されます。 ' そして ' 

プログラムHiFolks ; begin print ' Hello world ' end ;

以下はElliott 803 Algol (A104)のバージョンです。標準のElliott 803は5穴紙テープを使用していたため、大文字のみでした。コードには引用符がないため、開始引用符には£(英国ポンド記号)、終了引用符には?(疑問符)が使用されました。特殊なシーケンスは二重引用符で囲まれていました(例:£. £L?? はテレプリンターで改行されました)。

 ハイフォークス 始める 印刷 £HELLO WORLD£L??' 終わり' 

ICT 1900シリーズのAlgol I/Oバージョンは、紙テープまたはパンチカードからの入力を可能にしました。紙テープの「フル」モードでは小文字が使用可能でした。出力はラインプリンタで行われました。引用符の開始と終了は「(」と「)」で、スペースは「%」で表されました。[ 18 ]

 '始める' テキストを書き込みます('('HELLO%WORLD')'); '終わり' 

アルゴル68

ALGOL 68コードは、予約語が通常は小文字で、太字または下線が引かれた状態で公開されました。

始める printf(($gl$,"こんにちは、世界!")) 終わり

「アルゴル 68 レポート」の言語では、入出力機能は総称して「トランスプット」と呼ばれていました。

ALGOL特殊文字のタイムライン

ALGOL は、文字セットが多様で急速に進化していた時代に考案されました。また、ALGOL は大文字のみを必要とするように定義されまし

1960年:IFIP – Algol 60言語と報告書には、現代のコンピュータやオペレーティングシステムで使用できるものの、残念ながら当時のほとんどのコンピュータシステムではサポートされていない数学記号がいくつか含まれていました。例えば、×、÷、≤、≥、≠、¬、∨、∧、⊂、≡、␣、⏨などです。

1961年9月: ASCII –当時開発の初期段階にあったASCII文字セットに、 ALGOLのブール演算子/\\/をサポートするために\ (バックスラッシュ)文字が追加されました。[ 19 ]

1962年: ALCOR – この文字セットには、乗算用の珍しい「᛭」ルーン十字[ 20 ]文字と、浮動小数点表記用の「⏨」小数点指数記号[ 21 ]が含まれていました。[ 22 ] [ 23 ] [ 24 ]

1964年: GOST – 1964年のソビエト標準GOST 10859は、 ALGOLで4ビット、5ビット、6ビット、7ビットの文字のエンコードを許可しました。[ 25 ]

1968年:「アルゴル68報告書」 – 既存のALGOL文字を使用し、さらにタイプボール(またはゴルフボール)プリントヘッド(APLゴルフボールなど)が挿入されたIBM 2741キーボードにある→、↓、↑、□、⌊、⌈、⎩、⎧、○、⊥、および¢文字を採用しました。これらは、ALGOL 68の草稿が書かれていた1960年代半ばに利用可能になりましこの報告はロシア語、ドイツ語、フランス語、およびブルガリア語に翻訳され、ソビエトBESM -4のキリル文字など、より大きな文字セットを持つ言語でのプログラミングを可能にしました。ALGOLのすべての文字はUnicode標準の一部でもあり、そのほとんどはいくつかの一般的なフォントで利用できます。

2009年10月: Unicode浮動小数点表記のための(十進指数記号)が、歴史的なBuranプログラムのALGOLソフトウェアとの後方互換性のためにUnicode 5.2に追加されました。[ 26 ]

ALGOL実装

現在までに、Algol 60には少なくとも70の拡張、派生、サブ言語が存在しています。[ 27 ]

名前 著者 説明 ターゲットCPU
ZMMD実装1958フリードリヒ・L・バウアー、ハインツ・ルーティハウザー、クラウス・ザメルソン、ヘルマン・ボッテンブルッフドイツALGOL 58の実装Z22 (後にツーゼZ23はアルゴル60コンパイラを搭載して提供された)[ 28 ]
X1 アルゴル 601960年8月[ 29 ]エドガー・W・ダイクストラヤープ・A・ゾンネフェルトオランダALGOL 60の最初の実装[ 30 ]エレクトロロジカ X1
エリオット・アルゴル1960年代CARホーア英国1980年のチューリング賞講演のテーマ[ 31 ]エリオット803、エリオット503、エリオット4100シリーズ
陽気な1960ジュールス・シュワルツ私たちエイダ以前DOD HOL各種(記事参照)
バローズ・アルゴル (いくつかの亜種)1961バローズ・コーポレーション(ホーア、ダイクストラらが参加)私たちBurroughs(現在はUnisys MCPベース)コンピュータの基礎Burroughs Large Systemsとそのミッドレンジも同様です。
ALGOLのケース1961ケース工科大学[ 32 ]私たちSimulaはもともとCase ALGOLのシミュレーション拡張として契約されました。ユニバック 1107
ゴーゴリ1961ウィリアム・M・マッキーマン私たちODINタイムシェアリングシステムの場合[ 33 ]PDP-1
RegneCentralen ALGOL1961ピーター・ナウアヨーン・イェンセンデンマーク完全なAlgol 60の実装RegnecentralenのDASK
ダートマス ALGOL 301962Thomas Eugene Kurtz私たちLGP-30
USS 90 アルゴル1962L. ペトローネイタリア
アルゴル60 1962 ベルナール・ヴォーコワ、ルイ・ボリエ[ 34 ]フランスInstitut d'Informatique et Mathématiques Appliquées de Grenoble (IMAG) および Compagnie des Machines Bull ブルガンマ60
アルゴル翻訳者1962G. ファン デル メイとWL ファン デル ポールオランダStaatsbedrijf der Posterijen、電信電話ゼブラ
キッズグローブ・アルゴル1963FGダンカン英国イングリッシュ・エレクトリック・カンパニーKDF9
ヴァルゴル1963ヴァル・ショレ私たちMETA IIコンパイラ のテスト
砥石1964ブライアン・ランデルとLJ・ラッセル英国イングリッシュ・エレクトリック社の原子力部門。Ferranti Pegasus、国立物理学研究所ACE、そしてイングリッシュ・エレクトリック社のDEUCE実装の前身。イングリッシュ・エレクトリック・カンパニーKDF9
ニューアルゴル1965ノルウェーユニバック
アルゲック1965ソビエト連邦АЛГЭКは、ALGOL-60とCOBOLのサポートに基づいており、経済的なタスクに適しています。ミンスク22
アルゴルW1966ニクラウス・ヴィルト私たちALGOL 60の後継提案IBM システム/360
マルゴル1966公開。 A. ヴィイル、M コトリ、M. ラケンディ、エストニア共和国ミンスク22
アルガム1967GAMS グループ (ГАМС, группа автоматизации программирования для мазин среднего класса)、コメコン科学アカデミーの協力コメコンミンスク-22、後にES EVMBESM
アルゴル/ザム1967ポーランドポーランドのZAMコンピューター
シミュラ671967オーレ=ヨハン・ダールクリステン・ナイガードノルウェーAlgol 60とクラスユニバック 1107
トリプレックス-ALGOLカールスルーエ1967/1968カールスルーエドイツ区間演算のための三重数を用いたALGOL 60(1963)[ 35 ]
中国のアルゴル1972中国記号システムで表現された漢字
DG/L1972私たちDG Eclipseファミリーのコンピュータ
S-アルゴル1979ロン・モリソン英国教育言語としての使用を目的とした直交データ型の追加PDP-11とその後のJava VM実装

Burroughs方言には、ESPOLNEWPといった特殊なブートストラッピング方言が含まれていました。NEWPは現在でもUnisys MCPシステムソフトウェアで使用されています。

参照

参考文献

  1. ^この言語ファミリーの名称は、大文字と小文字が混在する場合( Algol 60 Archived 25 June 2007 at the Wayback Machine)、または全て大文字で表記される場合もあります( ALGOL68 Archived 13 September 2014 at the Wayback Machine)。この記事では簡潔にするため、 ALGOLを使用します。
  2. ^ Collected Algorithms of the ACM Archived 17 October 2011 at Wikiwix アルゴリズムの圧縮アーカイブ。ACM
  3. ^ O'Hearn, PW; Tennent, RD (1996年9月). 「Algol風言語入門」 . 2011年11月14日時点のオリジナルよりアーカイブ。
  4. ^「ALGOLプログラミング言語」 2016年10月6日アーカイブミシガン大学ディアボーン
  5. ^ a b c Backus, John Warner ; Bauer, Friedrich Ludwig ; Green, Julien ; Katz, Charles ; McCarthy, John ; Naur, Peter ; Perlis, Alan Jay ; Rutishauser, Heinz ; Samelson, Klaus ; Vauquois, Bernard ; Wegstein, Joseph Henry ; van Wijngaarden, Adriaan ; Woodger, Michael (1960年5月). Naur, Peter (編). "Report on the Algorithmic Language ALGOL 60" . Communications of the ACM . 3 (5). Copenhagen, Denmark: 299– 314. doi : 10.1145/367236.367262 . ISSN 0001-0782 . S2CID 278290 .  
  6. ^ 「アルゴリズム言語Algol 60の改訂報告書」 1963年。2007年6月25日時点のオリジナルよりアーカイブ。 2007年6月8日閲覧
  7. ^ 「X1 用の ALGOL 60 トランスレータ」(PDF)。 1961. 2022 年 10 月 9 日のオリジナルからアーカイブ(PDF) 2021 年1 月 7 日に取得
  8. ^ 「アルゴリズム言語ALGOL 68の改訂報告書」(PDF) 1973年。2014年9月13日時点のオリジナルよりアーカイブ(PDF) 。 2014年9月13日閲覧
  9. ^ 「ALGOLの歴史 — ソフトウェア保存グループ」 www.softwarepreservation.org . 2024年3月14日閲覧
  10. ^ a b cボブ・ベマー「アルゴルの政治社会史」(PDF)コンピュータ歴史博物館2024年8月9日閲覧
  11. ^ Knuth, Donald E. (1964). 「バッカス正規形とバッカスナウア形」 . Communications of the ACM . 7 (12): 735– 736. doi : 10.1145/355588.365140 . S2CID 47537431 . 
  12. ^ ACM 賞の引用: ピーター・ナウアArchive -It 2012年4月2日、2005年
  13. ^ Perlis, Alan J (1978). 「ALGOL開発におけるアメリカ側」 .プログラミング言語の歴史. pp.  75– 91. doi : 10.1145/800025.1198352 . ISBN 0-12-745040-8– dl.acm.org 経由。
  14. ^「プログラミング言語設計のヒント」Wayback Machineに 2009 年 9 月 15 日にアーカイブ、CAR Hoare、1973 年 12 月。27 ページ。(この発言は、最初の ALGOL 60コンパイラの実装にも関わったEdsger W. Dijkstraの発言であると誤って解釈されることがあります。)
  15. ^ Dybvig, RK; 他. Rees, Jonathan; Clinger, William; Abelson, Hal (編). 「アルゴリズム言語スキームに関する改訂版(3)報告書 (ALGOL 60の記憶に捧ぐ)」 . 2010年1月14日時点のオリジナルよりアーカイブ。 2009年10月20日閲覧
  16. ^ Aho, Alfred V. ; Sethi, Ravi ; Ullman, Jeffrey D. (1986). Compilers: Principles, Techniques, and Tools (第1版). Addison-Wesley. ISBN 0-201-10194-7、第7.5節およびその中の参照
  17. ^ "803 ALGOL" Archived 29 May 2010 at the Wayback Machine、Elliott 803 ALGOLのマニュアル
  18. ^ 「ICL 1900シリーズ:Algol言語」 ICL技術出版物3340、1965年。
  19. ^ ASCIIのバックスラッシュの由来Archived 11 July 2014 at the Wayback Machine、Bob Bemer
  20. ^鉄十字/ルーン十字
  21. ^小数指数記号
  22. ^バウマン、R. (1961 年 10 月)。 「ALCOR グループの ALGOL マニュアル 第 1 部」 [ALCOR グループの ALGOL マニュアル]。Elektronische Rechenanlagen (ドイツ語): 206–212
  23. ^バウマン、R. (1961 年 12 月)。 「ALCOR グループの ALGOL マニュアル 第 2 部」 [ALCOR グループの ALGOL マニュアル]。Elektronische Rechenanlagen (ドイツ語)。6 : 259–265 .
  24. ^ Baumann, R. (1962年4月). 「ALGOLマニュアル ALCORグループ パート3」 [ALGOLマニュアル ALCORグループ]. Elektronische Rechenanlagen (ドイツ語). 2 .
  25. ^ “GOST 10859規格” . 2007年6月16日時点のオリジナルよりアーカイブ2007年6月5日閲覧。
  26. ^ Broukhis, Leonid (2008年1月22日). 「10進指数記号のエンコードに関する改訂提案」(PDF) . www.unicode.org . ISO/IEC JTC 1/SC 2/WG 2. 2015年7月31日時点のオリジナルからアーカイブ(PDF) . 2016年1月24日閲覧.これは、GOSTベースのソフトウェアやドキュメントをトランスコードする必要性が依然として生じる可能性があることを意味します。BESM-6の非IEEE浮動小数点表現に最適化された従来の数値アルゴリズム(例えば、ブラン宇宙船の自動着陸など)は、単純に再コンパイルするだけでは確実に動作することは期待できず、人為的な介入が必要になる場合があります。
  27. ^ 「コンピュータ言語百科事典」 。 2011年9月27日時点のオリジナルよりアーカイブ2012年1月20日閲覧。
  28. ^ Computer Museum History Archived 20 August 2010 at the Wayback Machine、HunfeldのKonrad Zuse Schuleによって復元された歴史的なZuse-Computer Z23、米国カリフォルニア州マウンテンビューのComputer Museum History Center向け
  29. ^ Daylight, EG (2011). 「ダイクストラの一般化への呼びかけ:再帰的手続きの到来、1950年代後半から1960年代初頭」 . The Computer Journal . 54 (11): 1756– 1772. CiteSeerX 10.1.1.366.3916 . doi : 10.1093/comjnl/bxr002 . 2013年3月12日時点のオリジナルよりアーカイブ。 
  30. ^ Kruseman Aretz, FEJ (2003年6月30日). 「Electrologica X1用ダイクストラ・ゾンネフェルトALGOL 60コンパイラ」.ソフトウェア工学(PDF) . コンピュータサイエンスの歴史. アムステルダム: Centrum Wiskunde & Informatica. 2016年3月4日時点のオリジナルよりアーカイブ(PDF) .
  31. ^ホーア、アントニー (1980). 「皇帝の古着」 . Communications of the ACM . 24 (2): 75– 83. doi : 10.1145/358549.358561 .
  32. ^コフマン、エリオット「私が本当に知る必要があることはすべてCS1で学んだ」(PDF) 。 2012年10月12日時点のオリジナル(PDF)からアーカイブ。 2012年5月20日閲覧
  33. ^ 「GOGOL – PDP-1 Algol 60 (コンピュータ言語)」。オンラインプログラミング言語歴史百科事典。2018年2月2日時点のオリジナルよりアーカイブ。 2018年2月1日閲覧
  34. ^ Mounier-Kuhn, Pierre (2014). 「フランスにおけるAlgol:普遍的なプロジェクトから組み込み文化へ」 IEEE Annals of the History of Computing . 36 (4): 6– 25. Bibcode : 2014IAHC...36d...6M . doi : 10.1109/MAHC.2014.50 . ISSN 1058-6180 . S2CID 16684090 .  
  35. ^ヴィッパーマン、ハンス=ヴィルム (1968) [1967-06-15、1966]. 「Triplex-ALGOL におけるシュランケンツァーレンの定義」。コンピューティング(ドイツ語)。(2)。カールスルーエ、ドイツ: Springer: 99–109 . doi : 10.1007/BF02277452ISSN 0010-485XS2CID 36685400  

さらに読む