Algol-60 Report

Algol-60レポートは、編集者のPeter Naurと欧米の教育者、実務者数名からなるプログラミング言語の専門家チームによって1959年から1960年にかけて書かれたものである。 この報告書の目的は、コンピュータのプログラミング言語への翻訳に適した形で、数値処理を表現するための国際的なアルゴリズム言語の完全な記述を開発することであった。 その後、言語として実装され、ヨーロッパで人気を博したが、プログラミング言語としての意図はなかった。

1960年代から1970年代初頭にかけて、多くのバージョンのプログラミング言語Algolが実装された。 また、1970年代初頭にNiklaus Wirthによって実装されたPascalや、Cなど他のいくつかのプログラミング言語の開発にもつながった。

この報告書は、参照言語、出版言語、ハードウェア表現という概念を導入している。 参照言語は、報告書、コンパイラの記述者、ハードウェアの実装のための標準であった。 それは言語の形式とその構文を規定した。 出版言語では、国による出版物の違いや、下付き文字、上付き文字、その他の表記の違いなど、印刷や書き方の違いを考慮して微調整を行い、参照言語を使用しました。 ハードウェア表現では、マシンの特性を考慮した。 参考言語が定義言語であり、出版言語とハードウェア表現はそれに翻訳可能でなければならなかった

報告書と言語の目的は、さまざまなコンピュータの概念、特にアルゴリズム設計、すなわちALGOrithmic Language 1960に曖昧さのない表現を与えることであった。

Algolは構造化言語で、while文、if-then-else-statement、および選択、反復、基本文、ブロック構造、再帰を実装する他の構造を組み込んでいる。 1957年にIBMから発売されたFORTRAN(FORMULA TRANslator)のわずか数年後に開発されたが、FORTRANにはなかった機能、すなわち再帰と構造化言語を取り入れ、プログラミング分野では大きな進歩となった。 BASICは、FORTRANのフォーマットステートメント不要版で、対話的で初歩的な計算を行うためのものであった。 BASICは1970年代から1980年代にかけて長い間君臨し、最近では全く異なる形のVisual Basicとして実装されている。

Algolの子孫にPascalがあり、これもデータ構造の実装やコンパイラの研究のための言語として長い間君臨していた。 これは生産言語ではなく、教材でした。 Cはシステムの言語であり、今でも人気のあるオブジェクト指向言語であるCの開発につながった。

アルゴル言語は、バッカス正規形またはバッカス・ナウル形式(BNF)という記法で記述されていた。 この表記法はジョン・バッカスが提案したもので、1930年代の有名な論理学者であるE・L・ポストによる表記法をベースにしている。 1957年にノーム・チョムスキーが言語学のために開発した表記法に似ており、文法を実装するために使われた。 文法とは、言語を記述するための簡潔で曖昧さのない方法である。 言語理論における形式的な表記法の使用は大きな進歩であった。

プログラミング言語の進化は目を見張るものがあったが、コンパイラ理論の進化ほどには衝撃的ではなかった。 Algol-60の報告のすぐ後、何人かのコンパイラ理論家が文法表記法を用いてコンパイラを「自動的」に実装した。 これらのコンパイラは、コンパイラ・コンパイラと呼ばれた。 同様の取り組みとして、1970年代半ばにベル研究所で字句解析器であるLexやYacc(「Yet another compiler-compiler」)が開発された。

プログラミング言語の理解

英文法には名詞句のような特定の構成要素があり、名詞と修飾語のような他の構成要素から構成されている。 プログラミング言語には、while-statementや算術式などの構成要素がある。 これらの構成要素は、言語の非終端記号やメタ記号と呼ばれる特別な記号で示される。

実際に言語の中に現れる記号は終端記号と呼ばれる。

この文法は、算術式Eが他の算術式と項Tを足したもの(E–>E T)であることを示すもので、この文法は言語を実装するためのデータ構造、または解析木から来ている。 項Tは項と因子Fを掛け合わせたものであり、T–>T*Fとなる。 最後に因子Fは最も基本的な式で、括弧でくくられた式(括弧付きE)、識別子(ユーザー定義の識別子または変数)、id、数値定数(num)から構成される。 文法は算術式の形式を与える。

例はその記法の趣を与えている。 矢印の左側の項目は右側の項目で構成される。 この場合、E,T,Fがメタ記号である。 その他の記号、、、*、(、)、この場合、idとnumが言語中に登場する。 これらは言語の言葉である。 この場合、Eは開始記号または最初の非終端記号である。 これは、定義される最も一般的な表現である。 この表記法は最初は厄介に思えるかもしれないが、言語設計、コンパイラ理論、実装において有用である。

コンピュータサイエンスにおける文法の発展は、プログラミング言語の設計と実装に大きな推進力を与えた。

アルゴリズム; 手続き型言語; プログラミングも参照。

Roger R. Flynn

参考文献

Naur, Peter, ed. “Revised Report on the Algorithmic Language Algol-60.”. Communications ACM 6, no. 1 (1963): 1-17.

Wexelblat, Richard L., ed. History of Programming Languages. New York: Academic Press, 1981.

Wexelblat, Richard L., ed. History of Programming Languages.