ALGOL

ALGOL
ALGOL
ALGOLのロゴ
パラダイム 手続き型プログラミング構造化プログラミング命令型プログラミング ウィキデータを編集
登場時期 1958年 (66年前) (1958)
設計者 バウアー英語版ルティシュハウザーサメルソン英語版バッカスパリスナウアファン・ワインハールデン英語版マッカーシー
型付け 強い静的型付け
方言 ALGOL 60、ALGOL 68
影響を受けた言語 FORTRAN ウィキデータを編集
影響を与えた言語 PascalC言語PL/ISimulaCPLAdaMathematica
テンプレートを表示

ALGOLアルゴル)は、命令型プログラミング言語ファミリーの1つ[注 1]。名前「ALGOL」は「アルゴリズム言語」を意味する英語「algorithmic language」に由来する[1]。1950年代中ごろに開発され、多くの言語に影響を及ぼし、ACMや教科書や学術論文などでアルゴリズム記述のデファクトスタンダードとして30年以上使われた[2]。現代の多くの言語が「ALGOL系」あるいは「ALGOL風」(algol-like) とされているという意味で[3]、ほぼ同世代の高水準言語である FORTRANLISPCOBOL に比べて最も成功したと言うこともできる。FORTRANで明らかとなった問題を防ぐよう設計され、BCPLBPascalSimulaCといった様々なプログラミング言語に影響を与えた。ALGOLは「beginend で囲む」という構文によるブロック構造を導入し、制御構造を自在に入れ子(ネスト)にできる初の広まった言語となった。また構文の形式的定義を真剣に検討した最初のプログラミング言語でもあり、"Algol 60 Report"[4] で導入されたバッカス・ナウア記法は、その後のコンピュータ言語等の構文の形式的定義を示す手法として(プログラミング言語だけに限られず)定番の記法となっている。

主なバージョン

次の3つの主要な仕様が存在する。後ろについている数は最初に発表された年を表している。

ALGOL 58英語版
当初 IAL (International Algebraic Language) という名称で提案された[5]
ALGOL 60
1960年中ごろに X1 ALGOL 60 として実装されたのが最初で、1963年に改訂された[4][6]
ALGOL 68英語版
1968年に発表され、1973年に改訂された[7]。可変配列、スライス、並列性、演算子識別、その他の拡張可能な機能などが新たに導入されている。

IAL (ALGOL 58) は後の様々なプログラミング言語(いわゆるALGOL系言語)に大きな影響を及ぼし、一般にそれらの先祖とみなされている。また、ALGOLの仕様で示された中間コードALGOL object code と呼ばれ、単純でコンパクトなスタックベースの命令セットアーキテクチャであり、計算機科学の分野でコンパイラ構築の教育に使われ、他の高水準言語の実装にも使われた。

歴史

1950年代後半、FORTRAN等の言語が米国で作られていたのに対抗して、ヨーロッパの学術研究者が世界共通のプログラミング言語として開発した。ALGOLは1958年チューリッヒ工科大学で行われた国際会議で提案されたものが起源とされる。現代のプログラミング言語と比べて著しく異なる点のひとつに、reference syntax、publication syntax、implementation syntax という3種類の構文がある、ということが挙げられる。当時は文字コードの標準化以前であり、また数学の数式のように印刷したいという要望などもあったため、そのようなことになっている(違いは具象の違いであり、抽象構文は共通である)。これにより、キーワード名や小数点に使用する記号(カンマかピリオドか)を選ぶことなどもできた。

ALGOL 58 は主に欧米の計算機科学者がアルゴリズム研究開発に用いた。商用アプリケーションにはあまり採用されていない。その原因は入出力機能が標準仕様に含まれていなかったためであり、またバロース以外の大手コンピュータメーカーがこの言語に興味を示さなかったためである。

ジョン・バッカスは ALGOL 58 を主たる対象としてプログラミング言語の文法を記述するバッカス正規記法 (Bakus normal form) を開発した。ピーター・ナウアはそれを ALGOL 60 向けに拡張・改訂。ドナルド・クヌースバッカス・ナウア記法 (Bakus-Naur Form) と改称することを提案した[8]

ピーター・ナウアは ALGOL Bulletin という学術誌の編集者としてこの言語の国際的議論に参加し、1959年11月にヨーロッパの言語設計グループの一員に選ばれた。そして "Algol 60 Report" の編集者となり、1960年1月にパリで開催された ALGOL 60 についての国際会議の結果を発表した[9]

