ALGOL 60

维基百科,自由的百科全书
跳到导航 跳到搜索
ALGOL 60
编程范型指令式过程式结构化
設計者Bauer英语Friedrich L. Bauer, Bottenbruch英语Hermann Bottenbruch, Rutishauser英语Heinz Rutishauser, Samelson英语Klaus Samelson, 約翰·巴科斯, Katz英语Charles Katz, 艾伦·佩利, Wegstein英语Joseph Henry Wegstein, 彼得·諾爾, Bernard Vauquois, van Wijngaarden英语Adriaan van Wijngaarden, Woodger英语Michael Woodger, Julien Green, 约翰·麦卡锡
发行时间1960年,​61年前​(1960
啟發語言
ALGOL 58
影響語言
ALGOL 68和后续的所有类Algol语言比如: Simula, CPL, Pascal, C, Ada

ALGOL 60(源自ALGOrithmic Language 1960的縮寫),一種程式語言,是ALGOL語言家族中的成員之一。根據ALGOL 58的基礎,它在1960年被創造,並影響到其後的SimulaCPLALGOL WBCPLBPascalC,它在程式語言中有著很大的影響力,其官方後繼者是ALGOL 68

歷史[编辑]

1960年1月,艾伦·佩利在巴黎举行的有全世界一流软件专家参加的讨论会上,发表了《算法语言Algol 60报告》[1],确定了程序设计语言Algol 60。艾兹赫尔·戴克斯特拉实现了Algol60语言的第一个编译器。1962年,艾伦·佩利又对Algol 60进行了修订[2]

Algol 60引进了许多新的概念如:结构、词法作用域递归巴科斯-诺尔范式(BNF)等等。

Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的科学学科,并为后来软件自动化及软件可靠性的发展奠定了基础。

標準[编辑]

ALGOL 60以及COBOL,是第一個企圖標準化的程式語言。ALGOL60曾經提出兩項ISO標準,但現在都已經撤消:

  • ISO 1538: 1984年,程式語言Algol 60[3] - 已撤消。
  • ISO TR 1672: 1977年,Algol 60基本符号的硬體表示[4] - 已撤消。

例子[编辑]

下面是语言报告中过程声明的例子:

 procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);
     value n, m; array a; integer n, m, i, k; real y;
 comment 矩阵a大小为n乘m它的绝对值最大的元素
     被传送到y并且这个元素的下标是i和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

这里的关键字写法依赖于实现,比如将integer加引号写为'INTEGER',这叫做索绕英语Stropping (syntax)(stropping)。

ALGOL 60实现时间线[编辑]

迄今Algol 60已经有了至少70个扩充、扩展、派生和子语言[5]

