ALGOL 58(源自英語:ALGOrithmic Language 1958的縮寫),最早稱為国际代数语言(英語:International Algebraic Language,縮寫為IAL)[2],一種程式語言,是ALGOL家族的第一個成員。它在1958年問世,ALGOL 60即是它的基礎上開發而成。

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

歷史

编辑

1958年,ACM小组和以当时联邦德国的应用数学和力学协会英语Gesellschaft für Angewandte Mathematik und Mechanik(GAMM)在苏黎世把他们关于算法表示法的建议综合为一,形成了ALGOL 58,先被命名为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

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

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. 

外部連結

编辑