ALGOL 68项目的完整历史可参见C. H. Lindsey(英语:Charles H. Lindsey)的《A History of ALGOL 68》[17]。ALGOL 68语言的长篇阐述可参见Dr. Sian Mountbatten的《Programming ALGOL 68 Made Easy》[18],或者Marcel van der Veer的《Learning ALGOL 68 Genie》[19]。
技术术语“封闭子句”(enclosed clause)统一了某些固有的加括号的构造,它们在其他当代语言中被称为“块”、“do语句”、“switch语句(英语:Switch statement)”等等。在使用关键字的时候,通常使用介入关键字的反转字符序列来终结这个包围,比如:IF ~ THEN ~ ELSE ~ FI、CASE ~ IN ~ OUT ~ ESAC和FOR ~ WHILE ~ DO ~ OD。这种守卫命令语法被Stephen Bourne重新使用在常用的UnixBourne shell之中。
INT n = 2; # n是新建的常量,它被固定为2 #
INT m := 3; # m是新建的局部变量的名字,这个变量的值被初始化为3 #
INT p = m; # p是新建的常量,它被固定为同于m当前的值 #
INT q := m; # q是新建的局部变量的名字,这个变量的值被初始化为同于m当前的值 #
REF INT r = m; # r是新建的变量名字,它与m引用的是同一个变量 #
REAL avogadro = 6.02214076E23; # 阿伏伽德罗常数 #
LONG REAL long pi = 3.14159 26535 89793 23846 26433 832795;
COMPL imaginary unit = 0 I 1; # 虚数单位i即复数0 + 1i #
CASE 接转 IN 诸语句, 诸语句, ... [ OUT 诸语句 ] ESAC
简短形式:( 接转 | 诸语句, 诸语句, ... | 诸语句 )
CASE 接转1 IN 诸语句, 诸语句, ... OUSE 接转2 IN 诸语句, 诸语句, ... [ OUT 诸语句 ] ESAC
简短形式:( 接转1 | 诸语句, 诸语句, ... |: 接转2 | 诸语句, 诸语句, ... | 诸语句 )
采用粗体符号的选择子句的例子:
PROC days in month = (INT year, month) INT:
CASE month IN
#一月# 31,
#二月# IF year MOD 4 EQ 0 AND year MOD 100 NE 0 OR year MOD 400 EQ 0 THEN 29 ELSE 28 FI,
31, 30, 31, 30, 31, 31, 30, 31, 30, 31 # 直到十二月 #
ESAC;
采用简短符号的选择子句的例子:
PROC days in month = (INT year, month) INT:
(month|
31,
(year%*4 = 0 AND year%*100 /= 0 OR year%*400 = 0 | 29 | 28),
31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
在ALGOL 68中,不再采用术语数组或阵列(array),转而基于数学中的元组(-tuple)定义了多元值(multiple value)亦简称多元组(multiple)。多元组由一定数量的元素组成,每个元素都有相同的模态,有时称之为基础模态。多元组的模态由前导着一对方括号的针对每个元素的模态标示组成,它被读作“成行(英语:Row- and column-major order)的模态”(row of mode),它不同于函数式编程语言如ML中的对应于代数数据类型里积类型(英语:Product type)的“元组”(tuple)。
PRIO MAX = 9;
OP MAX = (INT a, b) INT: (a > b | a | b);
OP MAX = (REAL a, b) REAL: (a > b | a | b);
OP MAX = (COMPL a, b) COMPL: (ABS a > ABS b | a | b);
OP MAX = ([]REAL a) REAL:
(REAL out := a[LWB a];
FOR i FROMLWB a + 1 TOUPB a DO (a[i] > out | out := a[i]) OD;
out);
LWB(可替代为⌊)和UPB(可替代为⌈),这两个运算符所运算的多元组运算元的模态是ROW,它是指称任何横行(英语:Row- and column-major order)的模态。在未修订报告的语言中,LWS(可替代为⎩)和UPS(可替代为⎧),分别是在一个多元组(数组)的这个维度的“下界状态”和“上界状态”为固定的(fixed)的情况下返回TRUE。
^ 1.01.1Neil Matthew. The RSRE Algol-68RS Compiler. May 2021 [2024-11-09]. (原始内容存档于2024-11-09). An update of the original port by Sian Mountbatten of a68toc (ctrans) from Algol-68RS/ELLA2000 updated to run on Intel and ARM processors (32- and 64-bit) Linux and macOS systems.
^Dennis Ritchie. The Development of the C Language(PDF). April 1993 [2024-11-17]. (原始内容存档(PDF)于2015-06-11). The scheme of type composition adopted by C owes considerable debt to Algol 68, although it did not, perhaps, emerge in a form that Algol’s adherents would approve of. The central notion I captured from Algol was a type structure based on atomic types (including structures), composed into arrays, pointers (references), and functions (procedures). Algol 68’s concept of unions and casts also had an influence that appeared later. …… a notation for type conversions (called ‘casts’ from the example of Algol 68) was invented to specify type conversions more explicitly.
^A History of C++: 1979−1991(PDF). Page 12, 2nd paragraph: Algol68 [gave] operator overloading(§3.3.3), references (§3.3.4), and the ability to declare variables anywhere in a block (§3.3.1). March 1993 [2024-11-17]. (原始内容存档(PDF)于2022-04-23).
^C. H. Lindsey. A history of ALGOL 68. January 1996. Although it had been discussed at Tutzing (March 1964) and Baden (September 1964), work started in earnest at the Princeton meeting in May 1965. The chairman's Activity Report to TC2 for that meeting [Van der Poel 1965] shows a wide ranging discussion on basic aspects of the language. There was much interest in the language EULER [Wirth 1966a] and particularly in its 'trees' or 'lists'. There was a strong feeling towards what now we should call 'strong typing', and even a firm decision to have coercion from integer to real to complex.
^C. H. Lindsey. A history of ALGOL 68. January 1996. The first public mention of ALGOL X (which eventually became ALGOL 68) and of the mythical ALGOL Y (originally conceived as a language that could manipulate its own programs, but in fact degenerating into a collection of features rejected for ALGOL X) was in a paper entitled "Cleaning up ALGOL 60" [Duncan 1964].
^van Wijngaarden, Adriaan. MR 76: Orthogonal design and description of a formal language (技术报告). Amsterdam: CWI. 1965-10-22 (英语). The strict language is a phrase structure language, defined by a formal system, which uses the notation and the definitions explained below. The structure of the language is determined by the three quantities: Tl, called the set of basic constituents of the strict language, T2, called the set of syntactic entities, T3, called the set of syntactic rules. Moreover are defined T4, the set of all possible sequences of members of Tl, and T5, the set of all possible sequences of members of Tl and T2. …… The formal system itself is a phrase structure language, called metalanguage, which can be defined analogously. Its basic constituents are the names of the syntactic entities of the language and their constituting words. Its syntactic entities are denoted by a capital metaletter.
^signed by Edsger Dijkstra, Fraser Duncan, Jan Garwick, Tony Hoare, Brian Randell(英语:Brian Randell), Gerhard Seegmüller, Wlad Turski, Mike Woodger(英语:Mike Woodger). ALGOL Bulletin 30.1.1.1 "Minority Report". March 1970 [2007-03-01]. (原始内容存档于2007-09-30). More than ever it will be required from an adequate programming tool that it assists, by structure, the programmer in the most difficult aspects of his job, viz. in the reliable creation of sophisticated programs. In this respect we fail to see how the language proposed here is a significant step forward: on the contrary, we feel that its implicit view of the programmer's task is very much the same as, say, ten years ago. This forces upon us the conclusion that, regarded as a programming tool, the language must be regarded as obsolete.
^Hoare, C. a. R.Critique of ALGOL 68. ALGOL Bulletin. November 1968, 29: 27–29 [2024-10-30]. (原始内容存档于2024-02-22). I believe that the essential problem in the design of self-extending languages is in the design of the nucleus of built-in features, which the implementor will be expected to represent within the machine code of his computer. It is essential that this nucleus should have the properties: 1. Extreme simplicity and small size …… 2. Extreme efficiency of implementation …… I would therefore reckon that a language at about the level of FORTRAN would be a suitable choice for a nucleus. The language nucleus described in MR93 is far too elaborate; and some of its defects are listed in Appendix II.
^Dijkstra, E. W.To the Editor ALGOL 68 Mathematische Centrum. [2007-04-28]. (原始内容存档于2007-04-21). On account of the draft report my faith in WG.2.1 (at least in its present constitution) is very low. The draft report is thick and difficult, in fact too thick and too difficult to inspire much confidence. …… Size and complexity of the defining apparatus you needed terrify me. Being well-acquainted with your ingenuity I think it a safe assumption that ALGOL 68 as conceived can hardly be defined by significantly more concise and transparent means. …… I feel inclined to put the blame on the language you tried to define. If this is correct, WG.2.1 should return to its proper subject matter, viz. programming languages.
^Niklaus Wirth. ALGOL Colloqium – Closing Word. 1968 [2024-10-31]. (原始内容存档于2024-04-02). The implied and rather vague goal was the specification of a universal language, a sensible goal in 1960, even 1964, but an utopia in 1968; a goal which if pursued faithfully, invariably lead towards a monster language, a species of which there already exists a sample hardly worth nor possible to compete with.
^Learning Algol 68 Genie(PDF). [2024-10-31]. (原始内容存档(PDF)于2024-07-11). Some claim that Ada is Algol 68’s successor but many dispute that.
^Lindsey, Charles H. Bergin, T. J.; Gibson, R. G. , 编. A history of ALGOL 68. History of Programming Languages-II 28. also in ACM SIGPLAN Notices 28(3), March 1993 (includes a comprehensive bibliography of the meetings and discussions before, during and after development of ALGOL 68). ACM Press. 1996: 97–132. ISBN 978-0-201-89502-5. doi:10.1145/155360.155365.
^Adriaan van Wijngaarden. Generalized ALGOL(PDF). Symbolic Languages in Data Processing, Proc. Symp. Intl, Computation Center Rome, Gordon & Beach, New York. 1962 [2024-10-30]. (原始内容存档(PDF)于2024-09-15). The main idea in constructing a general language, I think, is that the language should not be burdened by syntactical rules which define meaningful texts. On the contrary, the definition of the language should be the description of an automatism, a set of axioms, a machine or whatever one likes to call it that reads and interprets a text or program, any text for that matter, i.e. produces during the reading another text, called the value of the text so far read. This value is a text which changes continuously during the process of reading and intermediate stages are just as important to know as the final value. Indeed, this final value may be empty.
^A. van Wijngaarden and B. J. Mailloux. A Draft Proposal for the Algorithmic Language ALGOL X. IFIP WG 2.1 Working Paper 47 (Warsaw 2), October 1966.
^Van Wijngaarden, A.; Mailloux, B. J.; Peck, J.; Koster, C. H. A. Draft Report on the Algorithmic Language ALGOL 68. ALGOL Bulletin. 1 March 1968, (Sup 26): 1–84 [7 April 2023]. (原始内容存档于2023-04-10) –通过Mar. 1968.
^Sidney Marshall. J. E. L. Peck , 编. ALGOL 68 Implementation(PDF). Proceedings of the IFIP Working Conference on ALGOL 68 Implementation, Munich,: 239–243. July 20–24, 1970 [2024-10-31]. (原始内容存档(PDF)于2024-08-16). Sidney Marshall. On the implementation of ALGOL 68(PDF). PhD Thesis, Dartmouth College. 1972 [2024-10-31]. (原始内容存档(PDF)于2024-08-12).
^"Application of the Machine-Oriented Language Epsilon to Software Development", I.V. Pottosin et al., in Machine Oriented Higher Level Languages, W. van der Poel, N-H 1974, pp. 417–434