热门问题
时间线
聊天
视角
ALGOL 58
来自维基百科,自由的百科全书
Remove ads
ALGOL 58(源自英语:ALGOrithmic Language 1958的缩写),最早称为“国际代数语言”(英语:International Algebraic Language,缩写为IAL)[4],它是一种编程语言,是ALGOL家族的第一个成员。它在1958年问世,ALGOL 60即是它的基础上开发而成。
ALGOL 58介入了复合语句的基础概念[5],但只局限于控制流程,它没有以ALGOL 60中块的那种方式,结合上标识符作用域。
Remove ads
历史
1958年,美国计算机协会(ACM)与联邦德国的应用数学和力学协会(GAMM)成立小组,在苏黎世把他们关于算法表示法的建议[6],综合为一从而形成“国际代数语言”(IAL)[7],后来改称ALGOL 58。
ALGOL 58变体时间线
Remove ads
例子代码
下面是IAL报告中的例子代码,采用辛普森积分法计算函数F(x)
的积分,函数F(x)
的值由假定存在的函数例程提供:
这里在过程主体的复合语句的begin
之后,必须为前面的过程头部中声明的过程名字包含此标识符的恰好一个语句标签,它被用作过程入口点;这里的非实数类型声明integer (k, n)
放在了过程主体的末尾,即就在这个复合语句的end
之前;有标签的复合语句在其end
之后可以跟随着这个标签(尾随;
来分隔于后续字符),它被用来指示这个复合语句的范围。
ALGOL 58对ALGOL 60的影响
- IAL介入了参考、出版和硬件语言的三级概念,和有别于自由选择的标识符的有独立表示的“字分界符”的概念(因此没有保留字)。ALGOL 60保持了这种三级概念[8]。
- IAL介入了对赋值(表示左向箭头的
:=
)和等价关系=
的区分,ALGOL 60保持了这种区分。 - IAL和ALGOL 60都允许了具有任意的下方和上方下标边界的数组,并允许用整数表达式定义下标边界。
- IAL和ALGOL 60都允许嵌套的过程定义以及对应标识符的作用域。
- IAL报告采用与ALGOL 60报告几乎相同的术语描述参数替换,将传名调用的可能性保留开放,但不清楚是否当时就认识到了这一点。
- IAL允许数值语句标号,ALGOL 60保持了它。
- IAL在程序内包括非ALGOL代码的可能性,已经在过程参数的上下文中提示到了。
- IAL和ALGOL 60都有“switch指定式”,但无关于C语言及其有关语言的switch语句。
- IAL提议了内联函数形如
f(x) := x / 2
,这在ALGOL 60中被去掉了。 - IAL过程声明为输入和输出参数提供了独立声明,过程可以返回多个值,这种机制在ALGOL 60中被替代为值声明。
- IAL中的变量声明可以位于程序中的任何位置而不必需在过程的开始处。与之相对,在ALGOL 60块中的声明的出现应当先于所有执行语句。
- IAL的
for
语句拥有形式for i := base (increment) limit
,直接模仿了Rutishauser的编程语言Superplan的循环,将其=
替代为:=
,并将其德语关键字Für
替代为英语翻译for
;ALGOL 60将圆括号替代为字分界符step
和until
,使得前者语句转而写为for i := base step increment until limit
。 - IAL的
if
语句没有then
子句或else
子句,它只是用布尔表达式守卫后续语句,进行关系运算的布尔表达式需要用圆括号包围起来。IAL提供了交替语句if either ~ or if ~ end
来清晰的允许多个条件的测试。二者都被替代为ALGOL的if ~ then ~ else ~
构造,它介入了悬摆else歧义。 - IAL通过
do
语句提供宏替代,这在ALGOL 60中被去掉了。 - IAL允许在将数组传递给过程时忽略一个或多个数组下标,允许将给一个过程的任何或所有的实参传递给另一个过程。
- IAL的中缀布尔运算符都有相同的优先级。指数通过成对的上下箭头来指示,这去除了嵌套指数的解释混淆;ALGOL 60将成对的箭头替代为一个单一的上箭头,它的功能等价于FORTRAN的
**
。 - IAL报告不明确规定要提供哪些标准函数,模糊的提及了“标准分析函数”。ALGOL 60报告拥有标准函数的更明确列表。
Remove ads
引用
外部链接
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads