ALGOL

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

ALGOL1[ 1]ALGOLalgorithmic language[1]1950ACM30使[2]ALGOLALGOL(algol-like) [3] FORTRANLISPCOBOL FORTRANBCPLBPascalSimulaCALGOLbegin  end "Algol 60 Report"[4] 

[]


3

ALGOL 58

 IAL (International Algebraic Language) [5]

ALGOL 60

1960 X1 ALGOL 60 1963[4][6]

ALGOL 68

19681973[7]

IAL (ALGOL 58) ALGOLALGOL ALGOL object code 使使

[]


1950FORTRANALGOL1958reference syntaxpublication syntaximplementation syntax 3使

ALGOL 58 

 ALGOL 58  (Bakus normal form)  ALGOL 60  (Bakus-Naur Form) [8]

 ALGOL Bulletin 195911 "Algol 60 Report" 19601 ALGOL 60 [9]

19601116



LBernard VauquoisMichael Woodger



Julien GreenCharles KatzJoseph Henry Wegstein

13

ALGOL 60  ALGOL 60 [10]SchemeLisp ALGOL Scheme "Revised Report on the Algorithmic Language Scheme" ALGOL[11]

1968 ALGOL68 ALGOL682ALGOL60 ALGOL W ALGOL N  ALGOL68 ALGOL68 ALGOL ALGOL 68  ALGOL 60 

IFIP TC2/WG2.1  ALGOL601984ISO ALGOL60 ALGOL60JIS (JIS C 6210-6219)19835891

ALGOL[]


ALGOLCALGOLML使ALGOLPCFML[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  ALGOL60FORTRANCOBOL ALGOL  ALGOL 

ALGOL60

 ALGOL60ALGOL68 transput[ 2]

ALGOL602 ALGOL 2[18] swap(i, A[i]) #

ALGOLThunk()ALGOLman or boy testJensen's Device "ALGOL 60 Confidential"[19]

ALGOL BEGIN/ENDC{ }
 BEGIN
   X := 1 ;
   IF (X > 0) THEN
     BEGIN
       :
     END
 END

ALGOL C使BEGIN/END使ALGOL

[]

[]

ALGOL 60[]


 ALGOL60 n × m 2yik調 "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) 16

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)) 16

Hello world []


ALGOLHello 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 1900ALGOL使
  'BEGIN'
     'WRITE TEXT'("HELLO WORLD");
  'END'

ALGOL 68[]


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

"Algol 68 Report"  "transput" 

ALGOLの特殊文字の変遷[編集]


ALGOLALGOL

1960 (IFIP)  ALGOL 60 使×, ÷, , , , ¬, , , , , , [ 3] 

19619ASCIIALGOL "\/"  "/\"  (\) [22]

1962ALCOR2"" (iron/runic cross) (Decimal Exponent Symbol) 使ALGOL[23][24][25]

1964GOST GOST 10859 ALGOL4567[26]

1968 "Algol 68 Report" ALGOLIBM 2741 1965APL使 , , , , , , , , , , ¢ BESM-4使ALGOL使Unicode

200910 "" (Decimal Exponent Symbol)  Unicode 5.2 [ 3]使ALGOL

脚注[編集]

注釈[編集]



(一)^ / (Algol 60)  (ALGOL 68)  ALGOL 

(二)^ ALGOL68

(三)^ abDejaVu SansQuiviraSymbola2004JIS X 020810

出典[編集]



(一)^ P.HAYES 1978, p. 38.

(二)^ Collected Algorithms of the ACM ACM

(三)^ Algol-like languages ,Introduction (19969). 2012117

(四)^ abBackus, 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 

(五)^ Perlis, A.J.; Samelson, K. (1958), Preliminary report: international algebraic language, Communications of the ACM 1 (12): 8-22, doi:10.1145/377924.594925 

(六)^ Revised Report on the Algorithmic Language Algol 60 (1963). 2007625200768

(七)^ Revised Report on the Algorithmic Language ALGOL 68 (1973). 2010825

(八)^ Knuth, Donald E. (1964). Backus Normal Form vs Backus Naur Form. Communications of the ACM 7 (12): 735736. doi:10.1145/355588.365140. 

(九)^ ACM Award Citation / Peter Naur, 2005

(十)^ "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). 20091020

(12)^ Peter O'Hearn and Robert D. Tennent. 1996. Algol-Like Languages. Birkhauser Boston Inc., Cambridge, MA, USA.

(13)^ The Encyclopedia of Computer Languages. 2012120

(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. 2012520

(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: 206212. 

(24)^ Baumann, R. (December 1961). ALGOL Manual of the ALCOR Group, Part 2 [ALGOL Manual of the ALCOR Group] (German). Elektronische Rechenanlagen 6: 259265. 

(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. 2007616200765

参考文献[編集]

関連図書[編集]

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

関連項目[編集]

外部リンク[編集]