ALGOL 68(源自英语:ALGOrithmic Language 1968的缩写),一种指令式程式语言,为ALGOL家族的成员,是官方上的ALGOL 60后继者。它设计的目标,是提供更广泛的应用,以及更严格的语法定义。
编程范型 | 多范式:指令式,过程式,结构化,并发 |
---|---|
设计者 | A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck, C.H.A. Koster等人 |
发行时间 | 最终报告: 1968年 |
型态系统 | 静态、强类型、安全,结构化 |
网站 | Revised Report on the Algorithmic Language ALGOL 68 |
主要实作产品 | |
ALGOL 68C, ALGOL 68 Genie(新近[1]), ALGOL 68R, ALGOL 68RS, ALGOL 68S, FLACC, Алгол 68 Ленинград, Odra ALGOL 68 | |
衍生副语言 | |
ALGOL 68/FR (Final Report: 1968), Algol 68/RR (Revised Report: 1973) | |
启发语言 | |
ALGOL 60, ALGOL Y | |
影响语言 | |
C[3][5]、C++[6]、Bourne shell、KornShell、Bash、Steelman、Ada、Python[7]、Seed7、Mary、S3 |
概论
ALGOL 68由IFIP Working Group 2.1负责设计。1968年12月20日,Working Group 2.1 通过了这个语法规范,并提交IFIP大会通过。它的主要架构者为阿德里安·范·韦恩加登。
代码样例
下面的样例代码实现了埃拉托斯特尼筛法来找到小于等于100的所有素数。ALGOL 68中NIL
是同其他语言中“空指针”的类似者,表示法x OF y
访问STRUCT y
的成员x
。
BEGIN # Algol-68素数筛法,函数式风格 #
MODE LIST = REF NODE;
MODE NODE = STRUCT (INT h, LIST t);
PROC cons = (INT n, LIST l) LIST: HEAP NODE := (n, l);
PROC one to = (INT n) LIST:
(PROC f = (INT m) LIST: (m > n | NIL | cons(m, f(m+1))); f(1));
PROC error = (STRING s) VOID:
(print((newline, " error: ", s, newline)); GOTO stop);
PROC hd = (LIST l) INT: (l IS NIL | error("hd NIL"); SKIP | h OF l);
PROC tl = (LIST l) LIST: (l IS NIL | error("tl NIL"); SKIP | t OF l);
PROC show = (LIST l) VOID:
(l ISNT NIL | print((" ", whole(hd(l), 0))); show(tl(l)) | print(newline));
PROC filter = (PROC (INT) BOOL p, LIST l) LIST:
IF l IS NIL THEN NIL
ELIF p(hd(l)) THEN cons(hd(l), filter(p, tl(l)))
ELSE filter(p, tl(l))
FI;
PROC sieve = (LIST l) LIST:
IF l IS NIL THEN NIL
ELSE
PROC not multiple = (INT n) BOOL: n MOD hd(l) ≠ 0;
cons(hd(l), sieve(filter(not multiple, tl(l))))
FI;
PROC primes = (INT n) LIST: sieve(tl(one to(n)));
show(primes(100))
END
将上述代码保存入文本文件primes.a68
中,并将其中≠
替代为/=
,然后使用ALGOL 68 Genie执行它:
$ a68g -quiet primes.a68
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
注释
外部链接
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.