跳转到内容

ALGOL 58

维基百科,自由的百科全书
ALGOL 58
编程范型过程式, 指令式, 结构化
设计者Friedrich L. Bauer英语Friedrich L. Bauer, Hermann Bottenbruch英语Hermann Bottenbruch, Heinz Rutishauser英语Heinz Rutishauser, Klaus Samelson英语Klaus Samelson, 约翰·巴科斯, Charles Katz英语Charles Katz, 艾伦·佩利, Joseph Henry Wegstein英语Joseph Henry Wegstein
发行时间1958年,​66年前​(1958
启发语言
FORTRAN, IT, Plankalkül[1], Superplan英语Superplan, Sequentielle Formelübersetzung
影响语言
ALGOL 60,以及类ALGOL语言

ALGOL 58(源自英语:ALGOrithmic Language 1958的缩写),最早称为国际代数语言(英语:International Algebraic Language,缩写为IAL)[2],一种编程语言,是ALGOL家族的第一个成员。它在1958年问世,ALGOL 60即是它的基础上开发而成。

ALGOL 58介入了复合语句的基础概念[3],但只局限于控制流程,它没有以ALGOL 60中的那种方式,结合上标识符作用域

历史

1958年,ACM小组和以当时联邦德国的应用数学和力学协会英语Gesellschaft für Angewandte Mathematik und Mechanik(GAMM),在苏黎世把他们关于算法表示法的建议综合为一从而形成IAL(国际代数语言)[4],后来改称ALGOL 58。

ALGOL 58变体时间线

名称 作者 国家 描述 目标CPU
ZMMD实现 1958 Friedrich L. Bauer英语Friedrich L. Bauer, Heinz Rutishauser英语Heinz Rutishauser, Klaus Samelson英语Klaus Samelson, Hermann Bottenbruch英语Hermann Bottenbruch  德国 ZMMD是ZürichMünchenMainzDarmstadt的缩写 Z22英语Z22 (computer)
NELIAC英语NELIAC 1958 海军电子实验室英语Navy Electronics Laboratory  美国 AN/USQ-17英语AN/USQ-17
JOVIAL 1960 Jules Schwartz英语Jules Schwartz  美国 DODHOL,先于Ada 多种
BALGOL英语BALGOL 1960 Joel Merner等人  美国 Burroughs公司英语Burroughs Corporation B220
MAD英语MAD (programming language) 1960 密歇根大学  美国 IBM 7090/7094主机,接着在1960年代中期移植到Univac 1108英语Univac 1108
ALGO英语ALGO 1961 Bendix公司英语Bendix Corporation  美国 Bendix G-15英语Bendix G-15
ALGOL 30英语Dartmouth ALGOL 30 1962 达特茅斯学院Thomas Eugene Kurtz英语Thomas Eugene Kurtz等人  美国 后来演进成ALGOL 60 LGP-30英语LGP-30
SUBALGOL 1962 斯坦福大学Bob Braden英语Bob Braden, Lawrence M. Breed英语Lawrence M. BreedRoger Moore英语Roger Moore (computer scientist)  美国 BALGOL扩展 IBM 7090

例子代码

下面是语言报告中的例子代码,采用辛普森积分法计算函数F(x)的积分,函数F(x)的值由假定存在的函数例程提供:

procedure Simps(F(), a, b, delta, V);
comment a, b are the min and max, resp. of the points def. interval of integ.
        F() is the function to integrated.
        delta is the permissible difference between two successive Simpson sums.
        V is greater than maximum absolute value of F on a, b;
begin
Simps:  Ibar := V×(b-a)
        n    := 1
        h    := (b-a)/2
        J    := h×(F(a)+F(b))
J1:     S    := 0;
  for   k    := 1 (1) n
        S    := S+F(a+(2×k-1)×h)
        I    := J+4×h×S
  if    (delta < abs(I-Ibar))
begin   Ibar := I
        J    := (I+J)/4
        n    := 2×n; h := h/2
        go to J1 end
        Simps := I/3
return
integer (k, n)
  end   Simps

这里的非实数类型声明放在了过程的末尾。原文中的斜体显示改为了粗体,下面再将其调整为ALGOL 60开创的缩进格局:

procedure Simps(F(), a, b, delta, V);
comment a, b are the min and max, resp. of the points def. interval of integ.
    F() is the function to integrated.
    delta is the permissible difference between two successive Simpson sums.
    V is greater than maximum absolute value of F on a, b;
begin
Simps:
    Ibar := V×(b-a)
    n := 1
    h := (b-a)/2
    J := h×(F(a)+F(b))
J1: S := 0;
    for k := 1 (1) n
        S := S+F(a+(2×k-1)×h)
    I := J+4×h×S
    if (delta < abs(I-Ibar))
    begin
        Ibar := I
        J := (I+J)/4
        n := 2×n; h := h/2
        go to J1
    end
    Simps := I/3
    return
    integer (k, n)
end Simps

引用

  1. ^ Rojas, Raúl; Hashagen, Ulf. The First Computers: History and Architectures. MIT Press. 2002: 292 [October 25, 2013]. ISBN 978-0262681377. (原始内容存档于2020-08-04). 
  2. ^ Perlis, A.J. Talk on Computing in the fifties. ACM National Conference. Nashville,. TN. (Transcript in J. A. N. Lee (ed.), Computer Pioneers, IEEE Computer Society Press, Los Alamito, CA, 1995, 545-556). 1981. 
  3. ^ Perlis, A. J.; Samelson, K. Preliminary report: international algebraic language (PDF). Communications of the ACM (New York, NY, USA: ACM). 1958, 1 (12): 8–22 [2023-02-20]. doi:10.1145/377924.594925. (原始内容存档 (PDF)于2023-02-20). Strings of one or more statements may be combined into a single (compound) statement by enclosing them within the "statement parentheses" begin and end. Single statements are separated by the statement separator ";". 
  4. ^ Perlis, A.J.; Samelson, K. Preliminary report: international algebraic language. Communications of the ACM. 1958, 1 (12): 8–22. doi:10.1145/377924.594925. 

外部链接