このパリでの会議(1960年1月1日から16日まで開催)には以下の人々が参加している。

ヨーロッパからの参加者
フリードリッヒ・L・バウアー英語版ピーター・ナウアハインツ・ルティシュハウザークラウス・サメルソン英語版、Bernard Vauquois、アドリアン・ファン・ワインハールデン英語版、Michael Woodger
アメリカからの参加者
ジョン・バッカス、Julien Green、Charles Katz、ジョン・マッカーシーアラン・パリス、Joseph Henry Wegstein

アラン・パリスはこの会議について、「会合は疲れさせるもので、果てしなく、活発だった。ある人のよいアイデアが悪いアイデアと共に却下されると、その人は機嫌を損ねた。それにもかかわらず、期間中ずっと勤勉さが持続した。13人の作用は素晴らしいものだった」と評している。

ALGOL 60 はその後の多数の言語に影響を与えた。アントニー・ホーアは ALGOL 60 を「時代に先行していて、それまでの言語の改良だっただけでなく、その後のほぼ全ての後継者の先駆者となった言語」と評している[10]SchemeというLisp方言の設計者は、その静的スコープは ALGOL からの影響だと述べている。またSchemeの仕様の名称 "Revised Report on the Algorithmic Language Scheme" もALGOLへのオマージュである[11]

1968年には、後継として ALGOL 68 が開発された。ALGOL 68 では、2段階文法のワインハールデン記法で文法が記述された。ALGOL 60 の後継言語制定に至るまでの候補としてニクラウス・ヴィルトALGOL W、日本で設計された ALGOL N 等もあったが最終的に ALGOL 68 が後継として制定された。しかし、あまりに複雑かつ巨大な仕様のため ALGOL 68 コンパイラの実装は難しく、またワインハールデン記法が難解なこともあり実用的には、ほとんど普及しなかった。そのため単に ALGOL と言った場合にはALGOL 68 ではなくて ALGOL 60 やその方言を指すのが一般的である。

言語の標準化としては、IFIP TC2/WG2.1 において ALGOL 60 が制定された。その後、遅々として標準化作業はすすまず、1984年になって、ISOALGOL 60 相当の言語が標準化されたのみである。日本では、かつて ALGOL 60 の言語規格と入出力ライブラリ規格をそれぞれJIS規格で制定していたが (JIS C 6210-6219)、1983年(昭和58年)9月1日付で廃止された。

ALGOLとプログラミング言語研究

ピーター・ランディン英語版が指摘したように、ALGOLは命令型の副作用と(名前渡しの)ラムダ計算を一体に結合した初の言語である。この言語の最も見事な定式化はおそらくジョン・C・レイノルズ英語版によるもので、その文法および意味論の純粋さをよく表している。レイノルズの「理想化した」ALGOLも名前渡しの言語のコンテキストにおける「ローカル」な副作用の適切さについて説得力のある方法論的主張を行っており、MLのような値渡しの言語が使用する「グローバル」な副作用と対比される。ALGOLの概念的完全性により、PCF英語版やMLと共に意味論研究の主な対象とされるようになった[12]

実装例

これまでに ALGOL 60 の強化版、拡張版、派生版、サブ言語などが少なくとも70ほど存在した[13]

ALGOL 60 の実装に関する問題は、Nicholas Enticknap と Pat Woodroffe の書いた "The early days of Algol" で詳しく議論されている。

