In the sense that the syntax of most modern languages is
"Algol-like", it was arguably the most influential of the four
high-level programming languages with which it was roughly
contemporary:
There were three major specifications, named after the year they were first published: *
CONTENTS * 1 Important implementations * 2 History * 2.1 Algol and programming language research * 2.2 IAL implementations timeline * 3 Properties * 4 Examples and portability issues * 4.1 Code sample comparisons * 4.1.1
* 4.2 Timeline: Hello world * 4.2.1
* 4.3 Timeline of
* 5 See also * 6 References * 7 Further reading * 8 External links IMPORTANT IMPLEMENTATIONS The International Algebraic Language (IAL) was extremely influential
and generally considered the ancestor of most of the modern
programming languages (the so-called Algol-like languages).
Additionally,
HISTORY
Peter Naur: "As editor of the
The following people attended the meeting in Paris (from 1 to 16 January): *
As
IAL IMPLEMENTATIONS TIMELINE To date there have been at least 70 augmentations, extensions, derivations and sublanguages of Algol 60. NAME YEAR AUTHOR COUNTRY DESCRIPTION TARGET CPU ZMMD-implementation
1958
X1
Burroughs Algol
(Several variants) 1961
Case
GOGOL
1961
William McKeeman
USA
For ODIN time-sharing system
RegneCentralen
USS 90 Algol 1962 L. Petrone Italy Algol Translator 1962 G. van der Mey and W.L. van der Poel Netherlands Staatsbedrijf der Posterijen, Telegrafie en Telefonie ZEBRA Kidsgrove Algol 1963 F. G. Duncan UK
V
Whetstone
1964
NU
Norway ALGEK 1965 USSR
Minsk-22
АЛГЭК, based on ALGOL-60 and
M
EXAMPLES AND PORTABILITY ISSUES CODE SAMPLE COMPARISONS
(The way the bold text has to be written depends on the implementation, e.g. 'INTEGER' -- quotation marks included -- for INTEGER. This is known as stropping .) PROCEDURE Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k); VALUE n, m; ARRAY a; INTEGER n, m, i, k; REAL y; COMMENT The absolute greatest element of the matrix a, of size n by m is transferred to y, and the subscripts of this element to i and k; BEGIN INTEGER p, q; y := 0; i := k := 1; FOR p := 1 STEP 1 UNTIL n DO FOR q := 1 STEP 1 UNTIL m DO IF abs(a) > y THEN BEGIN y := abs(a); i := p; k := q END END Absmax Here's an example of how to produce a table using
FLOATING POINT
PUNCH(3) sends output to the teleprinter rather than the tape punch. SAMELINE suppresses the carriage return + line feed normally printed between arguments. ALIGNED(1,6) controls the format of the output with 1 digit before and 6 after the decimal point.
The following code samples are
PROC abs max = (REAL a, REF REAL y, REF INT i, k)REAL: COMMENT The absolute greatest element of the matrix a, of size ⌈a by 2⌈a is transferred to y, and the subscripts of this element to i and k; COMMENT BEGIN REAL y := 0; i := ⌊a; k := 2⌊a; FOR p FROM ⌊a TO ⌈a DO FOR q FROM 2⌊a TO 2⌈a DO IF ABS a > y THEN y := ABS a; i := p; k := q FI OD OD; y END # abs max # Note: lower (⌊) and upper (⌈) bounds of an array, and array slicing, are directly available to the programmer. floating point algol68 test: ( REAL a,b,c,d; # printf - sends output to the FILE stand out. # # printf($p$); – selects a new page # printf(($pg$,"Enter d:")); read(d); FOR step FROM 0 WHILE a:=step*d; a Links: ------ /#cite_note-1 |