アルゴル60

アルゴル60
パラダイム手続き的命令的構造化された
家族アルゴル
デザイン:バッカスバウアー、グリーン、カッツマッカーシーナウルペルリスルーティシャウザー、サメルソンファン・ワインガルデンヴォーコワ、ウェグシュタインウッガー
初登場1960年; 65年前 (1960年
タイピングの規律静的強い
範囲語彙
影響を受けた
アルゴル58
影響を受けた
その後のほとんどの命令型言語(いわゆるALGOL風言語)、例えばPL/ISimulaCPLPascalAdaC

ALGOL 60 ( Algorithmic Language 1960の略) は、コンピュータプログラミング言語ALGOLファミリーの一員です。これは、コード ブロックとそれを区切るためのと のペアを導入したALGOL 58 の後継であり、構造化プログラミングの台頭における重要な進歩を表しています。ALGOL 60 は、関数定義 (再帰的に呼び出すことができる) を実装した最初の言語の 1 つです。ALGOL 60 の関数定義は、字句スコープを使用して互いにネストできます (ALGOL 60 で導入された機能)。ALGOL 60 は、 CPLPL/ISimulaBCPLBPascalCなど、他の多くの言語を生み出しました。当時のほぼすべてのコンピュータには、 ALGOL 60 の概念に基づいたシステム プログラミング言語がありました。beginend

ニクラウス・ヴィルトは、Pascalの開発に移る前に、ALGOL 60をベースに独自のALGOL Wを開発しました。Algol-Wは次世代のALGOLとなる予定でしたが、ALGOL 68委員会は、簡素化されたALGOL 60ではなく、より複雑で高度な設計を採用することを決定しました。公式のALGOLバージョンは、初版発行年にちなんで命名されています。ALGOL 68はALGOL 60とは大きく異なり、その点が批判の対象となったため、一般的に「ALGOL」はALGOL 60の方言を指します。

標準化

ALGOL 60 はCOBOLとともに、標準化を求めた最初の言語でした。

  • ISO 1538:1984 プログラミング言語 – ALGOL 60(安定化)
  • ISO/TR 1672:1977 ALGOL 基本シンボルのハードウェア表現 ... (現在は廃止)

歴史

ALGOL 60は、主に米国およびヨーロッパの計算機科学者の研究に使用されました。商用アプリケーションでの使用は、その記述に標準的な入出力機能が欠如していたことと、大手コンピュータベンダーがこの言語に興味を示さなかったことが妨げとなりました。しかしながら、ALGOL 60はアルゴリズムの公開における標準となり、その後の言語開発に大きな影響を与えました。

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

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

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

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

この言語には元々再帰が含まれていませんでした。委員会の一部メンバーの意向に反して、仕様策定の最終段階で再帰が追加されたのです。[3]

1962年4月、最初の報告書の著者数名が会合を開き、発生した問題を解決した。彼らの作業の結果、「アルゴリズム言語ALGOL 60に関する改訂報告書」[4]が出版された。

さらなる明確化とI/O手順の組み込みは、IFIP技術委員会2のワーキンググループ2.1によって行われました。これらの取り組みは、1975年に「アルゴリズム言語ALGOL 60の修正レポート」として出版されました[5]

ALGOL 60は、その後に続く多くの言語に影響を与えました。トニー・ホーアは次のように述べています。「これは時代をはるかに先取りした言語であり、先行言語だけでなく、ほぼすべての後継言語よりも優れたものでした。」[6] [7]

ALGOL 60 実装のタイムライン

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

名前著者説明ターゲットCPU
X1 アルゴル 601960年8月[9]エドガー・W・ダイクストラとヤープ・A・ゾンネフェルト オランダALGOL 60の最初の実装[10]エレクトロロジカ X1
アルゴル1960年[11]エドガー・T・アイアンズ アメリカ合衆国アルゴル60CDC 1604
バローズ・アルゴル
(いくつかの亜種)
1961バローズ・コーポレーション(ホーアダイクストラが参加) アメリカ合衆国Burroughs(現在はUnisys MCPベース)コンピュータの基礎バローズの大規模システム
と中規模システム
ALGOLのケース1961 アメリカ合衆国SimulaはもともとCase ALGOLのシミュレーション拡張として契約されました。ユニバック 1107
ゴーゴリ1961ウィリアム・M・マッキーマン アメリカ合衆国ODINタイムシェアリングシステム用PDP-1
ダスクアルゴル1961ピーター・ナウアヨーン・イェンセン デンマークアルゴル60RegnecentralenのDASK
スミルアルゴル1962トルギル・エクマン、カール=エリック・フレーベルグ スウェーデンアルゴル60ルンド大学SMIL
ギア・アルゴル1962ピーター・ナウアヨーン・イェンセン デンマークアルゴル60RegnecentralenのGIER
ダートマスALGOL 30 [12]1962トーマス・ユージン・カーツ、スティーブン・J・ガーランド、ロバート・F・ハーグレイヴス、アンソニー・W・ナップ、ホルヘ・ラセル アメリカ合衆国アルゴル60LGP-30
アルコル・マインツ 20021962ウルスラ・ヒル=サメルソン、ハンス・ラングマック ドイツシーメンス 2002
ALCOR-イリノイ 70901962年
[13] [14]
マンフレッド・パウル、ハンス・リュディガー・ヴィーレ、デヴィッド・グリースルドルフ・バイエル アメリカ西ドイツ ALGOL 60イリノイ大学ミュンヘン工科大学で1962年から1964年にかけて
導入
IBM 7090
USS 90 アルゴル1962L. ペトローネ イタリア
エリオット・アルゴル1962CARホーア 英国1980年のチューリング賞講演で議論されたエリオット803とエリオット503
アルゴル601962ローランド・ストロベル[15] 東ドイツベルリンのドイツ科学アカデミー応用数学研究所によって実施されたツァイス・レヒェンオートマット ZRA 1
アルゴル601962ベルナール・ヴォーコワ、ルイ・ボリエ[16] フランスInstitut d'Informatique et Mathématiques Appliquées de Grenoble (IMAG) および Compagnie des Machines Bullブルガンマ60
アルゴル翻訳者1962G. ファン デル メイとWL ファン デル ポール オランダStaatsbedrijf der Posterijen、電信電話ゼブラ
キッズグローブ・アルゴル1963FGダンカン 英国イングリッシュ・エレクトリック・カンパニー KDF9
頭皮[17]1963スティーブン・J・ガーランド、アンソニー・W・ナップトーマス・ユージン・カーツ アメリカ合衆国ALGOL 60 のサブセット用の自己完結型 ALgol プロセッサLGP-30
ヴァルゴル1963ヴァル・ショレ アメリカ合衆国META IIコンパイラのテスト
FP6000 アルゴル1963ロジャー・ムーア カナダサスカチュワン電力公社のために書かれたFP6000
砥石1964ブライアン・ランデルとローフォード・ジョン・ラッセル 英国イングリッシュ・エレクトリック社の原子力部門。フェランティ・ペガサス、国立物理学研究所ACEイングリッシュ・エレクトリックDEUCE実装の前身。イングリッシュ・エレクトリック・カンパニーKDF9
アルゴル601964ジャン=クロード・ブサール[18] フランスグルノーブル情報数学アップリケ研究所 [fr]IBM 7090
アルゴル天才1964ボリエ・ランゲフォース スウェーデンCOBOL風のデータレコードとI/Oを追加データサーブD-21
アルゴル601965クロード・ペア [fr] [19] フランスナンシー科学学部計算センターIBM 1620
ダートマスALGOL1965スティーブン・J・ガーランド、サー・ブラムソン、ロン・マーティン アメリカ合衆国アルゴル60GE 235ダートマスタイムシェアリングシステム
ニューアルゴル1965 ノルウェーユニバック
アルゴル601965年[20]FEJ クルーゼマン アレッツ オランダEL-X8用MCコンパイラエレクトロロジカ X8
アルゲック1965 ソビエト連邦ミンスク22АЛГЭКは、ALGOL 60とCOBOLサポートに基づいており、経済的なタスクに適しています。
マルゴル1966公開。 A. ヴィイル、M コトリ、M. ラケンディ、 エストニア共和国ミンスク22
アルガム1967GAMS グループ (ГАМС, группа автоматизации программирования для мазин среднего класса)、コメコン科学アカデミーの協力コメコンミンスク-22、後にES EVMBESM
アルゴル/ザム1967 ポーランドポーランドのZAMコンピューター
中国のアルゴル1972 中国記号システムで表現された漢字
DG/L1972 アメリカ合衆国DG Eclipseファミリーのコンピュータ
ナス1990エリック・シェーンフェルダー ドイツ通訳者LinuxとMS Windows
マースト2000アンドリュー・マコーリン ロシアALGOL 60 から C へのトランスレータGNU コンパイラコレクションでサポートされているすべての CPU。MARST は GNU プロジェクトの一部です。

Burroughs 方言には、ESPOLNEWPなどの特殊なシステム プログラミング方言が含まれていました。

プロパティ

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

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

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

言語レベル

ALGOL 60レポートでは、3つの異なるレベルの言語、すなわち参照言語、出版言語、そして複数のハードウェア表現が認識されています。参照言語と出版言語には予約語はありませんが、レポートでは標準関数用の識別子をいくつか予約することを 推奨しています[22] 。

報告書ではハードウェア表現について簡潔に説明している。実装によって、下線部の独立した基本シンボルのハードウェア表現は異なる[23]。

  1. 予約語
  2. ストロッピング

ALGOL 60 予約語と制限付き識別子

修正レポートには 24 個の予約語があります。

  • ARRAY
  • BEGIN
  • BOOLEAN
  • COMMENT
  • DO
  • ELSE
  • END
  • FALSE
  • FOR
  • GOTO
  • IF
  • INTEGER
  • LABEL
  • OWN
  • PROCEDURE
  • REAL
  • STEP
  • STRING
  • SWITCH
  • THEN
  • TRUE
  • UNTIL
  • VALUE
  • WHILE

標準のBurroughs Large Systemsサブ言語には、このような予約語が 35 個あります。

  • ALPHA
  • ARRAY
  • BEGIN
  • BOOLEAN
  • COMMENT
  • CONTINUE
  • DIRECT
  • DO
  • DOUBLE
  • ELSE
  • END
  • EVENT
  • FALSE
  • FILE
  • FOR
  • FORMAT
  • GO
  • IF
  • INTEGER
  • LABEL
  • LIST
  • LONG
  • OWN
  • POINTER
  • PROCEDURE
  • REAL
  • STEP
  • SWITCH
  • TASK
  • THEN
  • TRUE
  • UNTIL
  • VALUE
  • WHILE
  • ZIP

標準の Burroughs Large Systems サブ言語には、このような制限付き識別子が 71 個あります。

  • ACCEPT
  • AND
  • ATTACH
  • BY
  • CALL
  • CASE
  • CAUSE
  • CLOSE
  • DEALLOCATE
  • DEFINE
  • DETACH
  • DISABLE
  • DISPLAY
  • DIV
  • DUMP
  • ENABLE
  • EQL
  • EQV
  • EXCHANGE
  • EXTERNAL
  • FILL
  • FORWARD
  • GEQ
  • GTR
  • IMP
  • IN
  • INTERRUPT
  • IS
  • LB
  • LEQ
  • LIBERATE
  • LINE
  • LOCK
  • LSS
  • MERGE
  • MOD
  • MONITOR
  • MUX
  • NEQ
  • NO
  • NOT
  • ON
  • OPEN
  • OR
  • OUT
  • PICTURE
  • PROCESS
  • PROCURE
  • PROGRAMDUMP
  • RB
  • READ
  • RELEASE
  • REPLACE
  • RESET
  • RESIZE
  • REWIND
  • RUN
  • SCAN
  • SEEK
  • SET
  • SKIP
  • SORT
  • SPACE
  • SWAP
  • THRU
  • TIMES
  • TO
  • WAIT
  • WHEN
  • WITH
  • WRITE

また、すべての組み込み関数の名前も表示されます。

標準演算子

優先度オペレーター
最初の算数初め↑(パワー)
2番×、/(実数)、÷(整数)
三番目+、-
2番<、≤、=、≥、>、≠
三番目¬(ない)
4番目∧ (そして)
5番目∨ (または)
6番目⊃(含意)
7番目≡(同値)

例と移植性の問題

コードサンプルの比較

アルゴル60

手順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 の終了終了;

太字のテキストの記述方法は実装によって異なります。一部の実装では、上記のintegerの代わりに引用符を含む「INTEGER」という単語を使用しこれを特別なキーワードとして指定する必要があります。

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

浮動小数点アルゴリズムテスト リアル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' 終わり' 終わり'

ALGOL 60ファミリー

ALGOL 60にはI/O機能がなかったため、 ALGOLには移植性の高いHello Worldプログラムはありません。以下のプログラムは、Unisys Aシリーズメインフレーム用のALGOL実装でコンパイル・実行可能であり(現在も実行可能です)、ミシガン大学ディアボーン校コンピュータ・情報科学科の「Hello world! ALGOLサンプルプログラム」ページ[26]にある「言語ガイド」 [25]から抜粋したコードを簡略化したものです。

始める ファイル F(KIND=REMOTE); EBCDIC配列E[0:11]; E を "HELLO WORLD!" に置き換えます。 WRITE(F, *, E);終わり。

ここで*などはFORTRANで使用されるフォーマット指定を表す。例[27]

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

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

Display ステートメントを使用したさらに簡単なプログラム:

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バージョンでは、紙テープまたはパンチカードからの入力が可能でした。紙テープの「フル」モードでは小文字が使用可能でした。出力はラインプリンタで行われました。「(」、「)」、および%の使用に注意してください。[28]

 「プログラム」(こんにちは) '始める' 「コメント」の開始引用符は「(」、終了引用符は「)」、印刷可能なスペースは スペースは無視されるため、% と記述する必要があります。 テキストを書き込みます('('HELLO%WORLD')'); '終わり' '仕上げる'

この例では、outstring変更されたレポートで定義されている手順を使用します。

始める コメント 修正レポートのI/Oを使用します。GNU Marstコンパイラでコンパイルおよび実行します。 出力文字列 (1, "hello world!\n") 終わり

飛躍

LEAPは、ALGOL 60プログラミング言語の拡張であり、トリプル(三つ組)の連想記憶を提供します。トリプル内の三つの項目は、オブジェクトの属性が特定の値を持つという連想を表します。LEAPは、1967年にジェローム・フェルドマン(カリフォルニア大学バークレー校)とポール・ロブナー(MITリンカーン研究所)によって開発されました。LEAPはSAILにも実装されています。

参照

参考文献

  1. ^ Knuth, Donald E. (1964年12月). 「バッカス正規形とバッカスナウア形」. Communications of the ACM . 7 (12): 735–6 . doi : 10.1145/355588.365140 . S2CID  47537431.
  2. ^ ACM賞受賞歴 / ピーター・ナウア、2005年
  3. ^ van Emden, Maarten (2014). 「再帰がプログラミングにどう取り入れられたか:陰謀、裏切り、そして高度なプログラミング言語セマンティクスの物語」A Programmer's Place .
  4. ^ 「アルゴリズム言語ALGOL 60の改訂報告書」。
  5. ^ 「アルゴリズム言語ALGOL 60の修正レポート」(PDF)
  6. ^ Hoare, CAR (1973年12月). 「プログラミング言語設計のヒント」(PDF) . p. 27.(この発言は、最初の ALGOL 60コンパイラの実装にも関わったEdsger W. Dijkstra の発言だと誤って解釈されることがあります。)
  7. ^ Abelson, Hal ; Dybvig, RK ; et al. Rees, Jonathan; Clinger, William (eds.). 「アルゴリズム言語スキームに関する改訂版(3)報告書 (ALGOL 60の記念に捧ぐ)」 . 2009年10月20日閲覧
  8. ^ コンピュータ言語百科事典 2011年9月27日アーカイブ、Wayback Machine
  9. ^ Daylight, EG (2011). 「ダイクストラの一般化へのスローガン:再帰的手続きの出現、1950年代後半から1960年代初頭」 .コンピュータジャーナル. 54 (11): 1756– 1772. doi :10.1093/comjnl/bxr002.
  10. ^ Kruseman Aretz, FEJ (2003年6月30日). 「Electrologica X1用ダイクストラ・ゾンネフェルトALGOL 60コンパイラ」(PDF) .ソフトウェア工学. コンピュータサイエンスの歴史. アムステルダム: Centrum Wiskunde & Informatica. ISSN  1386-3711. 2004年1月17日時点のオリジナル(PDF)からのアーカイブ。
  11. ^ Irons, Edgar T., A syntax directed compiler for ALGOL 60, Communications of the ACM, Vol. 4, p. 51. (1961年1月)
  12. ^ カーツ 1978.
  13. ^ Gries, D.; Paul, M.; Wiehle, H. R. (1965). 「ALCOR Illinois 7090で使用されたいくつかの技術」Communications of the ACM . 8 (8): 496– 500. doi : 10.1145/365474.365511 . S2CID  18365024.
  14. ^ Bayer, R.; Gries, D.; Paul, M.; Wiehle, HR (1967). 「ALCOR Illinois 7090/7094号機の死後ダンプ」Communications of the ACM . 10 (12): 804– 808. doi : 10.1145/363848.363866 . S2CID  3783605.
  15. ^ Rechenautomaten mit Trommelspeicher、Förderverein der Technischen Sammlung ドレスデン
  16. ^ ムニエ=キューン、ピエール (2014). 「フランスにおけるアルゴル:普遍的なプロジェクトから組み込み文化へ」. IEEE Annals of the History of Computing . 36 (4): 6– 25. doi :10.1109/MAHC.2014.50. ISSN  1058-6180.
  17. ^ カーツ 1978年、517ページ。
  18. ^ ジャン=クロード、ブサール (1964 年 6 月)。 Etude et réalisation d'un compilateur Algol60 sur Calculur éléctronique du type IBM 7090/94 et 7040/44 [電子計算機 IBM 7090/94 および 7040/44 上のコンパイラー Algol60 の設計と実装] (PhD) (フランス語)。ジョゼフ フーリエ大学 - グルノーブル I.
  19. ^ クロード・ペア (1965 年 4 月 27 日)。ALGOL のコンパイルに関する説明欧州地域 1620 ユーザー グループ。 IBM。
  20. ^ クルーゼマン・アレツ、FEJ (1973)。Algol 60 の Algol 60 コンパイラ。数学センター地区。アムステルダム: 数学センター。
  21. ^ Aho, Alfred V. ; Sethi, Ravi ; Ullman, Jeffrey D. (1986). Compilers: Principles, Techniques, and Tools (第1版). Addison-Wesley. ISBN 978-0-201-10194-2、第7.5節およびその中の参照
  22. ^ Naur et al. 1963, 3.2.4. 標準関数
  23. ^ Naur et al. 1963, 2.1. 文字:(1) 特に注意すべき点は、本文全体を通して、下線(ここでは下線付きと表記する;NL)は独立した基本記号を定義するために使用されていることである(2.2.2節および2.3節参照)。これらの記号は、それらを構成する個々の文字とは無関係であると理解される。本報告書では、下線は他の目的では使用されない。
  24. ^ 「803 ALGOL」、 Elliott 803 ALGOLのマニュアル
  25. ^ “ALGOLプログラミング言語”. www.engin.umd.umich.edu . 2010年2月10日時点のオリジナルよりアーカイブ2022年1月11日閲覧。
  26. ^ “Hello world! サンプルプログラム”. www.engin.umd.umich.edu . 2010年2月4日時点のオリジナルよりアーカイブ2022年1月11日閲覧。
  27. ^ Fortran#"Hello, World!" の例
  28. ^ 「ICL 1900シリーズ:Algol言語」ICL技術出版物3340、1965年。

参考文献

さらに読む

  • Dijkstra, Edsger W. (1961). 「ALGOL 60 翻訳:X1 用 ALGOL 60 トランスレータと ALGOL 60 用トランスレータの作成(PDF) (技術レポート). アムステルダム: Mathematisch Centrum. 35.
  • ブライアン・ランデル、ローフォード・ジョン・ラッセル (1964). 『ALGOL 60 実装:コンピュータ上でのALGOL 60 プログラムの翻訳と利用』アカデミック・プレス. OCLC  526731.Whetstoneコンパイラの設計。コンパイラの実装に関する初期に公開された記述の一つ。関連論文「Whetstone Algol Revisited」およびBrian Randell著「Whetstone KDF9 ALGOL Translator」を参照。
  • グース、ゲルハルト[ドイツ語] (2017-08-07)。 Geschichte der deutschsprachigen Informatik - Programmierspra​​chen und Übersetzerbau [ドイツ語圏における情報学の歴史 - プログラミング言語とコンパイラー設計] (PDF) (ドイツ語)。カールスルーエ、ドイツ: Fakultät für Informatik、カールスルーエ工科大学(KIT)。2022-05-19 にオリジナルからアーカイブ(PDF)されました2022 年 11 月 14 日に取得(11ページ)
  • アルゴリズム言語ALGOL 60の改訂報告書(ピーター・ナウア他著)ALGOLの定義
  • ALGOL 60 の BNF 構文の概要
  • 「皇帝の古着」 – ホーアの1980年のACMチューリング賞受賞スピーチ。ALGOLの歴史と彼の関わりについて語られている。
  • FP6000 用の ALGOL 60 の実装。Wayback Machineに 2020-07-25 にアーカイブ。いくつかの実装の問題に関する議論。
  • Naur, Peter (1978年8月). 「ALGOL 60開発の最終段階におけるヨーロッパ側」 . ACM SIGPLAN Notices . 13 (8): 15– 44. doi :10.1145/960118.808370. S2CID  15552479.
  • エディンバラ大学は、当初AtlasからKDF-9にブートストラップされたAtlas Autocodeコンパイラをベースに、Algol60(後にAlgol60Mにアップデート)用のコンパイラを作成しました。エディンバラのコンパイラは、ICL1900、ICL4/75(IBM360クローン)、およびICL2900用のコードを生成しました。以下は、Algol60のBNF(2020-05-15にWayback Machineでアーカイブ)とICL2900コンパイラのソース(2020-05-15にWayback Machineでアーカイブ)です。ライブラリドキュメント(2020-05-15にWayback Machineでアーカイブ)およびBrian Wichmannのテストを含む相当量のテストスイート(2020-05-15にWayback Machineでアーカイブ)も参照してください。 Archived 2020-05-15 at the Wayback Machineまた、かなり表面的な Algol60 から Atlas Autocode へのソースレベル トランスレータ Archived 2020-05-15 at the Wayback Machineもあります。
  • Eric S. Raymondの Retrocomputing Museum には、C で書かれた NASE ALGOL 60 インタープリターへのリンクなどもあります。
  • NASEインタープリタ
  • B5000とそこにいた人々の物語:専用ALGOLコンピュータ[1]、[2]
  • Bottenbruch, Hermann (1961). ALGOL 60の構造と利用(報告書). doi : 10.2172/4020495 . OSTI  4020495.
  • NUMAL ALGOL 60 の数値手続きのライブラリ。The Stichting Centrum Wiskunde & Informatica ( Stichting Mathematisch Centrum の法的後継者) の法的所有者によって開発されました。
  • ALGOL 60 リソース: トランスレータ、ドキュメント、プログラム
  • ラケットに含まれるALGOL 60
「https://en.wikipedia.org/w/index.php?title=ALGOL_60&oldid=1321506876」より取得