ALGOL 60の実装例
名称 作者 説明 対象システム
ZMMD-implementation 1958年 Bauer, Rutishauser, Samelson, Bottenbruch ドイツ ALGOL 58 の実装 Z22
(後にツーゼのZ23[14]向けに ALGOL 60 コンパイラを提供している)
X1 ALGOL 60 1960年8月[15] エドガー・ダイクストラ、 Jaap A. Zonneveld オランダ ALGOL 60 の世界初の実装[16] Electrologica X1
Elliott ALGOL 1960年代 アントニー・ホーア イギリス Elliott 803 & Elliott 503
JOVIAL 1960年 Jules Schwarz アメリカ Ada以前の DOD HOL 各種
Burroughs Algol
(いくつか派生がある)
1961年 バロース(ホーアやダイクストラも参加) アメリカ バロースのメインフレーム(およびユニシスの後継シリーズ)の基盤 バロースの大型機
および中型機
Case ALGOL 1961年 ケース・ウェスタン・リザーブ大学[17] アメリカ Simulaは Case ALGOL のシミュレーション向け拡張として開発された。 UNIVAC 1107
GOGOL 1961年 Bill McKeeman アメリカ ODINタイムシェアリングシステム向け PDP-1
RegneCentralen ALGOL 1961年 ピーター・ナウア、Jørn Jensen デンマーク ALGOL 60 の完全実装 DASK (Regnecentralen)
Dartmouth ALGOL 30 1962年 トーマス・ユージン・カーツ アメリカ LGP-30
USS 90 Algol 1962年 L. Petrone イタリア
Algol Translator 1962年 G. van der Mey, W.L. van der Poel オランダ オランダ国営電話会社 ZEBRA
Kidsgrove Algol 1963年 F. G. Duncan イギリス イングリッシュ・エレクトリック KDF9
VALGOL 1963年 Val Schorre アメリカ META II コンパイラジェネレータのテストとして開発
Whetstone 1964年 Brian Randell, L J Russell イギリス イングリッシュ・エレクトリック KDF9
NU ALGOL 1965年 ノルウェー UNIVAC
ALGEK 1965年 ソビエト連邦 ALGOL 60 とCOBOLに基づいた経済タスク用 Minsk-22
MALGOL 1966年 publ. A. Viil, M Kotli & M. Rakhendi エストニア・ソビエト社会主義共和国 Minsk-22
ALGAMS 1967年 GAMS(中型機のための自動プログラミング)グループとコメコン科学アカデミーの共同開発 コメコン Minsk-22、後に ES EVMBESM
ALGOL/ZAM 1967年 ポーランド ZAM(ポーランド製)
Simula 67 1967年 オーレ=ヨハン・ダールクリステン・ニゴール ノルウェー ALGOL 60 にオブジェクトクラスを導入 UNIVAC 1107
Chinese Algol 1972年 中国 漢字を表示可能
DG/L 1972年 データゼネラル アメリカ Eclipseファミリ
S-algol 1979年 Ron Morrison イギリス 直交データ型を追加。教育向け PDP-11(後に Java VM 上にも実装)

特徴

同時期の FORTRANCOBOL と比べると、これらの言語が特定のハードウェア上で特定の目的を効率良くこなすための一種のドメイン特化型言語から始まったのに対し、ALGOL はいったんハードウェアの特性は置いておき、抽象的なアルゴリズムを手続きとして記述する事を目指している。初期の ALGOL 60 仕様では入出力手続きすら標準化されていなかった点から見ても、できる限り言語コアの抽象度を上げようとしていたことは想像に難くない。FORTRANCOBOL が直系子孫以外に余り枝分かれをしていないのに対して、ALGOL 系が大きな多様性を獲得したのもこの抽象性による所が大と言える。従って ALGOL の策定をもって、ソフトウェアのモジュール化、計算機の汎用化が始まった瞬間と捉えても差し支えないであろう。

ALGOL 60 は、手続き型言語として再帰呼び出しが可能な初めてのプログラミング言語である。

公式の ALGOL 60 では入出力機能が定義されていなかったため、実際の処理系ではそれぞれに互換性のない方法で実装された。それに対して、ALGOL 68では transput[注 2]のための豊富なライブラリが提供された。