名字 年份 作者 国家 描述 目标CPU
X1 ALGOL 60 1960年8月[6] Edsger W. Dijkstra和Jaap A. Zonneveld 荷兰 第一个ALGOL 60实现[7] Electrologica X1英语Electrologica X1
Algol 1960[8] Edgar T. Irons 美国 Algol 60 CDC 1604英语CDC 1604
Burroughs Algol英语Burroughs large systems#ALGOL(及一些变体) 1961 Burroughs公司英语Burroughs Corporation(有HoareDijkstra和其他人参与) 美国 以Burroughs(后来基于Unisys MCP英语Burroughs MCP)计算机为基础。Burroughs方言包括了特殊系统编程方言比如ESPOL英语Executive Systems Problem Oriented LanguageNEWP英语NEWP Burroughs大型系统英语Burroughs large systems中型系统英语Burroughs Medium Systems
Case ALGOL 1961 美国 Simula最初签约为Case ALGOL的模拟器扩展 UNIVAC 1107英语UNIVAC 1100/2200 series
GOGOL 1961 William M. McKeeman 美国 用于ODIN分时系统 PDP-1
DASK ALGOL 1961 Peter NaurJørn Jensen英语Jørn Jensen 丹麦 Algol 60 Regnecentralen英语RegnecentralenDASK英语DASK
SMIL ALGOL 1962 Torgil Ekman,Carl-Erik Fröberg 瑞典 Algol 60 隆德大学SMIL英语SMIL (computer)
GIER ALGOL 1962 Peter NaurJørn Jensen英语Jørn Jensen 丹麦 Algol 60 Regnecentralen英语Regnecentralen的GIER
Dartmouth ALGOL 30英语Dartmouth ALGOL 30[9] 1962 Thomas Eugene Kurtz英语Thomas Eugene Kurtz,Stephen J. Garland,Robert F. Hargraves,Anthony W. Knapp英语Anthony W. Knapp,Jorge LLacer 美国 Algol 60 LGP-30英语LGP-30
Alcor Mainz 2002 1962 Ursula Hill-Samelson,Hans Langmaack 德国 Siemens 2002
ALCOR-ILLINOIS 7090 1962[10][11] Manfred Paul,Hans Rüdiger Wiehle,David Gries英语David GriesRudolf Bayer 美国,西德 Algol 60,伊利诺伊大学慕尼黑工业大学的实现,1962-1964 IBM 7090
USS 90 Algol 1962 L. Petrone 意大利
Elliott ALGOL英语Elliott ALGOL 1962 C. A. R. Hoare 英国 在他的1980年图灵奖演讲中讨论 Elliott 803英语Elliott 803 & Elliott 503英语Elliott 503
Algol 60 1962 Roland Strobel[12] 东德 柏林德国科学院英语German Academy of Sciences at Berlin应用数学研究所实现 Zeiss-Rechenautomat ZRA 1
Algol Translator 1962 G. van der Mey,W.L. van der Poel英语Willem van der Poel 荷兰 Staatsbedrijf der Posterijen,Telegrafie en Telefonie ZEBRA英语ZEBRA (computer)
Kidsgrove Algol 1963 F. G. Duncan 英国 英国电气公司英语English ElectricKDF9英语English Electric KDF9
SCALP[13] 1963 Stephen J. Garland,Anthony W. Knapp英语Anthony W. KnappThomas Eugene Kurtz英语Thomas Eugene Kurtz 美国 作为Algol 60子集的自齐备Algol处理器 LGP-30英语LGP-30
VALGOL 1963 Val Schorre 美国 META II英语META II编译器的编译器的测试品
FP6000 Algol 1963 Roger Moore英语Roger Moore (computer scientist) 加拿大 Saskatchewan电力公司英语SaskPower写作 FP6000英语Ferranti-Packard 6000
Whetstone英语Whetstone (benchmark) 1964 Brian Randell英语Brian Randell,Lawford John Russell 英国 英国电气公司原子能部。以Ferranti Pegasus英语Ferranti Pegasus为前提,国家物理实验室ACEEnglish Electric DEUCE英语English Electric DEUCE实现。 英国电气公司KDF9英语English Electric KDF9
ALGOL 60 1964 Jean-Claude Boussard[14] 法国 Institut d'informatique et mathématiques appliquées de Grenoble IBM 7090
ALGOL 60 1965 Claude Pair[15] 法国 Centre de calcul de la Faculté des Sciences de Nancy IBM 1620英语IBM 1620
Dartmouth ALGOL 1965 Stephen J. Garland,Sarr Blumson,Ron Martin 美国 Algol 60 用于GE 235英语GE-200 seriesDartmouth分时系统英语Dartmouth Time Sharing System
NU ALGOL 1965 挪威 UNIVAC
Algol 60 1965[16] F.E.J. Kruseman Aretz 荷兰 用于EL-X8的MC编译器 Electrologica X8英语Electrologica X8
ALGEK 1965 苏联 АЛГЭК,基于ALGOL-60并支持COBOL,用于经济任务 Minsk-22英语Minsk family of computers
MALGOL 1966 publ. A. Viil,M Kotli,M. Rakhendi 爱沙尼亚 Minsk-22英语Minsk family of computers
ALGAMS 1967 GAMS组织(ГАМС,группа автоматизации программирования для машин среднего класса),协作于Comecon科学院 经济互助委员会 Minsk-22英语Minsk family of computers,后来的ES EVM英语ES EVMBESM英语BESM
ALGOL/ZAM 1967 波兰 波兰ZAM计算机
Chinese Algol[17] 1972 中国 中文,通过SYMBOL系统表达
DG/L英语DG/L 1972 美国 DG Eclipse英语Data General Eclipse计算机家族
NASE[18] 1990 Erik Schoenfelder 德国 解释器 Linux和MS Windows
MARST[19] 2000 Andrew Makhorin 俄国 Algol-60到C转换器 GNU编译器套件支持的全部CPU;MARST是GNU计划成员

