Language peer sets for ALGOL 68: International↑ International/1968↑ Designed 1968 ↑ 1960s languages ↑ Third generation↑ High Cold War↑ Genus True ALGOL68s ↑ Numerical Scientific ↑ True ALGOL68s↑ Generation of Algol 68↑ Algol family ↑ True ALGOL68s/1968↑ Generation of Algol 68/1968↑ Algol family/1968↑ True ALGOL68s/International↑ Generation of Algol 68/International↑ Algol family/International↑ Numerical Scientific ↑ Numerical Scientific/1968↑ Numerical Scientific/aa ↑
ALGOL 68(ID:311/alg019)
3rd generation ALGOL
alternate simple view
Country: International
Designed 1968
Published: 1968
Genus: True ALGOL68s
Sammet category: Numerical Scientific 1968 Adriaan van Wijngaarden et al.
Discussed from 1963 by Working Group 2.1 of IFIP.
Definition accepted Dec 1968.
ALGOL 68 was complex, and posed difficulties for both implementors and users. But it was also the first truly universal language.
Structural equivalence. Automatic type conversion, including dereferencing. Flexible arrays. Generalized loops (for-from-by-to-while-do-od), if-then-elif-fi, integer case statement with 'out' clause, skip statement, goto. Blocks, procedures and user-defined operators. Procedure parameters. Concurrent execution (cobegin/coend) and semaphores. Generators heap and loc for dynamic allocation. No abstract data types, no separate compilation.
a) In designing the Algorithmic Language ALGOL 68, Working Group 2.1 on ALGOL of the International Federation for Information Processing expresses its belief in the value of a common programming language serving many people in many countries.
b) ALGOL 68 is designed to communicate algorithms, to execute them efficiently on a variety of different computers, and to aid in teaching them to students.
Ob Dict - despite the fury of the Algol 60 afficianadoes in the face of Algol 68, it was a very well thought through experiment in language design. It is instructive to read the disgust that SHARE memebers like Bernstein felt at the arrival of Algol 60 after the beauty of Algol 58, which they thought required so little to fix it up!
An imperative read is Lindsay 1972, which is a large introductory article that is also a fully functional Algol 68 Program Structures:
BEGIN # sort-tree merging, L. Allison 7/4/86 Dept. Computer Science, Monash University, Australia see: L. Allison. Some Applications of Continuations. The Computer Journal 31(1) pp9-16, 1988 #
MODE TREE = REF NODE; MODE NODE = STRUCT(INT e, TREE l, r);
PROC insert = (INT e, REF TREE t)VOID: # NB inserts in t as a side effect # IF TREE(t) IS NIL THEN t := HEAP NODE := (e, TREE(NIL), TREE(NIL)) ELIF e < e OF t THEN insert(e, l OF t) ELIF e > e OF t THEN insert(e, r OF t) FI;
PROC show = (TREE t)VOID: IF t ISNT NIL THEN print("("); show(l OF t); print(e OF t); show(r OF t); print(")") FI;
PROC traverse = (INT switch, TREE t, SCANNER continue, alternative)VOID: IF t IS NIL THEN continue(switch, alternative) ELSE PROC goright = (INT sw, SCANNER alt)VOID: trav(sw, t, continue, alt);
traverse(switch, l OF t, goright, alternative) FI;
PROC trav = (INT switch, TREE t, SCANNER continue, alternative)VOID: # traverse the root node and right sub-tree of t only. # IF t IS NIL THEN continue(switch, alternative) ELIF e OF t <= switch THEN print(e OF t); traverse( switch, r OF t, continue, alternative) ELSE # e OF t > switch # PROC defer = (INT sw, SCANNER alt)VOID: trav(sw, t, continue, alt);
alternative(e OF t, defer) FI;
PROC m = (TREE s, t, SCANNER scans, scant)VOID: IF TREE(l OF s) ISNT NIL THEN PROC travright = (INT sw, SCANNER alt)VOID: trav(sw, s, scans, alt);
m(l OF s, t, travright, scant) ELIF TREE(l OF t) ISNT NIL THEN m(t, s, scant, scans) ELSE # l OF s IS l OF t IS NIL, so now have their smallest elts # PROC scanstree = (INT sw, SCANNER alt)VOID: trav( sw, s, scans, alt); PROC scanttree = (INT sw, SCANNER alt)VOID: trav( sw, t, scant, alt);
IF (e OF s) <= (e OF t) THEN scanstree( e OF t, scanttree) ELSE scanttree( e OF s, scanstree) FI FI;
SCANNER halt = (INT sw, SCANNER a)VOID: print((" the end", newline)); SCANNER fin = (INT sw, SCANNER a)VOID: (print( " finish: "); a(max int, halt));
IF s IS NIL THEN traverse( max int, t, halt, halt) ELIF t IS NIL THEN traverse( max int, s, halt, halt) ELSE m(s, t, fin, fin) FI END #merge#;
LOC TREE s:=TREE(NIL), t:=TREE(NIL); LOC INT n;
WHILE read(n); n>=0 DO insert(n, s) OD; show(s); print(newline); WHILE read(n); n>=0 DO insert(n, t) OD; show(t); print(newline);
merge(s, t) END
( # .nf Strassen's O(n^log2(7)) matrix multiplication algorithm L.Allison wacsvax UWA 26 June 1984 Dept. Computer Science, Monash University, Australia #
OP * = ([,] INT a,b) [,]INT: IF INT all=1 UPB a; all = 1 LWB a THEN # 1x1 # a[1,1]*b[1,1] ELSE # nxn # INT half = all % 2; # i.e. all div 2 #
[,]INT a11=a[1:half,1:half], # i.e. top left quarter of a # a12=a[1:half,half+1:all], # top right # a21=a[half+1:all,1:half], # etc. # a22=a[half+1:all,half+1:all],
LOC[1:all,1:all]INT c; # c will become a*b # REF[,]INT c11=c[1:half,1:half], c12=c[1:half,half+1:all], c21=c[half+1:all,1:half], c22=c[half+1:all,half+1:all];
OP + = ([,]INT a,b)[,]INT: ( [1:1 UPB a, 1:2 UPB a]INT c; FOR i TO 1 UPB a DO FOR j TO 2 UPB a DO c[i,j]:=a[i,j]+b[i,j] OD OD; c );
OP - = ([,]INT a,b)[,]INT: ( [1:1 UPB a, 1:2 UPB a]INT c; FOR i TO 1 UPB a DO FOR j TO 2 UPB a DO c[i,j]:=a[i,j]-b[i,j] OD OD; c );
PROC show = ([,]INT a)VOID: ( print(newline); FOR i TO 1 UPB a DO FOR j TO 2 UPB a DO print( whole(a[i,j],6) ) OD; print(newline) OD; print(newline) );
[,]INT a=((1,2,3,4),(5,6,7,8),(9,10,11,12),(13,14,15,16)), # a little test # b=((17,18,19,20),(21,22,23,24),(25,26,27,28),(29,30,31,32));
show(a); show(b); show(a*b) )
BEGIN # Algol-68 primes numbers, functional style 27/6/85 # # L.Allison Computer Science, University of Western Australia # # Computer Science, Monash University, Australia #
Berry, Daniel M. (1970) Berry, Daniel M. "The importance of implementation models in ALGOL 68: or how to discover the concept of necessary environment" pp14-24
Extract:
doiAbstractExtract:
THe necesary environment in [SIGPLAN] (1970) SIGPLAN Notices 5(09) September 1970
Golde, H. (1970) Golde, H. review of A. van Wijngaarden et al 1969
Abstract in (1970) ACM Computing Reviews 11(10) October 1970
John Hoskyns and Co (1974) John Hoskyns and Co "Decision tables - Evaluation of programming and systems techniques" Central Computing Agency London 1974
in van der Poel, Maarsen (eds) (1974) Machine Oriented Higher Level Languages (van der Poel, Maarsen, editors) North Holland 1974
Leavenworth and Sammet (1974) Leavenworth, Burt M.; Sammet, Jean E. "An overview of nonprocedural languages" pp1-12
Abstract in [VHLL 1974] (1974) Proceedings of the ACM SIGPLAN symposium on Very high level languages, March 28-29, 1974, Santa Monica, California, United States
Branquart et al. (1976) Branquart et al. "An Optimized Translation Process and Its Application to ALGOL 68", LNCS 38 Springer-Verlag 1976
in [VHLL 1974] (1974) Proceedings of the ACM SIGPLAN symposium on Very high level languages, March 28-29, 1974, Santa Monica, California, United States
Houssais B., Production systématique de tests comm (1976) Houssais B., Production systématique de tests commandée par une grammaire. Application à la validation d'un compilateur Algol 68. Thèse, IRISA, Université de Rennes, 1976
in [VHLL 1974] (1974) Proceedings of the ACM SIGPLAN symposium on Very high level languages, March 28-29, 1974, Santa Monica, California, United States
Pagan, F.G. (1976) Pagan, F.G. "A Practical Guide to Algol 68", Wiley, 1976
in [VHLL 1974] (1974) Proceedings of the ACM SIGPLAN symposium on Very high level languages, March 28-29, 1974, Santa Monica, California, United States
Pagan, FG (1976) Pagan, FG "On interpreter-oriented definitions of programming languages"
AbstractOnline copy in (1976) The Computer Journal 19(2) May 1976
(1976) The Higher Order Language Working Group (HOLWG) Working Paper on 23 exisitng programming languages
in (1976) The Computer Journal 19(2) May 1976
Wichmann, B. A. (1976) Wichmann, B. A. "Ackermann's function: a study in the efficiency of calling procedures" BIT 16 (1976), pp103-110
AbstractExtract:
IntroductionExtract:
Ackermann's functionExtract:
AcknowledgementsExtract:
Results of tests (altered to include authors where known)Extract:
Program listingExtract:
Properties of the algorithmExtract:
Notes on the results and Factors influencing the execution speedExtract:
Conclusion in (1976) The Computer Journal 19(2) May 1976
Bennett, M. (1977) Bennett, M. W. Implementation of a PDP11/ICL1900 cross assembler in Algol 68R pp153-156
in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Craven, P. G. (1977) Craven, P. G. "Derivatives without tears in Algol 68" pp19-26
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Foster, J. (1977) Foster, J. M. and Foster, P. D. Abstract data and functors pp161-167
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
(1977) Grune, Dick Towards the design of a super-language of ALGOL 68 for the Standard Prelude (Excerpt) pp78-81
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Housden, R.J.W. (1977) Housden, R.J.W. and Kotarski, N. Character string pattern matching in Algol 68 pp144-152
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
(1977) Houssais, Bernard Verification of an Algol 68 implementation pp117-128
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Pagan, Frank G. (1977) Pagan, Frank G. "Algol 68 as an implementation language for portable interpreters" pp54-62
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Prudom, A.; and Hennell, M. A. (1977) Prudom, A.; and Hennell, M. A. "Some problems concerning the automatic translation of Fortran to Algol 68" pp138-143
in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
(1977) Ratcliff, Bryan ALGOL 68 and structured programming for learner-programmers pp157-160
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Rayward-Smith, V. (1977) Rayward-Smith, V. J. Using procedures in list processing pp179-183
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Simonet, M. (1977) Simonet, M. An attribute description of a subset of Algol 68 pp129-137
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Szöke, Péter (1977) Szöke, Péter "Some remarks on new instances and garbage collection" pp42-48
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Taupin, Daniel (1977) Taupin, Daniel "The ALGOL 68 compiler of Paris-XI University (Orsay)"
pp109-116
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
van der Meulen, S. G. (1977) van der Meulen, S. G. "ALGOL 68 might-have-beens" pp1-18
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
van Vliet, J. (1977) van Vliet, J. C. Towards a machine-independent transput section pp71-77
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Vansina, C. F. (1977) Vansina, C. F. "Description of dynamic manipulation of ALGOL68 values using a generative grammar." pp63-70
Abstract in [Proceedings] (1977) Proceedings of the Strathclyde ALGOL 68 conference Glasgow, Scotland 1977
Bowlden, H.J. (1978) Bowlden, H.J. "An introduction to Algol 68"
in [HOPL I] (1979) SIGPLAN Notices 14(04) April 1979 including The first ACM SIGPLAN conference on History of programming languages (HOPL) Los Angeles, CA, June 1-3, 1978
Garside, GR and Pintelas, PE (1980) Garside, GR and Pintelas, PE "An ALGOL 68 package for implementing graph algorithms" pp. 237-242
AbstractOnline copyAbstractExtract:
Introduction in (1980) The Computer Journal 23(3) 1980
Hoare, CAR (1980) Hoare, CAR "The Emperor's Old Clothes" the ACM Turing Award lecture, 1980
Extract:
The birth of Algol 68 in [ACM] (1981) [ACM] CACM 24(02) February 1981
(1993) IEEE Oral History Interview with Ernst Denert 1993
Extract:
Algol 68 in Alberts, G. (ed) (1993) Alberts, G. (ed) "Conference on the history of ALGOL 68" CWI, Amsterdam 1993
Meertens, L. (1993) Meertens, L. "The design of elegant languages" pp53-64
in Alberts, G. (ed) (1993) Alberts, G. (ed) "Conference on the history of ALGOL 68" CWI, Amsterdam 1993
C.H. Lindsey (1996) C.H. Lindsey "A HISTORY OF ALGOL 68"
in [HOPL] (1996) "History of Programming Languages", ACM Press/Addison-Wesley Publishing Company, New York (1996) ed Bergin and Gibson
Koster, Cornelis H. A. (1996) Koster, Cornelis H. A. "The Making of Algol 68" pp55-67
Extract:
The CommitteeExtract:
Mending the fencesExtract:
The North-Berwick meetingExtract:
The IFIP 1968 Congress Extract:
Towards MunichExtract:
And after in [Proceedings] (1996) Proceedings of the Second International Andrei Ershov Memorial Conference on Perspectives of System Informatics LNCS 1161 Springer-Verlag, 1996
Ritchie, Dennis M. (1996) Ritchie, Dennis M. "The development of the C programming language" in "History of Programming Languages", ACM Press/Addison-Wesley Publishing Company, New York (1996) ed Bergin and Gibson
in [Proceedings] (1996) Proceedings of the Second International Andrei Ershov Memorial Conference on Perspectives of System Informatics LNCS 1161 Springer-Verlag, 1996
Bauer (2002) Bauer, Friedrich L. "My Years with Rutishauser"
pdfExtract:
IntroductionExtract:
Rutishauser’s way to StiefelExtract:
Stanislaus, Klammerausdrücke, ALGOLExtract:
Algol 60 and 68 in (2002) Latsis Symposium 2002 on the 50th Anniversary of the Conjugate Gradient Algorithm
George Gray (2002) George Gray "UNIVAC and ALGOL" Unisys History Newsletter
6(2) June 2002
Extract:
InformationOnline copy at UNISIS History in (2002) Latsis Symposium 2002 on the 50th Anniversary of the Conjugate Gradient Algorithm Resources