ALGOL 60 では引数渡しに2種類の評価戦略が定義されている。一般的な値渡しALGOL に特徴的な名前渡しである。名前渡しは実際のところ、手続き型言語では扱いがかなり難しい。例えば、2つの引数の値を入れ替える手続きを書いたとき、ある整数変数とその整数変数を添え字とする配列要素をその引数として渡すことができない[18]。すなわち swap(i, A[i]) という場合である(詳しくは引数#名前渡しを参照)。乱数関数を渡す場合にも問題が生じる。

しかし、ALGOLの設計者は名前渡しをデフォルトとした。また、言語処理系実装者たちは名前渡しの実現にThunk(サンク)英語版という興味深い技法を編み出した。現在、素朴な(ALGOLのような)名前渡しは完全に廃れたが、サンクは遅延(非正格)評価を実装する一般的な手法として知られる。ドナルド・クヌースは処理系が「再帰呼び出しと非局所的参照」を正しく実装しているかを評価するman or boy test英語版を考案した。このテストには名前呼び出しの例が含まれている(クヌースらは他にも、名前渡しの「悪用」とでも言うべきJensen's Device英語版と後に呼ばれるようになるような技法の一例を示した "ALGOL 60 Confidential"[19]など、仕様のコーナーケースを暴き、コンピュータ・プログラミング言語設計の難しさをあらわにした)。

ALGOL の影響として、後の言語のうちの最も多くに影響があるものは、BEGIN/END(C 言語などでは{ })の入れ子によるブロック構造化、つまり次のような典型的な形の記法であろう。

 BEGIN
   X := 1 ;
   IF (X > 0) THEN
     BEGIN
       :
     END
 END

俗に「ALGOL 文法」といった場合は、このブロック構造化記法のことを指していることがある(C言語のように他の記号を使うものも含めて指していることもあれば、そうではなくてBEGIN/ENDのようにキーワードを使う、という意味で言っていることもある)。後の静的スコープの言語についても、ALGOLからの影響と言われることがある。

例と移植性問題

コード例の比較

ALGOL 60

次のコードは ALGOL 60 で n × m の2次元配列の中から絶対値が最大の要素を求め、その絶対値をyに、添え字をikに格納する手続きを記述したものである。なお、コード中で強調表示されている予約語の記法は処理系に依存する。例えば "INTEGER" は "integer" と書かれることもある(ストロッピング英語版)。

 PROCEDURE Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k) ;
     VALUE n, m ; ARRAY a ; INTEGER n, m, i, k ; REAL y ;
 COMMENT The absolute greatest element of the matrix a, of size n by m
     is transferred to y, and the subscripts of this element to i and k ;
 BEGIN
     INTEGER 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
                 END
 END Absmax

次の例は Elliott 803 ALGOL[20] で表を生成する方法を示したものである。

 FLOATING POINT ALGOL TEST'
 BEGIN REAL A,B,C,D'
 
 READ D'
 
 FOR A:= 0.0 STEP D UNTIL 6.3 DO
 BEGIN
   PRINT PUNCH(3),££L??'
   B := SIN(A)'
   C := COS(A)'
   PRINT PUNCH(3),SAMELINE,ALIGNED(1,6),A,B,C'
 END'
 END'

PUNCH(3) は紙テープのさん孔装置ではなくテレタイプ端末のプリンターへ出力を送るものである。SAMELINE は引数間で通常行われる復帰改行を抑制する。ALIGNED(1,6) は出力を小数点以上を1文字、小数点以下を6文字とするようフォーマットする。

ALGOL 68

次のコード例は上掲の ALGOL 60 のコード例の ALGOL 68 版である。

ALGOL 68 でも ALGOL 60 のストロッピング英語版を再利用している。

 PROC ABS max = ([,]real a, REF real y, REF int i, k)real:
 COMMENT The absolute greatest element of the matrix a, of size ⌈a by 2⌈a
 is transferred to y, and the subscripts of this element to i and k; COMMENT
 BEGIN
    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
 END # abs max #

なお、lower (⌊) と upper (⌈) は配列の境界を示し、配列を走査する際の添え字の範囲指定に使える。

 floating point algol68 test:
 (
   real a,b,c,d;
   
   printf(($pg$,"Enter d:"));
   read(d);
   
   FOR step FROM 0 WHILE a:=step*d; a <= 2*pi DO
     printf($l$);
     b := sin(a);
     c := cos(a);
     printf(($z-d.6d$,a,b,c))
   OD
 )

printf はファイル stand out に出力を送る。printf($p$); は改頁、printf($l$); は改行である。printf(($z-d.6d$,a,b,c)) は小数点以上を1桁、小数点以下を6桁にフォーマットして出力する。

Hello world の変遷

ALGOLの各種実装における移植性の無さは、Hello World プログラムで簡単に示すことができる。

ALGOL 58 (IAL)

ALGOL 58 には入出力機能が存在しないので、例示できない。

ALGOL 60 ファミリ

ALGOL 60 にも入出力機能がないので、Hello World プログラムの移植性はない。以下に示すのはユニシスのメインフレームで今も使用可能なALGOLの実装に対応したもので、ミシガン大学The Language Guide にあるコード例を単純化したものである[21]

 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文を使うとさらに次のように単純化される。

 BEGIN DISPLAY("HELLO WORLD!") END.

もう1つの例として Elliott Algol のコード例を示す。Elliott Algol は引用開始符号と引用終了符号とで異なる文字を使用する。

 program HiFolks;
 begin
    print ‘Hello world’;
 end;

次は Elliott 803 Algol (A104) の例である。Elliott 803 は標準では5孔の紙テープを使用するので、大文字しか使えない。引用符として使える文字もないため、ポンド記号 (£) を引用開始、疑問符 (?) を引用終了に使用している。特殊シーケンスは二重引用内に置かれる(例えば、££L?? は改行指示である)。

  HIFOLKS'
  BEGIN
     PRINT £HELLO WORLD£L??'
  END'

ICT 1900シリーズのALGOLでは、紙テープまたはパンチカードを入力として利用可能である。紙テープは小文字も使用可能である。出力はラインプリンターに対して行う。

  'BEGIN'
     'WRITE TEXT'("HELLO WORLD");
  'END'

ALGOL 68

ALGOL 68 のコードは一般に太字または下線つきの小文字で予約語を表す(ただし、以下の例はシンタックスハイライトのために大文字にしている)。

 BEGIN
   printf(($gl$,"Hello, world!"))
 END

"Algol 68 Report" では、入出力を "transput" と称している。

ALGOLの特殊文字の変遷

ALGOLは文字セットが急速に発展し多様化していた時代に登場した。また、ALGOLは大文字だけで記述できるよう定義されていた。

1960年の情報処理国際連合 (IFIP) で発表された ALGOL 60 では、当時のほとんどのコンピュータではサポートされていない数学記号がいくつか使われていた。例えば、×, ÷, ≤, ≥, ≠, ¬, ∨, ∧, ⊂, ≡, ␣, [注 3] などである。

1961年9月、初期のASCII文字セットが登場し、ALGOLのブーリアン演算子 "\/" と "/\" をサポートするためにバックスラッシュ (\) が初期段階で追加された[22]

1962年、ALCOR英語版は2つの珍しい文字、"᛭" (iron/runic cross) と "⏨" (Decimal Exponent Symbol) を浮動小数点形式で使用するためにALGOLの文字セットに加えた[23][24][25]

1964年、ソビエト連邦が策定したGOST規格 GOST 10859 で、ALGOL用の4ビット、5ビット、6ビット、7ビットの文字セットを定義した[26]

1968年の "Algol 68 Report" では既存のALGOL用文字セットに加えて、IBM 2741 端末(1965年に登場したAPL対応端末)で使用可能な →, ↓, ↑, □, ⌊, ⌈, ⎩, ⎧, ○, ⊥, ¢ という文字を加えた。このレポートはロシア語、ドイツ語、フランス語、ブルガリア語に翻訳され、それぞれの言語向けに文字セットが拡張された。例えばソビエト連邦のBESM-4キリル文字が使用可能だった。ALGOLの使用する全ての文字はUnicode規格の一部になっており、その大部分は主要なフォントが対応している。

2009年10月、浮動小数点形式記述のための "" (Decimal Exponent Symbol) が Unicode 5.2 に追加された[注 3]。これはブランで使われたALGOLソフトウェアとの後方互換を保つためである。

脚注

注釈

  1. ^ ファミリー名は大文字/小文字をまじえて表記される場合 (Algol 60) と、全て大文字で表記される場合 (ALGOL 68) がある。本項目では ALGOL で統一する。
  2. ^ ALGOL 68 の用語で入出力を意味する。
  3. ^ a b 対応フォントが少ない。フリーフォントでは、DejaVu Sans、Quivira、Symbola和田研2004フォントの絵文字対応版、にしき的フォントなど。JIS X 0208の表記に置き換えるなら「10」のような外見となる。

出典

  1. ^ P.HAYES 1978, p. 38.
  2. ^ Collected Algorithms of the ACM ACMによるアルゴリズム集
  3. ^ Algol-like languages ,Introduction” (September 1996). 2012年1月17日閲覧。
  4. ^ a b Backus, J. W.; Bauer, F. L.; Green, J.; Katz, C.; McCarthy, J.; Perlis, A. J.; Rutishauser, H.; Samelson, K. et al. (May 1960). Naur, Peter. ed. Report on the Algorithmic Language ALGOL 60. Copenhagen. doi:10.1145/367236.367262. ISSN 0001-0782 
  5. ^ Perlis, A.J.; Samelson, K. (1958), “Preliminary report: international algebraic language”, Communications of the ACM 1 (12): 8-22, doi:10.1145/377924.594925 
  6. ^ Revised Report on the Algorithmic Language Algol 60” (1963年). 25 June 2007時点のオリジナルよりアーカイブ。2007年6月8日閲覧。
  7. ^ Revised Report on the Algorithmic Language ALGOL 68” (1973年). 2010年8月25日閲覧。
  8. ^ Knuth, Donald E. (1964). “Backus Normal Form vs Backus Naur Form”. Communications of the ACM 7 (12): 735–736. doi:10.1145/355588.365140. 
  9. ^ ACM Award Citation / Peter Naur, 2005
  10. ^ "Hints on Programming Language Design", C.A.R. Hoare, December 1973. Page 27. (なお、この言葉は間違ってエドガー・ダイクストラのものとされることがある。ダイクストラも ALGOL 60 コンパイラの実装に参加していた)
  11. ^ Jonathan Rees and William Clinger (Editors), Hal Abelson, R. K. Dybvig et al.. “Revised(3) Report on the Algorithmic Language Scheme, (Dedicated to the Memory of ALGOL 60)”. 2009年10月20日閲覧。
  12. ^ Peter O'Hearn and Robert D. Tennent. 1996. Algol-Like Languages. Birkhauser Boston Inc., Cambridge, MA, USA.
  13. ^ The Encyclopedia of Computer Languages”. 2012年1月20日閲覧。
  14. ^ Computer Museum History, Historical Zuse-Computer Z23, restored by the Konrad Zuse Schule in Hünfeld, for the Computer Museum History Center in Mountain View (California) USA
  15. ^ Daylight, E. G. (2011). “Dijkstra's Rallying Cry for Generalization: the Advent of the Recursive Procedure, late 1950s – early 1960s”. The Computer Journal. doi:10.1093/comjnl/bxr002. http://www.dijkstrascry.com/node/4. 
  16. ^ Kruseman Aretz, F.E.J. (30 June 2003). “The Dijkstra-Zonneveld ALGOL 60 compiler for the Electrologica X1”. Software Engineering. History of Computer Science. Kruislaan 413, 1098 SJ Amsterdam: Centrum Wiskunde & Informatica. http://oai.cwi.nl/oai/asset/4155/04155D.pdf 
  17. ^ Koffman, Eliot. “All I Really Need to KnowI Learned in CS1”. 2012年5月20日閲覧。
  18. ^ Aho, Alfred V.; Ravi Sethi, Jeffrey D. Ullman (1986). Compilers: Principles, Techniques, and Tools (1st ed.). Addison-Wesley. ISBN 0-201-10194-7 , Section 7.5, and references therein
  19. ^ https://doi.org/10.1145/366573.366599
  20. ^ "803 ALGOL", the manual for Elliott 803 ALGOL
  21. ^ Hello world! ALGOL Example Program page
  22. ^ How ASCII Got Its Backslash, Bob Bemer
  23. ^ Baumann, R. (October 1961). “ALGOL Manual of the ALCOR Group, Part 1 [ALGOL Manual of the ALCOR Group]” (German). Elektronische Rechenanlagen: 206–212. 
  24. ^ Baumann, R. (December 1961). “ALGOL Manual of the ALCOR Group, Part 2 [ALGOL Manual of the ALCOR Group]” (German). Elektronische Rechenanlagen 6: 259–265. 
  25. ^ Baumann, R. (April 1962). “ALGOL Manual of the ALCOR Group, Part 3 [ALGOL Manual of the ALCOR Group]” (German). Elektronische Rechenanlagen 2. 
  26. ^ GOST 10859 standard”. 16 June 2007時点のオリジナルよりアーカイブ。2007年6月5日閲覧。

参考文献

関連図書

  • 森口繁一(編):「ALGOL入門」、日本科学技術連盟、(1962年10月1日)。
  • Eric Foxley and Henry R. Neave:"A FIRST COURCE IN ALGOL60", Addison-Wesley Pub., (1968).
  • エリック フォクスレイ、ヘンリイ R.ニーヴ、岸田孝一(訳):「プログラミングALGOL入門」、日本生産性本部(1970年3月30日)。

関連項目

外部リンク

Read other articles:

2020 Canadian medical drama television series TransplantGenreMedical dramaCreated byJoseph KayStarringHamza HaqLaurence LeboeufAyisha IssaJim WatsonSirena GulamgausTorri HigginsonGrace Lynn KungSugith VarugheseLinda E. SmithKenny WongJohn HannahCountry of originCanadaOriginal languageEnglishNo. of seasons4No. of episodes44ProductionExecutive producers Joseph Kay Jocelyn Deschênes Bruno Dube Randy Lennox Virginia Rankin Jeremy Spry Tara Woodbury Running time40 minutesProduction companies Sph...

 

селище Дубровка Дубровка Країна  Росія Суб'єкт Російської Федерації Воронезька область Муніципальний район Терновський район Поселення Киселинське сільське поселення Код ЗКАТУ: 20254820001 Код ЗКТМО: 20654420101 Основні дані Населення 599 Поштовий індекс 397117 Географічні коорд...

 

Charleval Charleval (Frankreich) Staat Frankreich Region Provence-Alpes-Côte d’Azur Département (Nr.) Bouches-du-Rhône (13) Arrondissement Aix-en-Provence Kanton Pélissanne Gemeindeverband Métropole d’Aix-Marseille-Provence Koordinaten 43° 43′ N, 5° 15′ O43.7197222222225.2463888888889Koordinaten: 43° 43′ N, 5° 15′ O Höhe 121–390 m Fläche 14,41 km² Einwohner 2.655 (1. Januar 2020) Bevölkerungsdichte 184 Einw./km...

Encoding a bitmap image's rows and/or columns in a non-linear order This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Interlacing bitmaps – news · newspapers · books · scholar · JSTOR (September 2015) (Learn how and when to remove this template message) For other uses, see Interlace. An illustration of Ad...

 

Historic district in Connecticut, United States United States historic placeNorth Branford Center Historic DistrictU.S. National Register of Historic Places Show map of ConnecticutShow map of the United StatesLocationRoughly along Church and North Sts., North Branford, ConnecticutCoordinates41°19′46″N 72°45′52″W / 41.32944°N 72.76444°W / 41.32944; -72.76444Area53 acres (21 ha)Architectural styleColonial, Greek Revival, et al.NRHP reference...

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Oktober 2022. LuasLuas logoInfoWilayahDublinJenisTremJumlah jalur2 (Merah dan Hijau)Jumlah stasiun67Penumpang harian114,500 penumpang[1]Penumpang tahunan48 juta penumpang [2](2019)OperasiDimulai30 Juni 2004 (2004-06-30)OperatorTransdevJumlah ger...

Matter of national public policy interest African American family in Florida, 1900 The out of wedlock birth rates by race in the United States from 1940-2014. The rate for African Americans is the purple line. Data is from the National Vital Statistics System Reports published by the CDC National Center for Health Statistics. Note: Prior to 1969, African American illegitimacy was included along with other minority groups as Non-White.[1] Part of a series onAfrican Americans History Pe...

 

2008 Japanese filmPersonaFilm posterKanjiペルソナ Directed byTatsuro KashiharaKenji TanigakiWritten byTatsuro KashiharaStarringMami YamasakiKoji MoritsuguKumiko NakanoMasato HagiwaraAkira OtakaProductioncompaniesCREi, KIC-Factory, Persona Film PartnersRelease date January 26, 2008 (2008-01-26) Running time84 minutesCountryJapanLanguageJapanese Persona (ペルソナ, Perusona) is a 2008 film written and directed by Tatsuro Kashihara.[1] The film premiered on January ...

 

Die Prätorianergarde (oder kürzer Prätorianer, lateinisch praetoriani) war eine Garde-Truppe, die von den römischen Kaisern eingesetzt wurde. Auch zu republikanischen Zeiten wurden Gardisten von Feldherren genutzt (cohors praetoria), und sie lassen sich für die Familie der Scipionen bereits um das Jahr 275 v. Chr. nachweisen. Die Liktoren der höheren Ränge des Cursus honorum und die extraordinarii (eine erweiterte Schutztruppe der Amtsträger, da die Liktoren ihrer Aufgabe allein ...

Ingomar, the BarbarianAdegan dari film tersebutSutradara D. W. Griffith ProduserDitulis oleh D. W. Griffith Ernest Thompson Seton PemeranCharles InsleeSinematograferG. W. BitzerTanggal rilis 13 Oktober 1908 (1908-10-13) Durasi13 menit (satu rol)Negara Amerika Serikat BahasaFilm bisu Ingomar, the Barbarian adalah sebuah film drama pendek bisu Amerika Serikat tahun 1908 garapan D. W. Griffith.[1] Film tersebut ditempakan dalam genre yang sama dengan sandiwara toga teatrikal.[2&...

 

Sean Bean Sean Bean atau lengkapnya Shaun Mark Bean (lahir 17 April 1959) merupakan seorang aktor berkebangsaan Inggris. Ia terkenal sebagai aktor layar lebar dan layar kecil. Di televisi ia berperan di serial HBO Game of Thrones. Peran-peran penting lainnya di layar lebar adalah di Goldeneye (1995). Filmografi Tahun Film Sebagai Catatan lain 1986 Caravaggio Ranuccio 1988 Stormy Monday Brendan 1989 How to Get Ahead in Advertising Larry Frisk 1989 War Requiem German Soldier 1990 Windprints Ant...

 

List of events in the year 1309 ← 1308 1307 1306 1305 1304 1309 in Scotland → 1310 1311 1312 1313 1314 Centuries: 12th 13th 14th 15th 16th Decades: 1280s 1290s 1300s 1310s 1320s See also:List of years in ScotlandTimeline of Scottish history1309 in: England • Elsewhere Events from the year 1309 in the Kingdom of Scotland. Incumbents Monarch – Robert I Events 17 March – Robert the Bruce holds his first Parliament at St. Andrews Deaths 16 July – James Stewart, 5th High St...

Герман Фохтінгнім. Hermann Vöchting Народився 8 лютого 1847(1847-02-08)Бломберг, Ліппе, Детмольд, Північний Рейн-Вестфалія, НімеччинаПомер 24 листопада 1917(1917-11-24) (70 років)Тюбінген, НімеччинаКраїна  НімеччинаДіяльність ботанік, викладач університетуГалузь ботанікаЗаклад Тюбінгенс...

 

Swiss main battle tank Panzer 68-88 Panzer 68 in service, 1991TypeMain battle tankPlace of originSwitzerlandService historyIn service1971 – 2003Used bySwitzerlandProduction historyDesigned1960sManufacturerEidgenoessische KonstruktionswerkstaetteProduced1971 – 1983No. built390 (all versions); 195 68/88; 1 Panzer 68-2000 (prototype)VariantsPanzer 68; Panzer 68/75; Panzer 68/88; Panzer 68-2000 (prototype)SpecificationsMass40.8 tonnesLength9.49 m (31 ft 2...

 

You can help expand this article with text translated from the corresponding article in French. (December 2008) Click [show] for important translation instructions. View a machine-translated version of the French article. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into the English Wikip...

Bagian dari sebuah serial tentangSepuluhPerintah Allah Akulah TUHAN Allahmu Jangan ada allah lain Jangan membuat patung apa pun Jangan sembarangan menyebut nama TUHAN Kuduskanlah hari Sabat Hormatilah ayahmu dan ibumu Jangan membunuh Jangan berzinah Jangan mencuri Jangan bersaksi dusta Jangan mengingini Artikel terkait Loh Batu Dekalog Ritual Teologi Katolik lbs Hormatilah ayahmu dan ibumu, atau Hormatilah ibu bapamu, adalah salah satu dari Sepuluh Perintah Allah dalam Alkitab Ibrani dan Perj...

 

Slaget ved Velikiye LukiKonflikt: Andre verdenskrigVelikiye Luki markert med rødtDato19. november 1942 - 16. januar 1943StedVelikiye Luki ved den latviske grensen i RusslandResultatSovjetisk seierStridende parter Tyskland SovjetKommandanter og ledere Kurt von der Chevallerie Maksim PurkajevStyrker20 000 ved slagets innledning100 000 ved slaget innledningTap17 00030 000 Østfronten Barbarossa – Finland – Murmansk – Leningrad – Smolensk 1 –...

 

一場於德國斯圖加特舉行的模擬聯合國會議 模擬聯合國(英語:Model United Nations,缩写MUN)是一種學術性質活動,藉由精簡後的聯合國議規舉行模擬會議,使與會者瞭解多邊外交的過程,培養分析公民議題的能力,促進世界各地學生的交流,增進演講和辯論能力,提高组织、策划、管理、研究和写作、解决冲突、求同存异的能力[1],訓練批判性思考、團隊精神和領導才...

سيو وكينو (باليابانى: 内野 聖陽)  معلومات شخصيه الميلاد 16 سبتمبر 1968 (56 سنة)  مواطنه اليابان  الطول الحياه العمليه المدرسه الام جامعة واسيدا  المهنه ممثل،  وممثل افلام  المواقع الموقع الموقع الرسمى  IMDB صفحته على IMDB[1]  تعديل مصدري - تعديل   سيو وكينو ممث...

 

Omikron2 Centauri ObservationsdataEpok: J2000.0StjärnbildKentaurenRektascension11t 31m 48,79948s[1]Deklination-59° 30′ 56,3276″[1]Skenbar magnitud ( V {\displaystyle V} )+5,14[2] (5,12 – 5,22 (V)[3])StjärntypSpektraltypA2 Iae[4]U–B-0,11[2]B–V+0,49[2]VariabeltypPulserande variabel av Alfa Cygni-typ (ACYG)[3]AstrometriRadialhastighet ( R v {\displaystyle R_{v}} )-16,8[5] km/sEgenrörelse (µ)RA: -6,89 ± 0,26[1] mas/årDek.: 1,12 ...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!