ALGOLに関する世界観です。昔の言語やメインフレームや古いコンピュータも参照のこと。
その後の言語の多くが「ALGOL系」と呼ばれるほど、成功した言語。30年以上、アルゴリズムを記述するための事実上の標準言語として使われた。
「BEGINとENDでブロックを囲む」という制御構造のブロックを導入し、ブロックをネスト可能(入れ子にできる)。
CとC++の関係によく似ているとして引き合いに出されるのが、ALGOL60とALGOL68。
広く使われていたALGOL60の後継版として裁定されたALGOL68だが、その仕様はとても巨大だった。これをCの拡張版であるC++と対比して、昔のプログラミング言語の書籍などにはジョークとして記されるほどである。
(詳しくはエキスパートCプログラミング―知られざるCの深層 (Ascii books)が参考になります。)
ALGOLでは、ブロックをBEGINとENDで囲んでネストできます。なので、
BEGIN INTEGER i, j, x, y; i := j := 0; IF i = 0 THEN BEGIN x := 0; IF j = 0 THEN BEGIN y := 0; END END END
のようなコードが可能となります。このように、ALGOLは早くから行番号ではなく自由記述方式を導入していました。
実際には、IF文の終端はFI、FOR文とともに使うDOの終端はODで閉じることも多いです。IF~ELIF~ELSE~FIも使えます。
また、ALGOLでは言語仕様として入出力命令が仕様化されていません。入出力命令は関数であり、機種によって異なります。なので、その機種で動く入出力命令が、別の機種でも動くとは限りません。
以下はALGOL-68によるFizzBuzz。剰余演算はMODで行う。
2024.08.26