参见[编辑]

引用[编辑]

  1. ^ Backus, J. W.; Bauer, F. L.; Green, J.; Katz, C.; McCarthy, J.; Perlis, A. J.; Rutishauser, H.; Samelson, K.; Vauquois, B.; Wegstein, J. H.; van Wijngaarden, A.; Woodger, M. Naur, Peter , 编. Report on the Algorithmic Language ALGOL 60. Communications of the ACM (Copenhagen). May 1960, 3 (5): 299–314. ISSN 0001-0782. S2CID 278290. doi:10.1145/367236.367262. 
  2. ^ Revised Report on the Algorithmic Language Algol 60. 1963 [2020-04-23]. (原始内容存档于2007-06-25). 
  3. ^ ISO 1538:1984 Programming languages — ALGOL 60 (PDF). [2022-05-02]. (原始内容 (PDF)存档于2021-01-31). 
  4. ^ ISO/TR 1672:1977 Hardware representation of ALGOL basic symbols in the ISO 7-bit coded character set for information processing interchange. [2022-05-02]. (原始内容存档于2022-05-02). 
  5. ^ The Encyclopedia of Computer Languages 互联网档案馆存檔,存档日期September 27, 2011,.
  6. ^ Daylight, E. G. Dijkstra's Rallying Cry for Generalization: the Advent of the Recursive Procedure, late 1950s – early 1960s. The Computer Journal英语The Computer Journal. 2011, 54 (11): 1756–1772 [2022-05-02]. doi:10.1093/comjnl/bxr002. (原始内容存档于2013-03-12). 
  7. ^ Kruseman Aretz, F.E.J. The Dijkstra-Zonneveld ALGOL 60 compiler for the Electrologica X1 (PDF). Software Engineering. History of Computer Science. Kruislaan 413, 1098 SJ Amsterdam: Centrum Wiskunde & Informatica. 30 June 2003 [2022-05-02]. (原始内容 (PDF)存档于2021-10-23). 
  8. ^ Edgar T. Irons, A syntax directed compiler for ALGOL 60, Communications of the ACM, Vol. 4, p. 51. (Jan. 1961)
  9. ^ Thomas E. Kurtz, "Basic"页面存档备份,存于互联网档案馆), History of Programming Languages, Association for Computing Machinery, June 1978, page 516.
  10. ^ Gries, D.; Paul, M.; Wiehle, H. R. Some techniques used in the ALCOR ILLINOIS 7090. Communications of the ACM. 1965, 8 (8): 496–500. S2CID 18365024. doi:10.1145/365474.365511. 
  11. ^ Bayer, R.; Gries, D.; Paul, M.; Wiehle, H. R. The ALCOR Illinois 7090/7094 post mortem dump. Communications of the ACM. 1967, 10 (12): 804–808. S2CID 3783605. doi:10.1145/363848.363866. 
  12. ^ Rechenautomaten mit Trommelspeicher页面存档备份,存于互联网档案馆), Förderverein der Technischen Sammlung Dresden
  13. ^ Kurtz, op. cit., page 517.
  14. ^ Jean-Claude Boussard. Design and implementation of a compiler Algol60 on electronic calculator IBM 7090/94 and 7040/44 (学位论文). Institut d'informatique et mathématiques appliquées de Grenoble: Université Joseph-Fourier - Grenoble I. June 1964 [2022-05-02]. (原始内容存档于2022-04-10). 
  15. ^ Claude Pair. Description d'un compilateur ALGOL. European Région 1620 Users Group (IBM). 27 April 1965. 
  16. ^ Kruseman Aretz, F.E.J. An Algol 60 compiler in Algol 60. Mathematical Centre Tracts. Amsterdam: Mathematisch Centrum. 1973. 
  17. ^ Chinese Algol
  18. ^ NASE. [2022-05-02]. (原始内容存档于2022-03-30). 
  19. ^ MARST. [2020-04-23]. (原始内容存档于2020-03-22). 

外部链接[编辑]