编程范型 | 过程式,指令式,结构化 |
---|---|
設計者 | 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年,67年前(1958) |
受影响于 | |
FORTRAN, IT,Plankalkül[1],Superplan(英语:Superplan), Sequentielle Formelübersetzung | |
影響語言 | |
ALGOL 60,以及类ALGOL语言 |
ALGOL 58(源自英語:ALGOrithmicLanguage 1958的縮寫),最早稱為国际代数语言(英語:InternationalAlgebraicLanguage,縮寫為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。
名称 | 年 | 作者 | 国家 | 描述 | 目标CPU |
---|---|---|---|---|---|
ZMMD实现 | 1958 | Friedrich L. Bauer(英语:Friedrich L. Bauer),Heinz Rutishauser(英语:Heinz Rutishauser),Klaus Samelson(英语:Klaus Samelson),Hermann Bottenbruch(英语:Hermann Bottenbruch) | ![]() | ZMMD是Zürich、München、Mainz、Darmstadt的缩写 | Z22(英语:Z22 (computer)) |
NELIAC(英语:NELIAC) | 1958 | 海军电子实验室(英语:Navy Electronics Laboratory) | ![]() | AN/USQ-17(英语:AN/USQ-17) | |
JOVIAL | 1960 | Jules Schwartz(英语:Jules Schwartz) | ![]() | DOD的HOL,先于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. Breed)和Roger 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;beginSimps: 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×Sif (delta < abs(I-Ibar))begin Ibar := I J := (I+J)/4 n := 2×n; h := h/2go to J1end Simps := I/3returninteger (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;beginSimps: 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×Sif (delta < abs(I-Ibar))begin Ibar := I J := (I+J)/4 n := 2×n; h := h/2go to J1end Simps := I/3returninteger (k, n)end Simps
Strings of one or more statements may be combined into a single (compound) statement by enclosing them within the "statement parentheses"begin
andend
. Single statements are separated by the statement separator ";
".