<<

J l A-53163 j '2.- '1....- CW/ Am sterdam e

Ceotrum voor Wiskunde en lnformatica REPORT,RAPPORT

I Conference on the history of ALGOL 68

G. Alberts (ed.) ]

J Department of Analysis, Algebra and Geometry

] Historical Note AM-HN9301 January 1993 E> ~ Centrum voor Wiskunde en lnfor~a~~ \ REPORT RAPPORT

Conference on the history of ALGOL 68

G. Alberts (ed.)

CWI BIBLIOTHEEK

ll ll lllllll l l~ ll llll l lllll llll 1 ~ 1 111 1 1 1 11111 1 1111 1 11 1 11 1 11111 1 Department of Analysis, Algebra and Geometry 3 0054 00113 1078 Historical Note AM·HN9301 January 1993

I; j f] i ) ! ii -·.... \ ~ r··-:. ,.:./~J~:itr·u·:i' · ',· r ·"'. 1,r.{ic:'k •1r·, ·:,-. :..1', ·,·,·1, !q r,'1iniltJ ' '<::.. •..>:J" l.. •,..,,,,., , j 1p ~ • I . • , _ \., , " 1 \,,1 I \J ·~"-... Amsf!]td a m · ~;- = ::'. ~_ _: :_ · · -

CWI is the National Research Institute for Mathematics and Science. CWI is part of the Stichting Mathematisch Centrum (SMC), the Dutch foundation for promotion of mathematics and and their applications. SMC is sponsored by the Organization for Scientific Research (NWO). CWI is a member of ERCIM, the European Research Consortium for Informatics and Mathematics.

Copyright © Stichting Mathematisch Centrum P.O. Box 4079, 1009 AB Amsterdam (NL) Kruislaan 413, 1098 SJ Amsterdam (NL) Telephone +31 20 592 9333 Telefax +31 20 592 4199 Contents

Introduction to the Conference 5 Gerard Alberts

History of Programming Languages, a Survey 9 Friedrich L. Bauer

The History of ALGOL 68 (Extended Abstract) 23 Charles Lindsey

The Making of Algal 68 27 Gees Koster

An orthogonal first 41 Sietse van der M eulen

Algal 68 - 25 Years in the USSR 45 Mikhail A. Bulyonkov, Alexandr F. Rar, Andrei N. Terekhov

The Design of Elegant Languages 53

Aad van Wijngaarden and the Mathematisch Centrum, A personal recollection 65 John Peck

Program of the Conference 73

5

Introduction to the Conference

Gerard Alberts

Among the many records, recordings and minutes one is missing: the very announce­ ment of ALGOL 68 , the occasion which gave it '68 rather than any other affix. Aad van Wijngaarden had been invited to talk on ALGOL 68 at the 1968 IFIP Congress in . Thus ALGOL X had unalterably become ALGOL 68. Van Wijngaarden addressed an overloaded lecture hall, expectations were high. He did raise the room ( cf. the reflections by Kees Koster in this volume and by Heinz Zemanek [7] and Wladislaw Turski [8]) . Probably, in the whole history of this programming language, there has not been a second moment of such glory. The address was never published. The quarter century that elapsed since the presentation of ALGOL 68 is worth noting. And the 4 7th anniversary of the Stichting Mathematisch Centrum is the ade­ quate occasion to do so. Strong Dutch influence tainted this language and, conversely, ALGOL 68 has been of great importance to t he Dutch computing community and to the Mathematical Centre (as the CWI was called at the time) in particular. The leading role of Aad van Wijngaarden, then director of the Mathematical Centre, in its design explains why to the CWI looking at the history of ALGOL 68 is tantamount to regarding part of its own past. In the Netherlands ALGOL 68 served as a point of identification, both positive and negative, and it gave direction to frontline research in computer science. Should one say that it is the Dutch among programming languages? Taking into account the relative number of computer scientists "speaking" it and adding to this the fact that its users are proud of speaking so many foreign languages, the comparison is quite convincing. Then again ALGOL 68 has these distinct qualities of rationality and elegance never attributed to Dutch - except by Simon Stevin [1]-. Moreover it was designed, one might say overloaded with design, by a committee. It has become classic without ever reach­ ing real widespread use. My suggestion is that it is the Sanskrit of informatics. The future computer scientist as well as the historian of computing who would know the truth about programming languages, will always return to ALGOL 68. This conference is meant to contribute to the documentation of its history.

Survey What one hopes for in bringing together different perspectives on one topic in a con­ ference, already gleams in the papers presented here, the more so if we may take into account Charles Lindseys report to the ACM, to be published in the SIGPLAN No­ tices of March 1993 [10]. The combination allows for a synthesis and a first historical

- - • :·---;: =- <,;. ·

this this domain. domain. The The combination combination of of prid t t and and responsibility responsibility is is not not hard hard to to imagine. imagine.

were were the the pioneers pioneers of of modern modern technolo g y y and and at at the the forefront forefront of of the the search search for for truth truth in in

reasonable, reasonable, rational rational scientists, scientists, they they ex pected pected themselves themselves t o o do do better. better. After After all, all, they they

Then Then why why in in their their own own retrospective retrospective judgement judgement should should t hey hey have have been been saints? saints? Being Being

deplore deplore their their behaviour. behaviour. Is Is such such behaviour behaviour not not what what n01mally n01mally happens happens in in committees? committees?

be , , why why in in retrospect retrospect the the WG WG 2.1- rn embers embers involved involved re p roach roach themselves themselves and and seem seem to to

than than thirty thirty years years ago. ago. Such Such question, question, however , , is is ill-pos e d. d. The The proper proper question question should should

tion tion is is how how the the author author and and his his colleagues colleagues could could have have treated treated each each other other so so nastily nastily - less less

time time and and again again implicitly implicitly remembered remembered of of how how bad bad the the " we" we" behaved. behaved. The The silent silent ques­

in in constantly constantly stressing stressing the the fights fights and and tensions tensions in in the the Working Working Group. Group. The The reader reader is is

utes" utes" [6]. [6]. And And minutes minutes were were kept. kept. Van Van der der Poels Poels anthology anthology from from these these is is no no exception exception

the the repentant repentant "It "It undertone. undertone. may may be be true true that that a a committee committee wastes wastes hours , , it it keeps keeps min­

many many recordings recordings and and minutes , , exposing exposing a a high high degree degree of of selfconsciousness. selfconsciousness. Second Second is is

Pervading Pervading all all the the contributions contributions are are two two striking striking features. features. First First is is the the fact fact of of so so

reported reported to to sigh: sigh: "The "The words words you you use use are are so so ambitious " " [6]. [6].

a a thing thing of of beauty. " " [9] [9] Bauer Bauer in in turn, turn, confronted confronted with with this this attitude attitude in in the the WG2.1 , , is is

being being a a mathematician, mathematician, once once one one wants wants to to create create something, something, of of course course one one would would make make

and and too too uncompromising: uncompromising: "Algol "Algol 68 68 may may show show some some traces traces of of that that attitude. attitude. But But list e n: n:

passed passed away , , van van Wijngaarden Wijngaarden readily readily admitted admitted that that he he might might have have been been too too extreme extreme

in in IFIPs IFIPs Working Working Group Group 2.1 2.1 its its special special dynamics. dynamics. In In an an interview, interview, shortly shortly before before he he

cannot cannot fail fail to to perceive perceive the the scientific scientific generation- conflict conflict which which gave gave the the design design process process

on on occasions. occasions. Moreover Moreover the the reader reader of of the the quotes quotes presented presented by by Van Van der der Poel Poel in in [ 6 ] ]

his his methods methods of of maintaining maintaining power power were were not not always always subtle. subtle. Wirth Wirth must must have have suffered suffered

viz. viz. that that ALGOL ALGOL 68 68 emerged emerged as as van van Wijngaardens Wijngaardens project. project. He He was was the the boss boss and and

Peck Peck and and Koster Koster linger linger long long enough enough to to state state in in full full what what is is implicit implicit with with Lindsey , ,

Personal Personal notes notes and and other other aids aids to to interpretation interpretation

of of the the time. time. No No attempt attempt to to that that end end is is made made here. here.

relate relate the the developmen t s s in in informatics informatics and and automation automation to to the the cultural cultural and and social social events events

remains remains It It a a hard hard task task here, here, just just as as for for t he he whole whole of of history history of of computing, computing, to to sensibly sensibly

" iron iron curtain " " there there is is no no reference reference to to what what was was going going on on " in in the the real real world " " in in 1968. 1968.

Petersburg. Petersburg. The The result result is is a a lively, lively, although although fully fully inside inside view view - except except for for mention mention of of an an

Terekhov. Terekhov. The The impact impact in in t he he USSR USSR has has been been reported reported from from both both Novosibirsk Novosibirsk and and St. St.

t he he Netherlands Netherlands by by Sietse Sietse van van der der Meulen Meulen and and for for the the USSR USSR by by Rar, Rar, Bulyonkov Bulyonkov and and

dramatis dramatis personae personae leap leap from from the the pages. pages. The The reception reception of of ALGOL ALGOL 68 68 is is treated treated for for

Kees Kees Koster Koster and and John John Peck Peck add add to to Lindseys Lindseys account , , their their piercing piercing views views make make the the

the the present , , focusin g g on on the the zeal zeal of of designing designing elegant elegant languages. languages. By By their their recollection s s

ming ming and and programming programming languages. languages. Lambert Lambert Meertens Meertens continues continues that that line line of of thought thought to to

Bauer, Bauer, in in his his contribution, contribution, embeds embeds this this in in a a broad broad historical historical perspective perspective on on program ­

ALGOL ALGOL 60, 60, in in 1962 , , and and the the las t t issue issue of of the the ALGOL ALGOL Bulletin Bulletin in in 1978. 1978. Friedrich Friedrich

technically technically evaluating evaluating chronicle chronicle of of the the timespan timespan between between settling settling the the last last details details of of

evaluation evaluation of of ALGOL ALGOL 68. 68. Lindsey Lindsey presents presents us us with with an an extremely extremely well-informed well-informed and and

6 6 Alberts: Alberts: G. G. Introduction Introduction to to the the Conference Conference Conference on the History of ALGOL 68 7

Points of synthesis

A higher goal was cherished in WG 2.1. It was out for the truth, for the true universal programming language. The result was a twofold success: a universal programming language and the insight that no truth exists in this respect. Such result can of course only be gained once. Superposition of the perspectives offered by Bauer and Koster upon Lindseys rich material suggests that a certain development culminated in this algorithmic language. There seems to reign a touch of inner logic in the development of computer science, deciding that programming gains recognition as an autonomous subject only gradually, and that once this occurs - say from 1955 onwards - the al­ gorithmic perspective is the first to be developed. As Bauer puts it: ".. is more directed towards the essential content. Mathematicians therefore frequently prefer it; algorithmic languages are (or should be) programming languages under some abstractions from notational details." Now we can understand why the strive for machine-indepence, for universal language and for algorithmic approach could so well coincide; why WG 2.1 had no trouble in believing that the language had been more or less decided upon, independent of van Wijngaardens description; and finally how van Wijngaardens extremely mathematical approach could drive things to the paradoxical result that content and description became fully entangled, instead of independent. Therefore ALGOL 68 had to be both the limit and the end of the algorithmic era in informatics. The malcontents within WG 2.1, writing a minority report and creating what was to become WG 2.3 on Programming Methodology, in fact stood up for the next era; whether one calls the next episode that of programming methodology, of systems devel­ opment, or of software engineering is a matter of taste and viewpoint - and of further historical research -. Turski in retrospect [8] notes that within WG 2.1 from the draft MR 93 onwards common ground was simply lost, because the critics did not under­ stand tenor of the desciption method and the authors, unaware of that fact, basicly resented the misdirected comments. Put otherwise: if one party claimed to search for truth, the very process the committee was in, is there to testify the lack of ultimate truth in this newest and most modern of sciences. In the process, of course, neither party could perceive the paradox noted above. Maybe the participants in the vehement debates of WG 2.1 did intend to be personal in their remarks; however the purport of controversy is quite recognizable as a logical one, as growing pains, in the development of computer science. Hence, in a somewhat detached long-term perspective the history of ALGOL 68 is marked by two milestones. One was van Wijngaardens introduction of orthogonal de­ sign and two level grammar [2], where he drove home the mathematical import of the algorithmic approach. The other was the informal creation of WG 2.3 on programming methodology during the meeting in Scotland, North Berwick, August 1968 (cf. [10)) in the week before van Wijngaarden gave his glorious presentation before the IFIP community.

appear , , abstract abstract in in this this volume). volume).

C.H. .H. Lindsey Lindsey (10] (10] 'A 'A History History of of ALGOL ALGOL In: In: 68 SIGPLAN SIGPLAN ' . . Notices Notices March March ( to to 1993 1993

Stichting Stichting Mathematisch Mathematisch Centrum, Centrum, pp. pp. 1987, 1987, 276-288. 276-288.

Zij Zij mogen mogen uiteraard uiteraard daarbij daarbij de de z uivere uivere wiskunde wiskunde niet niet verwaa rloo Amsterdam: Amsterdam: zen. zen.

den' den' ( ( Language Language engineer). engineer). In: In: = = G. G. Alberts , , F . . van van der der Blij Blij en en N N uis uis ( eds. ) ) J. J.

[ 9j 9j G. G. Alberts Alberts and and P.C . . Baayen Baayen ' lngenieur lngenieur van van taal; taal; in terview terview met met A. A. van van Wijngaar­

pp. pp. 417-431] 417-431]

W.L. W.L. Turski Turski [8] [8] ' ALGOL ALGOL revisited revisited twelve twelve 6 8 8 years years later later or or from from AAD AAD to to ADA'. ADA'. In In (4: (4:

In In pp. pp. [4: [4: pp. pp. 1-28]; 1-28]; [5: [5: 303-331] 303-331]

[ 7] 7] H. H. Zemanek Zemanek 'The 'The Role Role of of Professor Professor A. A. van van Wijngaarden Wijngaarden in in the the History History of of IFIP ' . .

pp . . 373-392]. 373-392].

[ 6] 6] W.L. W.L. van van der der Po el el ' Some Some notes notes [3] on on ; ; the the history history (5: (5: of of ALGOL ' . . In In reprinted reprinted in in

dam: dam: Nor t h-Holland , , 1986. 1986.

[5] [5] H . . Zemanek Zemanek (e d. ) ) A A quarter quarter century century of of IFIP; IFIP; The The IFIP IFIP Silver Silver Summary Amst . . e r­

ematical ematical Centre). Centre). Amsterdam: Amsterdam: Nor t h-Holland, h-Holland, 1981. 1981.

Prof.Dr.fr. Prof.Dr.fr. A. A. van van Wijngaarden Wijngaarden on on the the occasion occasion of of his his retirement retirement from from the the Math­

[ 4] 4] J.W. J.W. de de Bakkk er er and and J.C . . van van Vliet Vliet (eds.) (eds.) Algorithmic Algorithmic Languag es. es. ( a a tribute tribute to to

Centrum Centrum ( Mathematical Mathematical Centre Centre Tracts Tracts 37) , , 1971. 1971.

[ 3] 3] J.W . . de de Bakkker Bakkker e .a . . MC-25 MC-25 Informatica Informatica Symposium Amsterdam: Amsterdam: . . Mathematisch Mathematisch

MR MR Amsterdam: Amsterdam: 76. 76. Mathematical Mathematical Centre Centre Computing Computing Dpt. , , 1965 1965

[ 2 ] ] A. A. van van Wijngaarden Wijngaarden 'Orthogonal 'Orthogonal design design and and description description of of formal formal language' language' Report Report

Stevin Stevin ( V V vols. ) ) Amsterdam: Amsterdam: Swets Swets en en Zeitlinger, Zeitlinger, Vol. Vol. 1955-1966, 1955-1966, I I pp. pp. 58-93. 58-93.

Leyden : : Plantijn, Plantijn, E.J. E.J. Dijkst 1586). 1586). erhuis erhuis e.a . . (eds.) (eds.) The The principle principle works works of of Simon Simon

the the Worth Worth of of the the Dutch Dutch Language '( Introductory Introductory chapter chapter to to The The art art of of Weighing. Weighing.

[ 1] 1] Simon Simon Stevin Stevin 'Uyts praeck praeck over over de de Weerdicheyt Weerdicheyt der der Duytsche Duytsche Tael/Discourse Tael/Discourse on on

References References

8 8 G. G. Alberts: Alberts: Introduction Introduction to to the the Conference Conference 9

History of Programming Languages, a Survey

Friedrich L. Bauer Technische Universitat Miinchen

automaton automaton and and says says 't he he automat < < ac ts ts ex actly actly as as ' n n intelligent intelligent being being who who

have have no no terminological terminological need need for for 'p 'p · ograms'. ograms'. Torre s, s, however, however, uses uses the the term term

Likewise, Likewise, Percy Percy E. E. Ludgate Ludgate (190 [) [) and and Leonardo Leonardo T orres orres y y Quevedo Quevedo (1914) (1914)

first first cards ' . .

seen seen by by his his speaking speaking of of 's mall mall pieces pieces of of formu l a e e previously previously made made by by the the

ble ble card'. card'. That That Babbage Babbage has has 1 1 nderstood nderstood pro gTa ms ms to to be be entities entities can can be be

card' card' and and subscript subscript numbers numbers l ik e e ( ( 4 , , 0 , , 10) 10) ap pe aring aring on on a a separate separate 'varia­

4 4

10 'V4 'V4 V x x V with with = = operation operation signs signs like like x x ' ' appearing appearing on on an an 'operation 'operation

culating culating Bernoulli Bernoulli numbers, numbers, using using as as building building elements elements instructions instructions such such as as

braic braic patterns'. patterns'. Nevertheless, Nevertheless, Babbage Babbage does does discuss discuss e.g. e.g. a a routine routine for for cal­

of of Ada Ada Countess Countess Lovelace, Lovelace, who who speaks speaks on on the the other other hand hand of of 'weaving 'weaving alge ­

' mill ' ' is is outlined, outlined, the the word word is is not not used, used, nor nor does does it it show show up up in in the the work work

in in fact fact in in his his paper paper of of Dec. Dec. 26, 26, 1837 , , wh e re re the the Analytical Analytical Engine, Engine, the the

turn turn up up first? first? One One would would not not expect expect it it ear lie r r than than in in Babbage's Babbage's work , , but but

1.1 1.1 Where Where did did the the term term program(me) program(me) in in its its Computer Computer Science Science meaning meaning

done , , effected effected or or accomplished ' . .

cedure' cedure' (Me rriam - Webster). Webster). Action Action as as well well as as procedure procedure mean mean 'something 'something

thought thought or or action action is is based ' ' (Longman), (Longman), ' a a principl e e governing governing action action or or pro ­

Russian Russian predpisanie predpisanie stands stands for for ' a a guiding guiding rule rule on on which which behaviour, behaviour, a a way way of of

be be done done in in certain certain condi ti ons'; ons'; precept precept ( German German Vorschrift, Vorschrift, French French precept e , ,

re , , Russian Russian predpisivat predpisivat stands stands for for (Longman) (Longman) 't o o state state what what must must happen happen or or

st ruction, ruction, rule , , ord er, er, law '. '. pr es cribe cribe (G erman erman vorschreiben, vorschreiben, French French pr escri ­

Greek Greek graphma , , gramma gramma means means 'prece pt, pt, prescrip tion, tion, specifi ~ in at ­ io n , ,

closer closer t o o the the ethymology ethymology of of pro-gra p h ei n n 'prescribe ': ':

rather rather s pe ci fic , , the the meaning meaning of of program( program( me ) ) in in today s s Co mpu te r r Scien ce ce i s s

la t ter ter meanings, meanings, dominating dominating in in ' pa rty rty program ' ' and and ' theate r r progr am ', ', ar e e

ling ling meaning meaning 'p ubli c c announcement, announcement, proclamation, proclamation, agenda'. agenda'. Whil e e the the two two

The The word word of of greek-lat in in descent descent came came up up i n n 19th 19th c entury entury w ith ith the the pr evai ­

oriented oriented principle s, s, st ipula ted ted infere n ces, ces, p re vi ewed ewed r un -o ffs . .

acti vi ties, ties, a a plan plan fo r r further further actio n ' ' (L on g man ), ), a a writt e n n display display of of goa l ­

T h e e word word program( program( me ) ) denotes denotes today today in in comm o n n usage usage ' a a lis t t of of planned planned

and and of of Programming Programming Languages Languages

The The Origins Origins 1 1 of of Programming Programming

10 10 F.L. F.L. Bauer : : Programmin Histor y y of of g g Languages, Languages, a a Su r vey vey Conference on the History of ALGOL 68 11 follows certain rules', his point is that it chooses the action and follows one or another path. He uses a 'diagram' for showing how this is done (fig. 1), indeed his program is a circuitry. Programming by circuitry was later the daily business of Hollerith type tabulating machines.

T 8 .l3 s m 1: r. -- -=-1 ;·- -:x=i ~ ~ -><-.-·=1 i-,, ~ 1 ~ 1 "' s · :i. -' 111• Ill'' I\, 1· JI, r · I\. k: I\" :::::J :::::J ~ =i :::J CJ c::.:J .:.:.::J ~ ~

c- - cJ~ I :;' -:>"

I I I I I v

'! ..\ · ~ .. . . , ,, , r-. I' v - I [-.,ii-- . ·/ [J ·- -i!f- ,-,· t:.. . £.!¥ . / , r::: -- '· ~-~ :·.' ~ .. _, , I. · . - \. : JL _-_ ~-- ·'·· ·- . .: ~ · . /.. . . --· . -

111 ' • • ft .. ~ . a 1:' D

fig. 1 Torres y Quevedo's program circuitry

Typically, Torres thinks of sequences of actions between branchings. That programs can split into trees of actions or actions can perform collaterally unt il they are collected into one path is beyond the machinery he is accu­ stomed to using. 1.2 In the definition above, the term 'plan' is used. plan means (Merriam­ Webster) 'a method devised for making or doing something or achieving an end' and thus is rather parallel to program. In fact, the German inventor uses systematically plan (German Plan) in his German Pa­ t ent Application Z23 139 IX/42m from April 11, 1936; his computing plan (Rechenplan) is strictly sequential and has no branching (fig. 2). Heinz

_-.:. --....._. ·

secondary secondary schools. schools. They They and and the the algorithm, algorithm, described described already already by by Euklid, Euklid,

by by Leibniz, Leibniz, the the algorithm algorithm of of extracting extracting the the square square root root had had to to be be learned learned at at

multiplication multiplication (with (with denary denary or or binary binary numbers) numbers) is is an an expression expression still still used used

the the development development of of mathematics mathematics in in Europe Europe since since 1200. 1200. The The algorithm algorithm of of

caliphes caliphes and and was was by by his his books, books, translated translated into into Latin, Latin, highly highly influential influential for for

Choresmi, Choresmi, the the Usbekian Usbekian scholar scholar who who lived lived around around 800 800 at at the the court court of of the the

1.3 1.3 A A third third word word comes comes into into play: play: algorithm. algorithm. Its Its origin origin points points to to Al­

fig. fig. Zuse's Zuse's 2 2 program program for for a 3 3 a by by 3 3 determinant determinant

17. ) )

0 0

1 5 5 Q Q = = R esul t t

16 . ) )

0 0 14 14 0 0

15. ) )

0 0

13 13 Subt. Subt. 0 0

14. ) )

.. .. 0 0 12 12 0 0

13. ) ) 10 10

11 11 Add. Add. 0 0

" " 12. ) ) 0 0

7 7 1 5 5

11. ) ) 3 3

5 5 0 0

10. ) ) 0 0

9 9 14 14

9. ) )

2 2 4 4 0 0

8 .) .)

0 0 8 8 13 13

7 . ) )

I I 6 6 0 0

6.) 6.) 0 0 8 8 12 12

5. ) )

3 3 4 4 0 0

4 .) .)

0 0 7 7 11 11

3. ) )

2 2 6 6 0 0

2. ) )

0 0 9 9 1 0 0

I. ) )

I I 5 5 Mult. Mult. 0 0

2 2 operation operation result result

No. No.

ari t hme containing containing t ic ic

Opera t ion ion

Adress Adress of of cell cell fo r r operands operands T ype ype of of Adre basic basic ss ss of of cell cell

work work he he had had t o o do do in in civil civil e ngine e ring ring s tati cs. cs.

a a p rogr a m - controlled controlled computer computer under under the the impr e ssion ssion of of tirin g g numerica l l

B RUNSVIGA - TRINKS TRINKS TRIPLEX . . K onrad onrad Zuse Zuse started started his his t hinking hinking abou t t

like like t he he THALES-GEO, THALES-GEO, the the BRU N SVIGA SVIGA - HAMA NN NN D UPLE X X and and the the

record in gs, gs, which which was was supported supported by by th e e u se se of of multiple - carriage-machines carriage-machines

niz e d d in in t his his wa y; y; wi t h h the the particular particular motive motive to to minimize minimize t he he numb er er of of

g eo desy desy a nd nd orbit orbit astronomy , , ra t h er er c omplicat e d d c alculati o ns ns w ere ere orga ­

which which steps steps to to be be ta ken. ken. In In s om e e areas areas of of scientific scientific computations , , such such as as

were were to to be be performed performed using using a a 4-s pe cies cies calcu lato r; r; the the sheet sheet di d d indica t e e

the the i n termediate termediate results results of of s om e e calculation t , h e e individual individual ste ps ps of of whi ch ch

' Formb l att' att' would would e e used. used. This This was was meant meant to to provid e e space space for for recording recording

ho w eve r r more more frequently frequently the the terms terms ' Rechen s chema' chema' or or ' Rechenformular' Rechenformular' and and

of of German German Rechenplan Rechenplan in in Germany Germany for for this this purpose purpose was was not not entirely entirely new, new,

Rutishauser Rutishauser in in Ziir c h h took took over over from from Zuse Zuse the the term term Rechenplan. Rechenplan. The The use use

12 12 F . L. L. Bauer : : Hi st ory ory of of Programming Programming Langua ges, ges, a a Survey Survey Conference on the History of ALGOL 68 13 for forming the greatest common divisor of two natural numbers, they all are programs; usually stated in verbal form or even by showing only an illustrative example. Only rather late, the word comes again into use in its very general meaning, Householder and Faadeva, around 1950, do not yet use it in t heir monographs. While program and computing plan rather synonymously concentrate more on the write-up, algorithm is more directed towards the essential content. Mathematicians therefore frequently prefer it; algorithmic languages are (or should be) programming languages under some abstractions from notational details. In this sense, we are going to use these words interchangingly.

IC] 12 ll!ll11D I IJllnD Id lz c::1 c::J Dn: Dll' l 1'16 1

0 fig. 3 Zuse's computation sheet

1.4 All t he early examples of programs, plans and given above fall int o a particular class: the class of stat e-oriented programming and programming languages. It just happens that human performance, r estric­ ted as it is with respect to m ental concentration, makes it advisable to do "just one thing at any time" and thus at any moment the human calculator is occupied with just one task. If asked "where are you working" there will always be one and only one state. This worthwhile caution with respect to human operators was fatuously applied also to mechanization and automa­ tization; quite unnecessarily, since machines do not think and therefore can be much more reliable than humans. T he transition between s t ates is done by t he e xecution of commands or instruct ion s, fittingly one speaks in this context also of imperative pro-

- ...... :·:---- ;> ~ -

1 1 2 2 + + compu _ i i t e e th e e = = roo t s s x a : : x o x f +a +a x x b b 0 0 . . > < <

2 2

and and finds finds it it at at lea s h t e lpful , , possib 1 1 even even preferab l e' e' t o o be be t old old that that it it means means ' I I

(a: (a: 2) 2) x x ( - 1)- 2 2 2) 2) x x (a: (a: 2 )- b b x \f (a: (a: = =

( a:2 )x ( - l)+ yf (a:2 )x( a: ~)- 1 1 b b = x

the the mathematician mathematician prefers prefers to to w r ite ite functiona a a l l ( ' algebraic ' ) ) program program

V7 V7 - Vs Vs Vg Vg = = ::;> ::;> x2 x2

V7 V7 + + Vs Vs Va Va = = ::;> ::;> x 1 1

V1 V1 x x ( - 1) 1) V 1 1 ::;> ::;>

-ylVs -ylVs Vs Vs ::;> ::;>

V4 V4 - Vs Vs V2 V2 ::;> ::;>

Vi Vi x x V 1 1 V4 V4 ::;> ::;>

V1 V1 : : V 2 2 1 1 ::;> ::;>

V2 V2 b b ::;> ::;>

V 1 1 a a ::;> ::;>

sat i s fi ed ed t o o wri ( y y te te - =a =a x x x x x x z z ) in st ead ; a ; nd nd f o r r Zus es es R eche np Cl' Cl' l a n n

2 2

y y Que v e d o o u ses ses fi g . . 1 1 t o o indicat e e h is is p r o gr am , , m a athe ma t i c i a n n is is quite quite

a nd nd p redi ca t es, es, ther e e is is no no need need a n d d also also no no r o om om fo r r s tates. tates. Wher e e Torr es es

logicians logicians a nd nd pur e e mathemati cians. cians. In In the the world world o f f functi ons , , p1upositions p1upositions

to to m achi n es es i n n som e e sens e, e, there there is is a a ver y y d iff erent erent attitu d e e foun d d among among

Whil 1.5 1.5 e e state - oriented oriented pr o g ra m min g g is, is, o r r at at least least w a s s always always close close

No No do c u m entation entation of of the the organi z a t ional ional d e ta i ls ls has has s urvived . .

a g a r ou p p of of women women from from the the Ai d s s Corps Corps to to do do a a network network flo w w o f f ca lculations . .

p erso ns; ns; and and d ur i ng ng Worl d d War War II, II, A l win win Walther Walther i n n Darmstadt Darmstadt o r gani zed zed

in in a a large large proj ect ect for for the the calculation calculation of of tables , , using using hitherto hitherto un e mploy ed ed

o v er organization organization all all pr ogram . . Such Such w ork ork was was done done e.g. e.g. 1 9 38 38 in in Ne w w Yor k k

task . . Each Each person person w i ll ll have have individual individual its its pr o gram, gram, bu t t i t t also also needs needs a n n

group group of of hum an an o perators perators w orks orks j o i ntly ntly and and und er er d i vision vision o f f l a bo r r on on on e e

multiple to to - state-orient e d d p r o grams. grams. T h ey ey descr i be , , w ha t t h a pp ens ens if if a a

There There is is a n n u obvio s s gene raliza ti on on o f f thi sin s s g le-st a te-ori e nt e d d p r ograms ograms

most most e x cl u sively sively a n n imp er a ti v o e n e. e.

gramming gramming l anguages. anguages. The The machin l e anguage anguage of of early early machines machines wa s s al ­

1 4 4 F.L . . Bauer History History : : o f f P ro g ra mm i n g g Languages Survey Survey , , a a Conference on the History of ALGOL 68 15

Why did Zuse then bother to write the 'complicated' state-oriented pro­ gram, and how could he even be proud to accomplish it? It is because the machine he had invented could be controlled by his imperative program, but not by the mathematicians functional program. He was wrong in as far that the mathematician Rutishauser only a few years later was able t o write a programming program which translated the functional program the mathematician likes and understands better into a state-oriented program that Zuses machine Z4, working at , understood. Thus, Rutishauser showed that there exists the meaningful concept of a functional program and of . Zuse, however, did not appreciate this. Samelson and Bauer obtained with priority 1957 even a patent for a machine that directly obeys functional programs of this simple, purely applicative form. That a mathematician prefers the functional write-up, is of course to a large extent also due to the fact that she or he is used to this; any time human perception is involved, habits play a decisive role. If the mathemat ician would however declare that he also considers the construction above 2 compute the roots x 1 and x 2 of x +a x x + b = 0

to be a program, caution is advised: clever mathematical systems today may break this down into an algorithm, but will not do it with an arbitrary 5th order equation with unknown coefficients. Even 31 give in the form of terms all the roots of x - 1 = 0

will cause great difficulty to some of them. We have seen in the last example programs and a programming style of a third sort, called descriptive. The history of programming languages can not yet say much about them, since some of their aspects are still a research subject. 1.6 Quite innocent ly in the beginning, logicians did run in the 30's into studying programs. The reason was that after Kurt Godels revolutionary result in 1931 about incompleteness (formale U nentscheidbarkeit) of some systems, e.g. arit hmetic, computability also became an issue. In 1936, inde­ pendently t wo persons conceived a c onvincing definition of what 'comput a­ ble' should mean: Alan Mathison Turing (1912-1954) and Emil Leon Post (1897-1 954). Strikingly, they came out with alrnost an ide itical proposal:

calculators. calculators. In In the the Babbage -L udgate - Zuse-line, Zuse-line, fixed fixed loop loop structure structure (Zuse: (Zuse:

examples examples being being automatic automatic multiplication multiplication and and division division in in mechanical mechanical desk desk

and and until until the the middle middle of of 20th 20th century, century, multiple multiple loop loop machines machines flourished , ,

machines, machines, for for example example clocks clocks with with a a second loop loop second for for the the quarter quarter hours, hours,

- a a single single loop loop machine. machine. was was soon soon It It generalized generalized to to multiple multiple loop loop

ving ving a a rotating rotating barrel barrel usually usually equipped equipped with with pegs pegs that that triggered triggered action action

veral veral centuries centuries with with the the construction construction of of clocks clocks and and music music instruments instruments ha­

more more precise precise with with a a finite finite number number of of fixed fixed loops. loops. This This dates dates back back for for se ­

wi t h h single - sta t e - oriented oriented programming: programming: programming programming with with loops, loops, to to be be

A A widely widely used used clas s s of of non - universal universal languages languages is is historically historically connected connected

be be equivalent. equivalent. This This Church Church Thesis Thesis is is generally generally accepted accepted today. today.

languages , , and and all all frui t ful ful defini t ions ions should should stand stand the the test test to to be be shown shown to to

can can be be only only one one equivalence equivalence class class of of universal universal machines machines or or programming programming

t hos e e who who did did not not understand understand it. it. Church Church then then posed posed the the thesis thesis t hat hat there there

versal , , general general recursion recursion became became a a dreadful dreadful instrument, instrument, in in particular particular for for

so - called called primitive primitive recursion recursion was was ultimate ultimate the the ratio ratio and and in in this this sense sense uni ­

the the great great Hilbert Hilbert was was mislead mislead in in his his intuitive intuitive power power when when he he thought thought that that

ti me me and and e ven ven later: later: recursion. recursion. After After Ackermann Ackermann had had shown shown in in 1928 1928 that that

i t t includ e d , , well well hidd e n , , a a feature feature that that was was somewhat somewhat controversial controversial a t t that that

see see it it th i s s way. way. A s s a a functional functional languag e e of of application application and and abstraction , ,

Calcu lu s') s') t ha t t co uld uld b e e called called a a functional functional machine, machine, although although he he did did no t t

fr om om th e e work work wit h h expressio n s, s, and and t hus hus formulated formulated a a system system ( the the ' Lambda Lambda

C hur c h . . He He fou n d d it it natural natural for for a a logician logician to to st ar t t from from ex p re ssion s s and and

In In th e e s am e e y e ar ar 1936 , , a a very very different different app roa ch ch was was do n e e by by A l onzo onzo

an d d P ost ost w ere ere som e what what strange strange char a cters . .

e q ui val e n t . . Why Why Po s t t is is rarely rarely mentioned, mentioned, r e mains mains unclear ; ; both both Turing Turing

l i fe . . L ogicians ogicians showed showed tha t t the the Turing Turing machine machine and and the the Post Post machine machine are are

not not h a ve ve and and Aiken Aiken f o und und so so ho rrib l e e that that he he fought fought it it unt il il the the end end of of h is is

and and t hu s s allow allow pro g rams rams t o o b c e hange d d by by themselves , , an an idea idea Zuse Zuse did did

to to t h e e B ab bag e- Ludgate - Zuse Zuse lin e, e, store store prog rams rams together together w ith ith numbe r s s

An An atte n t i ve ve ob s erv e r r recognizes , , however , , that that these these mach i nes, nes, in in c o ntrast ntrast

of of th e e Tu rin g g machine machine and and of of the the Post Post machin e e are are singl e- state state languages . .

ted ted to to theor etical etical st udies udies about about it. it. A n y h ow, ow, t h e e programm ing ing languages languages

ma c hin e, e, a a Gedanken - machine, machine, not not good good for for practical practical work , , but but w ell ell sui ­

t hat hat such such a a proposal proposal would would have have the the character character of of a a machin e , , a a hypothetica l l

d o, o, reduced reduced fo r r matters matters of of s i m pli city city to to the the most most elementary elementary actio ns. ns. Clear, Clear,

they they both both tried tried to to imitate imitate in in very very abstract abstract form form wha t t a a human human being being would would

16 16 F . L . . Bauer: Bauer: History History of of Program ming ming Languages a a , , Su r ve y y Conference on the History of ALGOL 68 17

'starre Rechenplane') is assumed - Zuse's Z3 of 1941 even had only one loop; however the tape spliced to a loop could be exchanged manually. The more liberal van-Neumann-architecture of state-oriented machines allowed a system of loops, an arrangement to be set up with the help of a cleverly designed crutch , t he jump instruction. Since a van-Neumann-program, in contrast t o the stubborn Aiken doctrine, could change itself, the loop struc­ ture, although always present and finite, could change during comput ation. This made the von-Neumann-machine of 1945 t echnically universal; that it was so was recognized by Mauchly on the one side, by von Neumann on the other side more accidentally and made public quite later (1946, 1947). A question that caused much trouble is the following: Do programming lan­ guages that are to be used in practice need t o be universal? My experienced and intelligent friend thought for a long time that t he answer is No, and I think he never convinced himself completely that the answer should be Yes. Samelson and myself said Yes, but ..... , indicating that u 1 generality would have its price ('Do not let the simple, but frequent case pay the price for the complicated, but rare case'). We were afraid that full generality might thus hinder t he accept ance of a programming language intended for practical use, like ALGOL. In the 70's, however, it became clear to us that it would no longer matter to pay the price: the price can be paid and should b e p aid. Most people agree today to this.

1. 7 In t he next chapter , where we shall deal with practical programming languages that developed in the 50's , grew in the 60's and matured in the 70's and 80's, we shall structure the events according to t he scheme: state-oriented , state-free functional programming, descriptive programming. There is a further dimension which positions the items: originally languages dealt with one sort of individuals only, with numbers - usually and even limited in size: fixed-point numbers, floating-point numbers. Multi-sorted programming arose late in the 50's, but this was not the end. Free definition of 'Data Types' was added in the 60's; programming with Abstract Data Types was studied by Liskov and Zilles 1974, Guttag 1 975. From a n area where o ne would not expect it, from simulation, a new philosophy came up in 1 967 w ith : that individuals and the operations defined on them should be considered t o be an entity, the so-called classes in SIMULA. Now this entity is somewhat confusingly c alled object and object-oriented programming is at present

o f f application application and and somehow somehow abstra ct ion ion e l d d via via FO R TRA N N and and A L GOL58 GOL58

T he he high high e l vel vel imperative imperative progra mm ing ing languages languages w ith ith functional functional features features

( since since 1954 1954 ) . .

MA T IC ) ) by by Katz Katz (since (since 1956) 1956) a nd nd in in particul a r r FORTRAN by by Backus Backus

become become highly highly important: important: IT IT b y y Perlis Perlis (since (since 1 956) , , AT3 AT3 (later (later MATH­

followed followed by by Laning Laning and and Zi e rler rler (J. 953) , , this this fertilizes fertilizes work a a few few others others tha t t

a t tempt tempt to to bring bring applicative applicative pieces pieces into into an an i m perative perative language language (1951 ), ),

machines machines were were called called ' high high lev e l ' ' . . Rutishauser Rutishauser opens opens this this line line with with the the firs t t

programming programming language s s that that were were not not depending depending too too much much on on par t icular icular

Machin e e independence, independence, how e ver, ver, was was an an important important goal goal from from the the beginning ; ;

Porter Porter ( 1955 ), ), Elsworth Elsworth (1955) ; ; each each one one for for a a different different machine. machine.

Burks Burks ( 1950 ) , , Glennie Glennie ( 1952), 1952), Hopper Hopper (1953 ), ), Brook e r r (1954 ) , , Grems Grems and and

Ne umann , , and and is is carried carried on on by by assemblers assemblers designed designed by by Mauchly Mauchly ( 1949 ), ),

wi t h h the the informal informal flow flow diagram diagram language language in t roduced roduced by by Golds t ine ine and and von von

clo se se to to machine machine languages languages - - so called called ' low low lev e l' T . his his list list star ts ts 1946 1946

2. 1 1 Arnong Arnong t he he t wen t y y early early ones, ones, the the majority majority is is impera t ive ive and and very very

and and d es crib e d d t ill ill 1966. 1966. Meanwhile , , nobody nobody will will any any longer longer coun t t h e m. m.

li s t ed ed ove r r 700 700 programming programming languages languages tha t t have have been been develop e d, d, propos e d d

H is t ory ory of of Computing Computing Conference Conference in in 1980. 1980. Altogeth e r, r, J e an an E. E. Samm et et ha s s

- hav e e be e n n t horoughly horoughly discu s sed sed by by D.E. D.E. Knu t a h nd nd L . T . . P ar d a o t t the the

h o v ; ; G r e m s s and and Por te r ; ; Elswo rt h ; ; Blu m; m; i s; s; Ka t z ; ; B a ue r a r nd nd Sam e lso n ; ;

a n d d Zie rl e r ; ; B ac ku s ; ; Brook e r ; ; Shu r a - Bura, Bura, K amy nin , , a n d d Lju b ims ki ; ; Ers ­

Cu r ry ; ; M a uch l y ; ; Bu rk s ; ; Rutis h a u s er ; ; Bohm ; ; Gl en n i e ; ; Ho pp e r ; ; L a ni n g g

1 9 4 a 5 nd nd 1 956 956 - c on t ributi o n s s by by Zuse ; ; Gold st in e e a n d d von von Neuman n , ,

T w e n ty ty of of t h e e early early sp ec ific ific progr a mming mming languages languages originating originating b e t w een een

2 2 The The Landscape Landscape of of Progra m ming ming Lan g u ages ages

mu c e h asi er , , bu t t ess ess l tra n s p arent . .

d in g g suc h h a a mix t ur e e wi t h h obj ect - o r e i nt e d d st yle yle do e s n s o t t m ake ake t h e s e i t ua tion tion

mi n g , , if if n ot ot st i r r e w d e ll , , ha s s a a t end e n c y y to to produc a t a e urbid urbid potion , , ble n ­

S i nc e e a a m i x t ur e e of of fun ct ional ional programming programming and and sta te - o rient e d d progra m ­

at at th e e on e e hand , , and and with with a a functional functional s t y y le le at at the the o t h e r r hand. hand.

t he he hi gh est est le v e l l of of s ophistica t ion. ion. combines combines It It both both with with a a state - orien ted ted

18 18 F.L . . Bauer: Bauer: His t ory ory of of Programmin g g Langua g e s a a , , S ur v ey ey

---.-- -.... -......

·- · - - - Conference on the History of ALGOL 68 19 to ALGOL60 and then to the Algol family of ALGOL68 (1968) and PAS­ CAL (1969); PASCAL branching again into MODULA-2, ELAN and ADA; BASIC (1965) and C being low-level relapses, COMAL an upgrading of BASIC and PASCAL. COBOL, a 'business oriented' sister of FORT­ RAN from 1959, is a relict that, blended with FORTRAN, lead to PL/I (1964). Several languages specialized on particular sorts, e.g. on Boolean values (LOGALGOL, 1961), on text strings (SNOBOL, 1963) or on matri­ ces (APL, 1962). Step by step, these imperative languages developed a richer reservoir of sorts and even the capabilities to define new sorts. Programming in problem­ adapted complex data structures makes not only life easier, it also helps save storage. Furthermore, introducing corresponding problem-adapted complex operations helps to save time. Thus, the development towards abstract sorts and operations has an economical advantage, and the transition to objects in object-oriented programming is the natural conclusion. SIMULA (1967) was the first st ep in this direction, followed by full-fledged, however untyped SMALLTALK-80 (1980) and typed EIFFEL (Meyer, 1985). Today we see object-oriented extensions to classical imperative programming languages: OBERON (PASCAL), MODULA-3, c++ and OBJECTIVE-C. In the beginning, imperative programming was strictly sequential (single­ state programming). Under the work of Dijkstra and Hoare, multi-state programming captivated the hearts of many, although not all programmers and entered some programming languages, starting with ALGOL68 and leading to OCCAM, based on more theoretical calculi like CSP (Hoare), CCS (Milner), COSY (Lauer) (parallel programming). In a corner lives the subculture of Petri nets. General Recursion, by the way, is sometimes excluded, sometimes tolerated: Wirth, in Algorithmen und Datenstruktu­ ren, 1975, dissuades the reader from using recursion ('Wo Rekursion zu vermeiden ist'). On the other hand, jump instructions are frequently p la­ ced at a disadvantage ('Go to considered harmful', Dijkstra). T here are also special programming languages for real-time applications, like PEARL and BASEX. Zuse, who is at the beginning of our list, has not been discussed so far. His early Plankalkul shares the fate of the two Russian contributions, the programming programs of Shura-Bura, Kamynin, Ljubimsk~ nd those of Ershov. They have not had the impact they deserved, p .)ssibly due to

- . - -- ~ ·:;..- .

people, people, led led by by Perlis Perlis and and van van Wijngaarden. Wijngaarden.

to to push push his his concept concept into into ALGOL60, ALGOL60, against against a a majority majority of of state-orien t ed ed

ris ris ALGOL ALGOL Conference Conference in in January January 1960, 1960, McCarthy McCarthy was was not not strong strong enough enough

to to be be fed fed into into the the Zurich Zurich ALGOL ALGOL Conference Conference in in May May 1958, 1958, and and in in the the Pa­

Gelernter Gelernter and and N. N. Gerberich. Gerberich. Unfortunately, Unfortunately, McCarthy's McCarthy's work work was was too too la te te

most most important important ideas ideas in in programming'. programming'. Credit Credit for for this this should should also also go go to to H. H.

of of Church Church is is established. established. Jean Jean Sammet Sammet has has correctly correctly spoken spoken of of 'one 'one of of the the

rations rations are are made made in in Lambda-notation, Lambda-notation, thus thus a a bridge bridge to to the the ancient ancient ideas ideas

storage storage elements elements that that can can be be overwritten, overwritten, it it is is absolutely absolutely state-free. state-free. Decla­

Pure Pure LISP, LISP, e.g. e.g. SCHEME, SCHEME, has has no no program program variables, variables, i.e. i.e. does does not not know know

also also all all the the power power to to the the operations. operations.

individuals individuals are are therefore therefore recursively recursively defined, defined, and and General General Recursion Recursion gives gives

which which are are formed formed by by something, something, namely namely lists lists again again or or atomic atomic symbols. symbols. Its Its

designed designed 1958 1958 by by John John McCarthy. McCarthy. has has It It only only one one sort sort of of individuals, individuals, lists lists

In In mos t t cases , , functional functional programming programming is is applicative. applicative. This This is is true true for for LISP , ,

rmng. rmng.

use. use. Function Function composition composition is is a a particular particular pure pure form form of of functional functional program­

recurs i on . . His His language, language, however, however, was was not not brought brought to to the the test test of of practical practical

( program program c omposition) omposition) is is his his main main instrument, instrument, and and he he is is not not refraining refraining from from

a tion tion cannot cannot be be u se d . . A A part part from from this this strangeness, strangeness, function function composition composition

fu n ct io ns ns c an an hav e e several several arguments arguments and and several several results, results, thus thus common common not­

more more fun ctio nal nal an d d l e ss ss imperative imperative than than all all the the ones ones discussed discussed so so far . . His His

ming ming language, language, deeply deeply con n ected ected w i th th his his id ea ea of of ' comb in a tors', tors', is is mu ch ch

Sa mel mel on - B a uer uer mac h i ne , , the the lo g ician ician Curr y . . His His rudimentar y y program­

2.2 2.2 Th ere ere r e mains mains in in our our list list of of twenty twenty early early birds , , apart apart from from the the

t hem. hem.

guages guages a re re al s o o dominating dominating in in number. number. This This does does not not necessarily necessarily qua l ify ify

r ibund, ibund, is is still still dominating dominating in in practical practical use; use; imperative imperative programming programming l an ­

Altogether, Altogether, i mp er a ti ve ve programming , , although although several several tim e s s said said to to be be mo­

priate, priate, b u t t his his did did not not find find Zus e s s approval. approval.

ho w e v e r , , i n n o ur ur language language philosophy philosophy as as much much as as we we thought thought t o o be be appro­

hauser, hauser, Same l son son an d d mys e lf lf did did not not follow follow Zuse Zuse notationally . . We We did did so , ,

50's, 50's, this this was was n ot ot very very attractive attractive and and was was one one of of the the reasons reasons that that Ru tis ­

t wo - dim e n si ona l l out look . . For For the the input input devices devices that that were were availabl e e in in the the

n otation ; ; Pl a nkalkiil nkalkiil und und the the Liapunov Liapunov notation notation the the Russians Russians used used have have a a

world

- poli t ical ical circumstances. circumstances. Interestingly, Interestingly, they they show show certain certain parallels parallels in in

20 20 F.L. F.L. Bauer : : His t ory ory Programming Programming of of Languages, Languages, a a Survey Survey Conference on the History of ALGOL 68 21

LISP was for a long time the uncontested champion in its class. More recently, LOGO was created, which has advantages when used for didac­ tic purposes. LISP is an untyped language often used in AI applicati­ ons. In introductory courses at universities, typed variants like ML (Mil­ ner 1979), MIRANDA (Turner 1986), HASKELL (Hudak, Wagner 1990) are often preferred. LISP has also found object-oriented extensions, like including CLOS. The lack of states brings the idea of object-orientation much better into effect. functional programming languages based on combinators are rare. They avoid even parameters in applications and know nothing but function com­ posit ion. Curry's attempts might have led into this, had Curry continued them. has for a while been the advocate of variable-less pro­ gramming. More recently, however, Curry's 'combinators' have found new interest. 2.3 Today, some people speak of two worlds - the world of imperative programming and the world of functional programming. But these worlds are not isolated. T he Munich project CIP has studied in great detail the transitions between them . Only two problem areas should be mentioned: In imperative programming, a program variable may change its value. In applicative programming, this may not happen. It will not happen if in imperative languages single-assignments only occur. If however a statement like axa=>a occurs in the imperative world, it can be made harmless in the functio­ nal world by introducing, as was done in LUCID, appropriate subscripted variables which reflect the state history: where i' denotes the successor of i. For single-state-oriented programs, integers will do it for the subscript family; this was already advocated by Rutishauser in the early 50's. For multiple-state-oriented programs, the state history will no longer be linear, but a general digraph; the subscript family should reflect this. There is a deep connection between these state digraph systems and the Kripke structures of the modal logics that belong to the branching time situations of the program run-off - connections that show up in the work of Zahar Manna.

aspects , , e.g. e.g. modularity , , enc apsuL apsuL L . ion, ion, scoping, scoping, r e main main undiscussed undiscussed here. here.

c annot annot be be discussed discussed here here in in the the framewor k . . Also, Also, some some technical technical ~ iven iven

2.5 2.5 Many Many interesting interesting details details o f f the the History History of of P rogramming rogramming Languages Languages

ages ages in in the the proper proper sense. sense.

matics - oriented oriented applications applications ha ve ve not not yet yet estab l ished ished programming programming langu ­

Other Other forms forms of of descriptiv e e prog r amming amming showi n g g up up in in a a variety variety of of mathe ­

stable stable 1986 ), ), DEVA DEVA (Sintzoff, (Sintzoff, 1990), 1990), LEGO LEGO ( B urstall urstall 1990). 1990).

ar e e many many derivatives, derivatives, e .g. .g. A U TOMATH TOMATH (De (De Bruijn Bruijn 1975), 1975), NUPRL NUPRL (Con ­

o t hers hers LCF LCF ('Logic ('Logic for for Computable Computable Function s') s') and and SML SML by by Milner. Milner. There There

in in connection connection with with this this for for program program specification specification and and development; development; among among

Related Related are are special special programming programming languages languages for for mathematical mathematical proofs proofs and and

family family and and in in other other inference inference systems. systems.

universality ; ; it it has has found found application application and and some some admirers admirers in in the the PROLOG PROLOG

i s s a a re st riction riction to to Horn Horn clauses, clauses, which which is is s afe afe und und nev er theless theless preserves preserves

in in order order to to be be safe. safe. Particularly Particularly simple , , although although in in som e e cases cases inconv en i ent , ,

type type limitations limitations of of decidability decidability and and therefore therefore needs needs syntactical syntactical res t rictio ns ns

Log i cal cal programming programming i s s necessarily, necessarily, even even in in first first order order logic, logic, subj ect ect of of Go del del

extens ion ion of of CCS . .

lan guages guages are are CLEAR CLEAR (Burstall, (Burstall, Goguen Goguen 1977) 1977) and and LOTUS LOTUS ( 1983 ) , , a n n

been been studied studied to to some some length length in in the the Munich Munich CIP CIP project . . Other Other specification specification

pro c ess ess t ha t t should should alway s s precede precede a a programming programming process ; ; this this has has a lso lso

Descriptive Descriptive programming programming is is part icularly icularly appro pr iate iate in in the the spec i fication fication

+ + 3x. 3x. +a +a x x x x x b b 0 0 = =

2 2

to to give give a a proof proof of of an an existence existence formula e.g. e.g. , ,

tiv e e programm.ing programm.ing or or logical logical programming. programming. Executing Executing such such a a program program means means

programming programming style. style. Some Some of of its its effective effective forms forms go go under under the the names names predi ca­

2.4 2.4 Finally, Finally, a a third third world world of of programming programming is is to to be be mentioned: mentioned: descriptive descriptive

which which avoids avoids these these risks, risks, is is increasingly increasingly advantageous. advantageous.

Since Since storage storage is is getting getting more more and and more more cheap, cheap, functional functional programming programming style , ,

tricky tricky situations; situations; the the field field has has been been studied studied carefully carefully by by Bernhard Bernhard Moller. Moller.

whole whole variable . . Pointer Pointer realizations realizations that that are are used used in in this this context context lead lead to to

suggest suggest frequently frequently to to update update single single components components instead instead of of overwriting overwriting the the

as as a a corresponding corresponding structure structure of of program program variables. variables. Efficiency Efficiency arguments arguments

gramming gramming language: language: a a program program variable variable for for a a structure structure is is not not the the same same

Another Another difficulty difficulty arises arises with with the the structured structured objects objects in in an an imperative imperative pro­

F.L. F.L. Bauer: Bauer: History History of of Programming Programming 22 22 Languages, Languages, a a Survey Survey 23

The History of ALGOL 68

C.H. Lindsey Honorary Fellow,

::::------::::;::::::::::::: __ _: ___-:: _.:_:_

scheme scheme for for ove r loaded loaded operato rs , i , f f it it was was found found to to be be feasible. feasible.

an d d to to publish publish it it i n n the the Algol Algol Bulletin. Bulletin. He He was was given given discretion discretion also also in in incorporate incorporate McCarthy's McCarthy's

entirely entirely self-consistent. self-consistent. The The meeting meeting commissioned commissioned Van Van Wijngaarden Wijngaarden to to prepare prepare the the final final Report , ,

debated debated at at the the Warsaw Warsaw meeting, meeting, but but Van Van Wijngaarden Wijngaarden was was able able to to demonstrate demonstrate that that his his system system was was

parameters parameters passing passing which which was was at at variance variance with with Hoare's Hoare's views on on views references. references. The The issue issue was was

be cause cause o f f Van Van Wijngaarden Wijngaarden 's 's principle principle of of 'Orthogonality' 'Orthogonality' and and its its associated associated method method of of

formalism. formalism. But But the the subcommittee subcommittee became became completely completely split split ove r r the the method method of of parameter parameter passing , ,

comp eting eting drafts drafts on on the the table , , one one describing describing the the right right language language and and the the other other using using the the right right

When When the the subcommittee subcommittee of of Wirth, Wirth, Hoare, Hoare, Seegmiiller Seegmiiller and and Van Van Wijngaarden Wijngaarden met , , there there w ere ere tw o o

therefore therefore the the references references could could not not point point to to local local variables . .

da t a a structures, structures, but, but, quite quite deliberately, deliberately, the the records records could could only only be be created created on on the the heap , , and and

called called it it at at the the time. time. Hoare Hoare 's 's records, records, and and references references to to them, them, could could construct construct the the usual usual dynami c c

parameters parameters instead instead of of Jensen ' s s device. device. Hoare Hoare proposed proposed call-by-value-result , , or or "anti-va l ue" ue" as as he he

proced ure ure heading . . There There were were also also proposals proposals for for call - by - reference , , and and to to use use procedure procedure

Initi ally, ally, the the Working Working Group Group tried tried to to indicate indicate call-by-name call-by-name at at the the point point of of call, call, rather rather than than in in the the

call -by-name, -by-name, which which is is used used both both for for result result parameters parameters and and fo r r tricks tricks such such as as Jensen's Jensen's de vice . .

The The hi story story of of what what followed followed is is very very much much concerned concerned with with parameter parameter passing. passing. ALGO L L 60 60 has has

were were now now charged charged to to write write the the Report Report for for the the language. language.

Th e e Working Working Group Group resolved resolved to to adopt adopt Van Van Wijngaarden Wijngaarden 's 's method method of of description. description. These These 4 4 author s s

Wijn gaarden's gaarden's do c ument ument was was entitled entitled "O rthogonal rthogonal design design and and description description of of a a formal formal language" . .

Van Van Wijngaarden , , although although there there was was also also a a contrib u tio n n on on record record handling handling from from Hoare . . Van Van

At At the the next next meeting meeting t here here wer e e offi ci a lly lly three three full full drafts drafts on on the the table, table, from from Wirth, Wirth, Seegmiiller Seegmiiller and and

accordingly accordingly they they solic ited ited drafts drafts of of a a c ompl ete ete languag e e to to be be pre sented sented at at the the nex t t meeting . .

t hat hat would would not not fit fit i nto nto ALGOL ALGOL X. X. By By 1965 1965 at at Princeton Princeton the y y thought thought t h e y y were were ready, ready, a nd nd

c ould ould modify modify its its own own programs , , but but i n n actual actual fact fact it it turned turned out out to to be be a a "scapegoat" "scapegoat" for for features features

from from 1964 1964 o nward s. s. Th e re re was was also also a a la nguage nguage ALGOL ALGOL Y Y - originally originally i t t was was a a l anguage anguage whic h h

I d ea s s for for a a fu tur e e lan g uage, uage, w hi ch ch became became known known as as ALGOL ALGOL X, X, we re re bei ng ng d i scu ssed ssed by by the the WG WG

co ntinued ntinued u p p to to a bout bout 1979. 1979.

peri od od from from 1965-1 969, 969, followed followed b y y rev i sion sion of of the the language language from from 1 970- 1974 . . Active Active support support

formed formed from from the the a uthors uthors of of the the o rigi nal nal ALGOL ALGOL 60 60 Report . . T he he deve l opmen t t took took pl ace ace over over the the

AL GOL GOL 68 68 was was devel o ped ped b y y Working Working Grou p p 2.1 2.1 o f f I . F.I . P . , , the the Wo rk ing ing Group Group itself itself be in g g

Languag es es Conference . .

N otice s, s, and and it it is is to to be be presented presented at at the the forthcoming forthcoming ACM ACM His t ory ory o f f Programming Programming

The The full full text text of of this this paper paper is is to to be be published published in in the the Mar ch ch 1 99 3 3 issue issue of of SIGPLAN SIGPLAN

Extended Extended Abstract Abstract

Honorary Honorary Fellow, Fellow, University University of of Manchester . .

C. C. H . . Lindsey Lindsey

The The History History of of ALGOL ALGOL 68. 68.

24 24 C.H. C.H. Lindsey: Lindsey: Th e e History History of of ALGOL ALGOL 68 68 Conference on the History of ALGOL 68 25

By the next meeting McCarthy's overloading was in "in all its glory". This is a fine example of a feature which Van Wijngaarden rejected when first proposed, as being too late and too much of an upheaval, but then incorporated by a major upheaval of the Report between meetings. The Draft Report, MR93, was duly published in the Algol Bulletin in February 1968, and was the cause of much shock, horror and dissent, even (and perhaps especially) amongst the membership of WG2.l, and at an ALGOL 58 Anniversary meeting at Zurich in May it was "attacked for its alleged obscurity, complexity, inadequacy, and length, and defended by its authors for its alleged clarity, simplicity, generality, and conciseness". But the document could be read. I read it myself, and succeeded in extracting the language from it, which I wrote up in an informal paper entitled "ALGOL 68 with Fewer Tears". Although there seemed to be a r easonable agreement on the language at this time, there were clearly grave misgivings about the document. Clearly, it could not go upwards to TC2, but clearly also it was the document that had been commissioned at Warsaw, and so the author had fulfilled his obligation. So Van Wijngaarden was given one last chance, with the final decision to be taken in December 1968. Before that, there was a s tormy, and almost totally non-technical, meeting in North Berwick, where the possibility of a Minority Report was raised for the first time. The document available at this meeting was a considerable improvement on MR93 and more improvement was to come. But MR93 had done the harm, and much of the mud flung at it is probably still sticking, even to this day. The final meeting at Munich prepared a covering letter to accompany the document to TC2, implying some disagreement within the Working Group, but stating that "the design has reached the stage to be submitted to the test of implementation and use by the computing community". However, in the last hour of the meeting, some who were unhappy with the final form of the Covering Letter, and with interpretations which were being put upon it, produced a minority report signed by some very worthy names. Regrettably, TC2 refused to let it be printed with the Report. In addition to the four authors of the Report, mention should also be made of the "Brussels Brainstormers". Effectively there were two teams. One in Amsterdam creating the text, and another in Brussels taking it apart again, and this mechanism was actually very fruitful. ALGOL 68 introduced many new features to programming languages and the orthogonality of these features does indeed provide serendipitous benefits not foreseen at the time of language design. The first implementation of something like ALGOL 68, by the Royal Radar Establishment at Malvern, appeared early in 1970. It now became clear that there were many irksome features of the language that hindered implementation and upwards-compatible extensions, whilst not providing any user benefit. Thus a revision was called for, and the decision was to do it sooner rather than later, so that not too many implementations would be affected. It soon became apparent that, to make the language definition both watertight and readable, a major rewrite was going to be necessary. With hindsight, the 2-level Grammar used in the Report can be described as a variant of Prolog, with many of the restrictions of Prolog removed - giving it greater power, and at the same time providing greater opportunities for misuse. In the Revision, we found newer and cleaner ways to

- .- - - ~::-~. ;'>- :. ...

encourage encourage these these practices practices in in their their guidelines. guidelines.

a n d d the the preparation preparation of of their their defining defining documents, documents, although although Standard Standard Bodies Bodies do do not not always always

Fi nally, nally, there there are are many many l essons essons to to be be learned learned concerning concerning the the design design of of programming programming languag es es

Los Los Angeles. Angeles.

i mproved mproved clarity. clarity. The The Revised Revised Report Report was was ac ce pted, pted, subject subject to to polishing, polishing, in in September September 19 7 3 3 a t t

nex t t meeting meeting in in D resde n n all all the the fus s s had had subsided , , and and peopl e e e v en en co mplimented mplimented us us on on the the

Status Status Quo Quo of of ALGOL ALGOL 6 8 " " was was presented presented wh ich ich nearly nearly wrecked wrecked the the whole whole projec t. t. But But by by the the

meeting meeting in in Vienna , , where where they they were were greeted greeted with with ho rr o r r by by some some memb er s. s. A A "Petition "Petition for for t he he

We We took took some some exampl es es of of t he he ne w w s ty le le o f f s ynta x x and and semantics to to the the nex t t Working Working Gro up up

declarations , , and and for - loop s. s.

feeling feeling o f f w a ll -to- wall wall verbosity. verbosity. Our Our revised revised se m antics antics h a d d nice nice ind e nta tion , , c ases , , local local

sem a ntics ntics of of the the original original Report Report w as as cl early early a a progra m m full full o f f gotos , , and and it it conveyed conveyed a a ge neral neral

programming programming projec t, t, consciously consciously appl ying ying t he he principles principles of of stru c tured tured program min g . . T h e e

seman tics, tics, wh ic h h was was peda ntic, ntic, verbose verbose a nd nd t urgid . . So So we we treated treated the the Report Report a s s a a lar ge-sc ale ale

But But the the real real probl em em wi t h h th e e o ri g inal inal Report Report was was not not t h e e W-Gra mmar; mmar; it it wa s s the the sty le le o f f t he he

p redicates . .

correctness correctness of of any any part part of of it. it. Hence Hence this this static static semantics semantics was was pu t t into into the the grammar, grammar, using using

d etermined etermined that that the the Report Report should should be be written written in in such such a a way way that that we we could could successfully successfully argue argue the the

shocks shocks and and surprises surprises - this this in in chapter chapter to to have have any any confidence confidence in in its its correctness. correctness. We We were were now now

chapter chapter had had been been devoted devoted to to what what we we now now call call "static "static semantics". semantics". But But we we found found too too many many bugs bugs -

use use W-Grammars, W-Grammars, most most notably notably through through the the use use of of "predicates". "predicates". In In the the original original Report, Report, a a whole whole

26 26 C.H. C.H. Lindsey: Lindsey: The The History History of of ALGOL ALGOL 68 68 27

The Making of Algal 68

C. H. A. Koster Informatics department University of Nijmegen The Netherlands

Speak, memory ...

In September 1967, Aad van Wijngaarden, the director of the Mathematical Centre in Amsterdam, asked me to join the ongoing project to define a successor to Algal 60. I had just finished 18 months in the Dutch Army, and was looking forward to the resumption of a carefree life, working on Natural Language Processing. Van Wijn­ gaarden 's eye fell on me for a number of reasons: I was steeped in the spirit and implementation of Algal, well-versed in two-level grammars and I knew everything there was to know about operating systems and I/O, having just completed a vast Fortran program on an IBM 7094 under IB SYS that made use of all its 16 tape drives. In this way I became one of the Authors of Algal 68, and a participant in one of the formative events of our profession - the making of Algal 68. In this note I will try to give you an eyewitness account. I am not a historian, and have kept very few notes from this period, but the Informal Minutes of the Tirrenia [7] and North Berwick [8] meetings bring back many memories. Let me describe to you fo ur parties , the Editor, the Authors, the Committee and the Computing Community, taking part in a cosmic struggle for Truth. The period is November 1967 to D ecember 1968. The persistent Capitalizatio n of certain important substantives in t his text is en­ tirely in keeping with the IFIP-style of those times.

1 The Computing Community

The design of Algal 68 was firmly rooted in the Computing Community, a contemporary term for the but growing international community of computer professionals and scientists, whose eyes had been opened by Algal 60, and who were giving shape to the Science and practice of Informatics. In those days, proceedings of conferences came with a record of the discussion following each presentation. It is fascinating to see t he great of that period learnedly 1 discussing, and taking standpoints that foreshadow the various par:: •• :;ms that over the last decades have come to split t he community.

- - - - -· =- ~

although although h e e never never managed managed

to to

recogn ize ize the the diff erence erence between between words words like like ' man' man' and and ' maan ' . . 2 2

but but now now I I do ", ", and and proceeded proceeded to to g ive ive relevant relevant criticisms. criticisms.

have have

read read

your your report report during during the the last last three three months. months. I I did did not not know know anything anything about about computers befor e , ,

0ne 0ne

reaction reaction

to to MR93 MR93 came came

in in June June 1968 1968 from from the the Russian Russian logician logician G. G. T seyt in , , who who wrote : : " I I 1

as: as:

Van Van Wijngaarden Wijngaarden once once characterized characterized the the four four authors , , somewhat somewhat tongue-in-cheek , ,

of of the the langua ge. ge.

I I alr e ady ady kn e w w his his style, style, which which found found its its expression expression in in t he he elegant elegant and and precis e e sy ntax ntax

re t urn e d d t o o Canada, Canada, and and I I first first met met him him at at the the Tirrenia Tirrenia WG2.1 WG2.1 m ee tin g, g, but but by by then then

dr y y profe s sor sor with with twinkling twinkling eyes . . ·wh en en I I was was drafted drafted as as an an Author , , J ohn ohn had had ju st st

In In 1967 1967 van van Wijn g aarden aarden was was joined joined by by John John P eck eck from from Vancouv e r , , a a qui et et an d d

flu e ntl y H e e

worked worked day day and and . . ni g ht, ht, and and was was invaluable invaluable

to to van van Wijngaard e n. n. 2

ri g ht ht across across from from the the Ma t hematical hematical Centre . . After After one one y e ar ar in in H olland, olland, he he spoke spoke Du tch tch

to to me me li k e e a a native native i ndian . . To get her her with with his his wife wife Isob e l , , h e e liv e d d in in an an apartmen t t

'With 'With h i s s lopsid e d d gr in , , cr e w w cut cut and and unfamiliar unfamiliar Canadian Canadian clothes , , Barr y y look e d d lik e e

Van Van Wijn g aarden aarden had had be e n n joined joined in in 1966 1966 by by Barr y y .James .James Mailloux Mailloux from from Calg ar y . .

fl avo ur ur a nd nd m any any of of its its controv e rsial rsial properti es. es.

by by means means of of two-lev e l l grammars grammars [ 3 ], ], which which g av e e the the Al go l l 68 68 d e fini t ion ion much much of of it s s

as as we ll ll as as the the most most exas p erat in g . . H e e introduced introduced the the formal formal d escr iption iption of of t h e e syntax syntax

the the B oss. oss. Short. Short. v e r y y a le r t , , hi g hl y y dynamical , , h e e could could be be th e e mo st st c harmin g g p e rso n n

to to edit edit the the R e port . . on on a a s uccessor uccessor to to Al go l l 60 , , and and there there wa s s no no qu est ion ion that that h e e was was

c al al Cent r e e in in Amst er dam , , had had bee n n commissioned commissioned b y y WG2.1 WG2.1 at at its its Zandvoor t t meeti n g g

P rofessor rofessor Do cto r A r . . van van Wijn g aarden , , Aad Aad for for friends, friends, t h e e Dir ector ector of of the the Math e ma ti ­

2 2 The The Authors Authors

of of this this august august Comm ittee . .

co rrespondents rrespondents were were invited invited as as O bservers bservers to to \V G2.1 G2.1 meetin gs , , and and becam e e l VIemb ers ers

Muni ch ch Meditations. Meditations. R emote emote corres ponden ce ce was was followed followed b y y perso nal nal contac t. t. ome ome S

as as the the B russels russels Brainstorms , , Lind sey's sey's Lamentations , , t h e e P hilips hilips Philos ophies ophies or or the the

went went throu gh gh each each ite ra tion tion of of the the Repo rt rt w i t h a a h fine fine comb, comb, sending sending in in regular regular n o te s s

sugges ted ted an an important important simplificati o n n of of the the lan g u age. age. Some Some groups groups of of corres p on dents dents

correc t ions Wh a

t t strikes strikes me me . . in in retrospect retrospect

is is t hat hat h a rdly rdly any any co rresponden t t ever ever 1

for for ext ensions ensions and and ge ne ralizations, ralizations, a s s well well a s s det a iled iled ty p ographical ographical and and syntactical syntactical

mail mail from from people people who who had had read read the the do cume nt nt well, well, and and ga ve ve v e ry ry per ti nent nent p roposals roposals

26 26 in in February February 196 8, 8, both both the the Authors Authors and and the the Editor Editor of of th e e AB AB were were delu ged ged with with

Starting Starting from from t h h appearance appearance of of the the Draft Draft R e port port [ MR93 ] ] as as a a supp lem ent ent to to AB AB

and and literate literate g roup roup of of outsiders outsiders who who all all felt felt pa r t t of of t he he world - wide wide A lg ol ol movem ent. ent.

IFIP's IFIP's ·w ork in g g Group Group 2.1 2.1 on on Algol Algol lik e e Tony Tony Ho are are and and Niklaus Niklaus Wir t h , , and and by by a a large large

in in the the A B , , by by the the origina l l A utho r s s of of Algol Algol 60 60 like like P eter eter Naur , , by by new new M embers embers of of

descri bed bed in in c hapter hapter 0 0 of of [ M R1 0 1 1 ). ). Many Many features features found found in in Al g ol ol 6 8 8 were were firs t t p roposed roposed

Fraser Fraser Duncan . . Many Many of of the the criticisms criticisms of of Alg o l l 60 60 c ontributed ontributed the the ai m s s of of Al gol gol 68 , , as as

B ut ut the the m os t t intere stin g g dis cussi on s s cou ld ld b e e found found i n n the the Algol Algol Bull etin, etin, edited edited by by

28 28 C . Koster H . A. A. : : The The makin g g o f f Al gal gal 6 8 8 Conference on the History of ALGOL 68 29

Koster: transputter, Peck: syntaxer, Mailloux: implementer, Van Wijngaarden: party ideologist. Although in reality the roles were not not so clearly separated, this list does reflect the particular interests and responsibilities. Barry Mailloux and I shared a small room on the top floor of the Mathematical Centre, overlooking t he Amstel Brewery. In the mornings we worked separately or discussed together, in the afternoons we joined van Wijngaarden in the Director's office. Curiously, although all our social conversation was in Dutch, whenever we talked about Algol 68 we turned to English. Barry was responsible for the parseability of the syntax and the implementability of the semantics of the language. At this time he was designing in detail t he run-time memory management, consisting of stack and heap holding reference and procedures with different scopes. \Ve were aware of the existence of SIMULA 67, which gave us an existence proof, but there were at t hat time few implementers who had designed and implemented a system of such complexity. And Barry was interested not only in existence proofs but in effi cient implementation on the hardware of the time (a modern PC is faster and has more memory than the mainframes of 1967). He was already suffering from the illness which was to make for him the followin g decade into a hell of aggressive chemotherapy, and he had a terrible sense of urgency. Immediately after the acceptance of the Draft Report, the ideas he had developed about the implementation of Algal 68 were described in his Doctor's thesis [6]. A fe w years later. with the help of some of his students, they led to one of the few implementations of the full language Algal 68. As the junior Author I was saddled with the definition of transput (input and output). It was an established opinion that one of the reasons for the non-success of Algal 60 outside of academic circles was the lack of well-defi ned transput facilities : for academics, the algorithm was all that counted, the way in which its results were transmitted to the outside world was left to the local implementation. Both vVG2.1 and the Authors were grimly decided that Algal 68 should not be scorned by In dustry so easily. In order to prevent the language from goi ng the same way as Algal 60 (see [1]), it had to surpass Fortran in its strong points: efficiency of the im plementations and practicality of the transput. vVhen I started working, the body of the Report was there, the introductory chap­ ters, syntax, semantics and most examples. For the transput only a rough draft existed [2], very much in the style of the "Knuthput" which had been described a few years earlier by Don Knuth for Algal 60 . Barry and I realised that this approach was going to make Algal 68 nei ther popular nor easy to use. I started again from scratch. It was de­ cided to first make a detailed model of the fi le system and devices of contemporary and imaginable computer systems, in Algal 68 itself, apart from a very few fundamentals which could not r easonably be modeled within the language. This operational description provided also the first large-scale experience of pro-

See See

10.5.1.2.b 10.5.1.2.b of of [ MR101 ] ] 3

Through Through the the looking - glass, glass, L ewis ewis Carrol.} Carrol.}

two two meanings meanings pa c k e d d up up into into one one word . .

You You see see it's it's lik e e a a portmant e au au - there there are are

{ { W e ll, ll, 'sl i i t hy ' ' means means ' lith e e and and slimy'. slimy'......

All All metanotions metanotions ending ending on on have have an an ETY ETY empty empty produc t ion. ion.

or or rowed. rowed. Hippin g g is is the the coercio n n for for the the hop, hop, s kip kip and and jump. jump. is is MOID MOID or or MODE MODE void. void.

portmanteau portmanteau words. words. Transput Transput is is input input or or output. output. ' Stow e d' d' is is the the word word for for structured structured

Th e e strict strict and and sober sober sy nta x x permit s s its e lf lf small small puns, puns, as as well well a s s a a liberal liberal us o e f f

was was to to follow follow it it ( R2.3. c ) ! !

The The semi-final semi-final version version ( MR95 ] ] ev e n n contained contained a a quo t ation ation from from the the final final Report, Report, wh ich ich

Mikado , , S. S. Gilb lV. lV. er t .} .}

bald bald and and unconvincin g g narra t i v e . .

gi ve ve artistic artistic verisi milihld e e to to an an otherw ise ise

e rcly rcly corroborati ve ve d e { { ta 1 Vf Vf il. il. in tend e d d to to

\ V . S. S. Gi l ber t . .

world's world's most most memorable memorable lin es es about about I nput/ Outpu t t and and user user int e rfac e s; s; or or the the fr i volou s s

fav o urit e, e, th e e D anish anish

po et et and and inv e ntor ntor Pi et et H ein; ein; A.A. A.A. f.. Iiln e, e,

who who wro te te some some o f f the the 1

aut hors hors lik e e e L wis wis Carrol; Carrol; the the unavoidable unavoidable William William Shak es pear e; e; van van Wijn g aard en's en's

all all r e aders. aders. It It was was fun fun to to find find appropriat e e quotations quotations to to illu strate strate t he he t e xt, xt, taken taken from from

Th e e writin g g of of th e e R e po rt rt was was not not only only ·wor k . . i t t was was also also Fun , , as as s hould hould be be appar e n t t t o o

3 3 The The Fun Fun we we had had

Draft Draft R eport eport on on th e e Al g orithmic orithmic Language Language Al g al al 68 68 in in F ebruary ebruary 196 8. 8.

The The r e sult sult of of a ll ll this this polishing polishing was was sent sent ou t t to to the the Computin g g Community Community as as the the

se mantics , , but but a a suitable suitable formalism formalism was was not not yet yet available . .

con sider sider the the sentences sentences as as formula e . . In In fact , , the the English English text text comes comes close close to to denot at i onal onal

that that I I had had t h e e fe e lin g g that that it it would would h a ve ve been been more more mercyful mercyful on on the the human human r ea d e r r to to

so so precisely precisely ( esp eci ally ally b y y Barry Barry Mailloux , , with with Roget' s s Thesaurus Thesaurus alwa ys ys at at han d ) )

was was formulated formulated in in a a ver y y strict strict form form of of English , , formulated formulated so so densely densely and and polis hed hed

being being finaliz e d d and and fleshed fleshed out out with with s emantics emantics and and pragmatic pragmatic remarks. remarks. Th e e seman tics tics

All All this this wa s s lowly lowly taking taking form form at at t h s e am t e ime ime as as the the syn ta x x of of Al gal gal 68 68 was was

ani sm . .

v ariable ariable holding holding a a mutable mutable pointer pointer a a vindication vindication of of the the orthogonal orthogonal ) , ,

reference reference me ch­ 3

Amon g g othe r r thi n gs gs it it provided provided the the first first convincing convincing example example of of a a triple triple referenc e e ( a a

port port ( n ot ot even even a a sy ntax ntax checker ) ) an d d the the fact fact that that the the langua ge ge was was in in stead y y flu x . .

of of various various desi g n n decisions . . The The work work was was hampered hampered by by the the lack lack of of any any automated automated sup­

g ramming ramming in in Al g al al 68, 68, and and g ave ave important important feedback feedback about about the the pragmatic pragmatic consequences consequences

30 30 C.H.A. C.H.A. Koster: Koster: The The making making of of Algal Algal 68 68 Conference on the His tory o f ALGOL 68 31

J ust reading aloud certain lines of the syntax, slightly raising t he voice for capitalized words, conveys a feeling of heroic and pagan fu n. 8.6.1. 1. Syntax a) REFETY ROWSETY ROWWSETY NONROW slice{860a} weak REFETY ROWS ROWWSETY NONROW prirnar y{8 1d}, sub syrnbo l{31 e}, ROWS leaving ROWSETY indexer{b, c,d,e}, bus syrnb ol{31 e} . Such lines can not be read or written with a straight face.

This sense of fun carries over into the translations of the Report in other languages, like the Russian version [11), which came with a whole fresh b attery of quot;:itions. Great ingenuity w as spent on the portmanteau words, e.g. in the German ve rsion by lmmo Kerner [15]. It used MODUS for MODE and translated MOID by MO SCH: MO SCH : : MODUS; losch. leading up to MOID vacuum being translated a s a MOSCH liicke. Now it so happened that Yl i:isch was (and is ) t he n ame of a West-Berlin construction firm , or rather a destruction firm renowned fo r the large holes it has made in the city of West Berlin. Not a bad joke for Eastern Germans, who were s upposed to be unaware of this capitalistic hellhole!

On a more learned level, there was the problem of the unspeakable field names. In the description of the transput, structures are introduced with a number of public and secret fiel ds. But even a secret fi eld had to have a name. In order to prevent the programmer from accidentally discovering a secret name, in MR93 such names were made unwriteable by the art ifact of starting them with an infinite number of f 's. An infinite sequence of f's cont ains N0 f's, it is all f's; so w e c alled this sequence ALEPH . Sin ce t he letter Aleph was not in our type fo nts, we denoted it by t he percent sign %. In the final version of the Report, t his was turned into an unwriteable letter, because the Committee didn't appreciate t he j oke.

4 The Com m ittee

:dy first direct contact with IFIP Working Group 2.1, the Committee, was the meeting in Tirrenia, near P isa, in J une 1968. At the start, the Authors were a sked to summarize t he reactions to MR93 that had been received, and van vVijngaarden took this opportunity to describe the changes that had been made to t he language since the previous meeting (saying "T he changes are based on the reactions" ). The Committee was much less positive than I expected. deplored that the name "Algal" appeared on the document ("some of my colleagues switched from Algal to Fortran"). Gerhard SeegmiiUer and took exception to the name "Algal 68" - as if the language had already been accepted by the Committee. Van Wijngaarden was adamant and unrepentant: "I have been asked by the IFIP council to give at the IF IP Congress 68 a t al k on '·Algal 68"". Salt in the wounds!

question question of of infinite infinite productions productions (such (such as as ALEPH) , , infinite infinite modes modes (caused (caused by by recursive recursive

At At various various points points in in the the discussion, discussion, a a sore sore point point in in the the description description came came up: up: the the

discussion discussion veered veered off off from from this this subject . .

overloading overloading to to procedures , , mentioned mentioned briefly briefly by by Peter Peter Landin. Landin. Unfortunately, Unfortunately, the the

Another Another chance chance at at more more generality generality that that was was missed missed was was the the extension extension of of operator operator

simple simple and and effective effective proposal proposal was was not not accepted accepted for for reasons reasons of of efficiency. efficiency.

made made by by Hans Hans Bekic Bekic at at a a later later meeting meeting (where, (where, I I do do not not recall), recall), but but this this beautifully beautifully

it. it. In In fact, fact, the the drastic drastic and and simple simple proposal proposal to to give give every every object object an an infinite infinite scope was was

functional functional sublanguage, sublanguage, even even though though Gerhard Gerhard Goos Goos saw saw no no problem problem in in implementin g g

tions, tions, narrowly narrowly missed missed having having Currying , , which which would would have have made made it it possess possess a a complete complete

( st ati cally cally unenforceable ) ) scope scope r estr ictions. ictions. Algal Algal 68, 68, which which has has hi ghe r-order r-order func­

scope scope probl e ms ) ) did did not not lead lead to to the the obvious obvious conclusion conclusion to to do do away away totally totally with with th e e

lo wed wed by by a a discussion discussion on on procedures procedures delivering delivering procedures procedures ( in in some some cases cases limited limited by by

discussion discussion of of dynamic dynamic sco pe pe checks checks ( ri g htl y y considered considered unavoidabl e e in in some some cases ) , , fol ­

cleclaration cleclaration within within a a formal formal bound bound to to obtain obtain the the size size of of the the array array vec. vec. Similarly , , a a

still still led led to to awkward awkward sy n t ax, ax, like like proc proc ( ( [1: [1: int int n] n] real real vec) vec) an an : : , , integer constant ­

ham p ered ered th e e development development of of Algal Algal 68. 68. At At this this point point the the desire desire to to avoid avoid bound bound checks checks

is is strikin g g to to note note the the g reat reat concern concern for for micro micro efficiency, efficiency, which which has has in in many many resp ects ects

Th e e dynamic dynamic checking checking of of array array bounds bounds and and scopes scopes of of references references was was discussed. discussed. It It

mo r e e ge neral, neral, includin g g dynamic dynamic replicators. replicators.

See g miiller , , Goos Goos and and m yse lf. lf. Th e e main main outcome outcome was was that that formats formats had had to to be be made made

was was held held wi th th the the small small number number of of members members really really interested interested in in the the subject: subject: Merner , ,

was was discussed , , briefly briefly but but quite quite constructively, constructively, I I thought . . A A special special eve nin g g session session

eno ugh ugh and and superfluous superfluous due due to to the the overloading overloading of of operators . . The The trans put put prop osal osal

still still using using some some explicit explicit coercion coercion operators, operators, was was criticized criticized as as unclear, unclear, not not fundam e ntal ntal

Th e e discussion discussion re t urned urned to to technical technical matters . . The The coercion coercion mechanism , , at at that that t i me me

is is an an example". example".

as as Al gal gal 60 , , Fortran , , PL / 1 ) , , that that has has been been published published after after a a "? "? Landin: Landin: "Lisp "Lisp

g aarden , , drama tically : : " Does Does an ybo dy dy know know of of a a languag e e of of world - wide wide scope scope ( such such

Apart Apart from from t h e e Authors, Authors, the the Committee Committee agreed agreed with with these these conditions . . Van Van W ijn­

4. 4. a n n I nfo rmal rmal Introduction . .

3 . . Imp leme ntation ntation of of the the lan g uag e e

2 . . Formalization Formalization of of the the semantics semantics in in competitive competitive des c riptions riptions

1. 1. Cla rification rification and and expans ion ion of of t he he syntax syntax

Ge rhard rhard See g miill e r r then then formulated formulated four four conditions conditions for for acceptance acceptance of of the the Rep o rt : :

wit hout hout this this stamp. " "

sub je ct ct t o o possible possible re vision vision as as result result of of this this effort. effort. Big Big companies companies wouldn 't 't implement implement

two two years, years, in in which which it it is is planned planned to to implement, implement, teach teach and and make make primers , , t he he langua ge ge is is

Berwick . . " H e re re is is the the document document on on Algal Algal 68. 68. Stamp Stamp it it under under the the provision provision that that after after

Van Van Wijngaarden Wijngaarden pr e ss e d d for for a a decision decision by by vVG2.1 vVG2.1 at at the the next next m eet ing , , in in North North

32 32 C.H.A . . Koster: Koster: The The making making of of Algal Algal 68 68 Conference on the History of ALGOL 68 33 type declarations) and an infinite number of Context-Free production rules. Van Wijn­ gaarden, who was a purely constructive mathematician, surprised me by his flippancy on the subject. W hen and Peter Landin crit icized him, he responded: aThis problem has puzzled us (not me). My machine may execute steps in geometrically decreasing time intervals" . Of course this would also allow "his machine" to prove or 4 disprove Fermat's Theorem in finite time, so this caused general laughter . :\'obuo Yoneda deplored that the unions in MR93 were not commutative and not cumulative, so that union (int, real) was not equivalent to union (real, int ) and to union (int, union (int, real)) . The Committee decided that unions should be made both commutative and accumulative. Van Wijngaarden protested that this was damned difficult, it would cause a terrible amount of work. Amid general catcalls that his description method was to blame, he promised a revised syntax. "We have only one life. Of course, if one of us gets ill ... - you are drawing such strong time limits on us! Give me time till after lunch." That night, he and John Peck started scribbling, and the next morning he showed us one page of syntax which solved the problem, a nice little nondeterministic automaton 5 . Then came the last phase of the meeting: what would happen next. The majority of the Committee seemed to want to thank the Authors politely for their trouble, and invite others to make alternative defini tions. Against this mood van Wijngaarden fought valiantly, pressing for a decision to be taken in the next meeting. At one point, he told the Committee: "This Working Group has wo rn out its fi rst editor, . Then it has worn out two authors , Wirth and Hoare. If I understand ri ght, it has now worn out four authors." Against tremendous opposition, using every rhetorical device 6 , he managed to commit WG2.1 to a definite resolutio n:

The authors are invited to undertake to edit a document based on 1vIR93, taking i nto account the questions and remarks received before, on , and possibly after, this meeting to the best of their power in the time they can afford for this job. This document will be submitted to the members of WG2.l before 1 October, 68. This document will be considered by WG2.l. Either WG2.1 accepts this document, i.e. submits it to TC 2 as Report on Algol 68, or it rejects it.

Even though a large part of the meeting had been ve ry constructive, it ended on a sour note. The behaviour of the great scientists present showed me that the progress of science is not just a matter of objective truths but also strongly influenced by human

4 But I know that privately he was worried, and only articles by Lambert Meertens and myself in AB 29, showing how to deal finitely with recursive modes, put his mind at rest. In the Revised Report, this matter was resolved very elegantly. 5 See 7.1. 1.aa-jj and 8.2.4 .a-d of [MR101] 6 [7], 8.23: SEEGMULLER: Then I have to vote against it! VAN \:VIJ NGAARDEN: I never say something final.

- .- - - - - · ~--

of of the the work work and and more more b t y h e e attitude s s of of ot h <' r r members members in in suc h h a a p a rty " "

DIJKSTRA

: : " The The group group to to whi c h h I I wo u l l be be I I mo st st at tracte d d w o 1 d d d b e e less less de c ided ided by by th e e subject subject 7

in te r est est wa s s in in " primi t iv es", es", i . e. e. e le m e nts nts of of semantics. semantics.

plans . . Actuall y y wh at at wa s s happ en i ng ng was was t h e e bir t h h of of WG WG 2.3 2.3 .The .The overwhelmin g g

7

m ost ost important, important, a a lar ge ge minority minority ( m cludin g g Hoar e, e, Dijk stra stra and and Turski ) ) had had wid e r r

wh o m ? ? A A small small majorit y y co nsid erer! erer! the the finalization finalization a n d d maint ena nce nce of of A.I go ! ! 68 68 t h e e

in in so uls earc hin g, g, which which l ed ed to to a a h e ated ated d e bate: bate: who who \\ · o uld uld like like to to do do wha t, t, and and with with

was was to to include include self-extension . . Ed sge r r Dijkstra Dijkstra now now pro po s e d d a a complicat ed ed e xperim e n t t

with with X X 6 8 ) , , = = th e e Co mmi ttee ttee would would turn turn to to th e e study study of of A.Igo! A.Igo! Y , , t h e e lan guage guage which which

future future work. work. Until Until then, then, the the fu ture ture had had been been clear: clear: af t er er finishin g g A.I g o! o! X X ( ap par ently ently

A A few few hours hours of of desultory desultory tech ni c al al dis cuss ion ion l ed ed t o o t h e e main main issue: issue: a a discus s i on on of of

in in which which the the vVG2 . l l members members found found th e mselves mselves united. united.

the the t roubl ed ed flam es . . In In fac t, t, s houtin g g at at t h e e Chairman Chairman seemed seemed to to be be th e e only only ac t ivity ivity

der der Po e ! , , for for pro ced ural ural e rro rs rs or or well-meanin g g remarks remarks that that mana ge d d to to throw throw oi l l on on

Now Now and and th en , , all all parti es es took took t im e e off off to to bla me me t h e e Cha irman , , Will em em L ouis ouis van van

meet in g g cou ld ld l ega liz e e i ts e lf lf by by r e -voting -voting history. history.

Af te r r much much deba te te they they were were r e-vote d , , and and accept e d. d. I I wondered wondered wheth e r r an an ille g al al

R esolutions esolutions taken , , and and there for e e even even the the l ega lit y y of of t h e e present present me e ting , , was was in in d o ub t . .

o f f 34 ) ) had had been been present present at at Tirr en i a , , the r e e had had be e n n no no quorum. quorum. Th e e validity validity of of th e e

Th e e meetin g g sta r ted ted off off badly . . Since Since only only 1. 5 5 o f f the the \\ or or ki n g g Group Group members members ( out out

6 6 The The North-Berwick North-Berwick meeting meeting

inst ruc ted ted to to d o. o.

[ MR95 ] ] in in the the back back of of m y y deux deux c h eveaux. eveaux. The The Authors Authors had had d one one wh at at they they ha d d been been

named named A.6 8 8 to to mee t t WG2 . . l l in in No r th th B erwick , , w it h h 5 0 0 co pi es es of of the the r ev i sed sed Dra ft ft R e p ort ort

A ll ll in in all , , I I felt felt qu ite ite satis fi ed ed w it h h our our work, work, as as I I was was dr iv i n g g over over the the appropriat ely ely

spread spread as as pra gmat ic ic r emarks emarks all all over over the the text , , which which therefore therefore g rew rew a ppr eciabl y y i n n si ze . .

but but helpful helpful crossrefe r e n ces. ces. A A vast vast number number of of s ma ll ll exam pl es es and and e xpla natio n s s wer e e

I n o n rd er er to to help help the the reader reader of of the the R eport , , all all syntax syntax rul es es w e r e e adorned adorned with with co mpa ct ct

i mplementat i ons ) . .

made made mu c h h mor e e flex i ble , , tak in g g up up ever ever m ore ore p ages ages in in the the R e p or t t ( an d d cod e e in in eventual eventual

of of arrays . . Unions Unions were were made made co mmu tative tative and and absorbing . . For matte d d trans p ut ut w as as

mec hanism hanism ( so so that that all all coercions coercions were were now now imp li cit ), ), a s s well well as as th e e sy n tax tax and and semantics semantics

t o o vote vote on on i n n North North B erwick I . n n th i s s short short t im e e we we com pl etely etely revised revised the the coercion coercion

We We had had barely barely 7 7 week s s to to m ak e e a a new new version version of of the the R eport , , fo r r t h e e Com mit tee tee

5 5 Mending Mending the the fences fences

cle ar ar repor t t co u ld ld con vin ce ce t he he m em bers bers o f f WG2 . . l. l.

e motions . . I I conclude d , , still still naively, naively, that that only only a a very very good good lan guage guage d e fin e d d i n n a a very very

34 34 C.H.A. C.H.A. K o s te r: r: The The making making of of Algal Algal 6 8 8 Conference on the History of ALGOL 68 35

Tony Hoare suggested the production of a brief document by each of the Members on each of his favourite subjects. Van Wijngaarden: "I like to thank Hoare for the distinction between the members who supply us with documents and those who do not." This remark did nothing to clear the atmosphere. Heinz Zemanek gave a stirring address, describing what TC2 expected from WG2.1: "You have to admit either that the document you have in your hands is the new Algal or that the editors have failed. In the second case you may charge the editors with further work or abandon the project. In the latter case you may decide that the contents is O.K. but the description has to be changed. You may also select new authors or issue the document as a preliminary one. You have, however, to make some decision, you cannot escape your responsibility, you cannot get rid of the problem." It was at this point that Doug Ross expressed his desire for a Minority Report, to be part of the Report. Immediately, people s tarted discussing the modalities and timescale for preparation of such a r eport, rather than its desireability. Van Wijn­ gaarden protested that at all earlier occasions, the Algol Working Committee had done without a minority report, although there was no one who agreed in every respect with the documents. But the ominous M-word was there to stay. Discussion went on to technical subjects, array bounds and efficiency, the imple­ 8 menter's burden and the Bauer Principle . The proposal to enforce definition before application (which later led to a number of Algol 68 subsets) was rejected because it would eliminate recursive modes. The same fate befell a suggestion to consider operators as macros rather than procedures. 1vlic ro efficiency, again. 9 Back we were, on the question of decision to be taken in December, the publication of the Report and the Minority Report and the use of the name Algol 68 in courses and seminars. l\fost members seemed to like the language described, but this was not the case fo r the description. Hoare and van Wijngaarden both mentioned t he possibility that the Report be published (first ) under the names of the Authors, without WG2.1 responsibility, but it was preferred to accompany the Report with an eventual :vii nority Report, to be drawn up by the end of the next meeting. Van Wijngaarden then brought up the fact that Peter Naur had published in AB28 a paper very critical of vVG2.1 and Algol 68, sparked off by .LvIR93. "As a Council member I will have to bring up the subject of AB28. It contains a piece of mud. IFIP pays the money for AB . I would suggest to the Council to reconsider the money appropriated for editing AB ." He was all the more offended, because it was reproduced and distributed by the Mathematical Centre. Why he chose to put this matter before \VG2 .1, I do not know. His remarks were of course very unfair to Frazer Duncan, the Editor of the AB, and led to a heated discussion, covering most of the morning, regarding censorship,

8 VAl\' WIJNGAARDEN: "Who does not want to use complex faci lities, does not pay for them. If the user wants to use them, he has to pay a little." gVAl\' WIJNGAARDEN: " ... If we accept this point of Mr Lindsey we will produce a FORTRA!\­ like language, by which I mean its intellectual level. " RA;\'DELL: "It is well to remember that there are also good sides in the FORTRAN intellectual level - do not forget its efficiency."

- - - - - ;.· ~

have have I I g lued lued small small strips strips of of white white paper paper over over Snopake -e ncrusted ncrusted ori g inals? inals? B y y now now

support support of of an an e di t or or to to mechanize mechanize the the production production of of the the Report. Report. H ow ow many many time s s

There There existed existed no no wordproc e ssing ssing software software to to speak speak of, of, and and we we had had not not even even the the

n e w w typefonts! typefonts!

s y mbol mbol on on the the TEX TEX APL-typeball. APL-typeball. H e e would would have have loved loved and and the the possibilities possibilities t o d o e fin e e

for for various various operators operators with with boldface boldface names names (e .g. .g. and and ELEM ELEM H e e UPB found found ). ). a a us e e for for e v e ry ry

ty pefonts pefonts offe r ed ed by by the the new new IB M M "g olfball " " printer , , and and introduced introduced outlandish outlandish symbols symbols

er rors rors and and in in the the process process retyping retyping eve ry thing . . Van Van vVijn gaarden gaarden loved loved the the freed o m m in in

la n g ua ge ge and and its its description, description, cl ea ning ning up up various various dark dark formula t ions, ions, correcting correcting small small

g aarden , , Mailloux Mailloux and and I I went went over over the the whole whole text, text, making making th e e last last changes changes i t n h e e

At At ?\fonich , , it it was was then, then, that that th e e ultimate ultimate choic e e would would be be mad e . . A g ain ain van van ­ Wijn

8 8 Towards Towards Muni Muni eh eh

sa id id Niklnus Niklnus Wir th th in in his his inimitable inimitable Swiss-G e rman rman En g lish. lish.

thro u g h h the the throng, throng, strai g h t t at at me. me. "Co nkratulations , , your your Master Master hass hass do ne ne i t" t"

V ehement ly ly discussing, discussing, p eo pl e e streamed streamed out out of of the the hall. hall. A A small small man man p ushed ushed

ap p lause . .

H e e carried carried t he he l iste n e rs rs with with him , , from from sce psi s s to to e nthu s iasm. iasm. Th e r e e was was a a pro longed longed

in te rrup ted. ted. :iNot :iNot just just tr ian g ular , , but but e v e n n elliptical" elliptical" r e plied plied Aad , , and and showed showed how . .

showe d d some some e x am pl es. es. "C an an you you d e fin e e t rian g ular ular arra ys?" ys?" someone someone ( Ton y y H o ar e? ) )

a a lan g ua ge' ', ', h e e sta rted , , and and pro cee ded ded to to outlin t e he he id e as as b e hind hind the the lan g ua ge H . e e

hall. hall. Van Van \Vijn ga ard e n n app e ar ed ed in in the the ce ntr e, e, s milin g g radian t l y. y. " L et et me me sell sell you you

people people w e re re standin g g on on all all sides , , even even in in the the corridors corridors and and outside , , in in front front of of the the

the the hi g h h point point of of the the conference, conference, and and not not only only to to m e . . The The auditorium auditorium was was pa cked , ,

away away from from No r th th B erwick . . Van Van Wijn g aard e n 's 's inv ite d d l ect ure ure o n n Al gol gol 68 68 was was to to m e e

The The I FIP FIP 1968 1968 Cong r ess ess took took pla ce ce t ha t t August August in in Edinbur g h , , just just a a few few hours hours drive drive

7 7 The The IFIP IFIP Congress Congress

p r e par ed ed t h e s e ta ge ge for for the the drama drama to to b e e e nacted nacted in in Munich, Munich, in in D ece mb e r r 196 8. 8.

Thu s s ende d d th e e meetin g, g, whi c h h had had brought brought littl e e technical technical pro g res s s but but w hi ch ch had had

t h e e la n g ua ge ge and and believ e e strongly strongly e nough nough to to wish wish to to propagat e e it. " "

c redit redit and and fortune. fortune. I I would would lik e e to to den y y it. it. I I did did a a lot lot of of work work because because I I do do beli eve eve in in

like like to to s ay ay t h e e following: following: it it was was suggested suggested that that I I and and so me me other other peo p le le seek seek fame , ,

" I I am am o ffended " " is is a a te ch l l nica and and not not a a personal personal r e mark. mark. On On my my ow n n behalf , , I I w ould ould

ex pre ss ss h i s s p e rsonal rsonal dislike , , but but nothin g g mor e . . The The seco nd nd thin g g is is that that hi s s stateme n t t

nece s sary sary to to apologize apologize for for him. him. " H e e did did no t t r e fus e e to to r e produ ce ce AB , , h e e wan ted ted t o o

be fore fore or d er er wa s s re s tor ed. ed. Lat e r, r, in in the the absence absence of of van van Wijn ga arden , , B arry arry felt felt i t t

Barr y y Mailloux Mailloux had had to to sa y y " Chucks, Chucks, fella ' s" s" many many times times in in his his mo s t t recon c iliator y y to n e e

Van Van Wijn g aarden aarden could could make make himself himself either either greatly greatly liked liked or or immensely immensely impopular . .

r e fereeing fereeing of of articl es es and and duties duties towards towards the the Computing Computing Community . .

36 36 C.H.A. C.H.A. Koster: Koster: The The making making of of Algal Algal 68 68 Conference on the History of ALGOL 68 37 even sometimes the wording of sentences was influenced by the fact that they had to fit within a g iven space. The nearer the deadline, the more frantic the work became. We were joined by Lambert Meertens, but still things went too slowly. The text kept changing, always for good reasons, and there was no chance to leave the normal period for an orderly offset production. The printer taught us to make matrices for the offset machine. In the end we had to learn how to bind and glue the whole document. Van Wijngaarden took time off to design and produce a suitable cover. It s howed a pattern built out of hundreds of elem-signs - and one little commercial at-sign, his personal mark. On ~he morning of the last day, after a frantic night and just before our flight left, the work was finished: we had produced the first printing of the Final Draft[lO]. No time to catch up on sleep. Lambert and I found ourselves sitting in front of the plane, dog tired. What would the Committee decide? We were too tired even to speculate. The stewardess brought us, unbidden, two baby bottles of champagne each, from a Gentleman in the back. vVe looked over the back of our seats: Van Wijngaarden sat there, besides a sleeping Barry Mailloux, prim as a daisy, and waved h is hand at us. The Authors had done their job.

9 And after

Algal 68 was accepted by WG2.1 as its own child at t he Munich meeting in December 1968, but it was a Pyrrhus victory for van Wijngaarden: a large minority dissented, and wrote a minority report. Translations of th Report in many languages appeared [11 , 13 , 14, 15], as well as an Informal Introduction [12] and textbooks explaining t he two-level formalism [16]. Implementations were slow in coming, apart from some (limited but successful) subset implementations. Before implementations of the fu ll language became available, the state-of-the-art in compiler making had to be advanced quite a lot. The language was used in many courses. Its effect, through teaching, on the minds of a generation of computer scientists was much greater than its utility in practical applications. The announced Revision of Algol 68 started almost immediately and took until 1974 [RR]. It resulted in an exemplarily clear, precise and consistent. description of an elegant and orthogonal language that was at that time already classical but dead - the Ilias and Odyssee of Computer Science. \\!hat has gone wrong? Many convincing reasons can be found . The lack of timely implementations (but those people who have actually programmed in Algol 68 remem­ ber it as a beautiful means of expression); the obscurity of the description (which is denied by virtually anyone who has bothered to study it); the lack of political and industrial backing (the fate of Algol 60, all over again ). I think that Algol 68 was the result and the conclusion of a decade of search for the ideal Algorithmic Language, but that the time for a unique programming language was already over when it appeared. In the seventies, research went on to other problems: Software Engineering, System

------~ ;:.. ·~~

trum, trum, M R R 99, 99, O ctober ctober 1968. 1968.

mat e e Draft Draft Report Report on on the the Alg or ithmic ithmic Language Language Algal Algal 68 , , Mathernatisch Mathernatisch Cen­

[9] [9] A. A. van van Wijngaarden, Wijngaarden, B.J. B.J. lVIa i lloux, lloux, J. E. L. L. P eck eck a nd nd C. P H enulti­ .A. .A. K oster, oster,

A ugust ugust 1, 1, 1968 . .

[8 ] ] I nfo r mal mal Minutes Minutes o f f the the IF I P P WG2 . l l Meeting Meeting in in North North B erwick , , J uly uly 28 28 -

95, 95, J uly uly 1968 . .

Document Document on on the the Algorithmic Algorithmic Language Language Algal Algal 6 8, 8, Mathematisch Mathematisch M R R Centrum , ,

[M R 95] 95] A . . van van Wijngaa r den, den, B . J. J. Ma i lloux , , J. E. L . . P e c k k and and C. Working Working H .A . . K oster, oster,

[7] [7] I nformal nformal Minutes Minutes of of the the IFIP IFIP WG2.1 WG2.1 Meeting Meeting in in Tirrenia, Tirrenia, J une une 3 3 - 7, 7, 1 968. 968.

Amsterdam, Amsterdam, june june 1 968. 968.

[ 6] 6] B.J. B.J. On On the the l\t l aillou implementation implementation x , , of of Algal Algal 68, 68, P h. D . . thesis, thesis, University University of of

M R R 93, 93, J anuary anuary 1968 . .

Draft Draft R e port port on on th e e Algorithmic Algorithmic Languag e e Algal Algal 68 , , Mathematisch Mathematisch Centrum , ,

[ IVI R 93] 93] A . . van van Wijn g aarden aarden ( Editor ), ), B . J . . !vlailloux, !vlailloux, J. E. L. L. P eck eck and and C. H. A. A. K oster , ,

1 967. 967.

Algorithmic Algorithmic Language Language Algal Algal 67 , , Mathematisch Mathematisch Centrum, Centrum, .M R R 92 , , '.\ovember '.\ovember

[ 5] 5] A . . van van Wijngaarden, Wijngaarden, B. J. J. Mailloux Mailloux and and A A J Draft Draft . E. L . . Proposal Proposal Peck, Peck, for for th e e

Language Language Algal Algal X, X, WG WG 2 .1 .1 v Vorking Vorking Paper, Paper, O ctober ctober 1966 . .

[ 4 ] ] A . . van van Wijngaarden Wijngaarden and and A A B.J. B.J. Draft Draft j \ 1 l ailloux, ailloux, P roposal roposal for for the the Algorithmi c c

guag e, e, Mathematisch Mathematisch MR MR Centrum, Centrum, 76 , , Octobe 1 r 965 . .

[ 3 ] ] A . . van van Orthogonal Orthogonal vVijn g aarden D , , e sign sign and and Description Description of of a a Form.al Form.al Lan ­

X X - I I - Subcommitte e, e, 0 0 \ VG2.1 VG2.1 \ Norking Norking P aper , , July July 1966. 1966.

[ 2 ] ] J .V. .V. Garwick. Garwick. J . M. M. Merner , , P .Z. .Z. l n g erman erman Report Report and and M. M. of of P th aul e e Algal Algal , , -

tomati c c Programming Programming 5 , , 1969. 1969.

[ 1 ] ] A A R. politico-social politico-social W . . Bemer , , hi s tory tory of of ALGOL. ALGOL. Annual Annual Re v I i n: n: ew ew i n n Au ­

R efere nc e s s

H ave ave they they really, really, I I wonder ? ?

me me with with great great emphasis: emphasis: "We "We are are going going to to do do right right what what Algol Algol 68 68 has has don e e wron g" . .

ADA , , on on his his way way to to the the success success that that brought brought him him the the Legion Legion d ' H onneur. onneur. H e e said said to to

by by Jean Jean Ichbiah , , the the author author of of the the language language L IS IS and and designer designer of of what what was was to to becom e e

I n n 1974 , , durin g g an an I F IP IP v VG2.4 VG2.4 Meeting Meeting in in B erlin , , I I was was stopped stopped in in the the corridor corridor

deja deja vu, vu, remindin g g me me of of the the making making of of Algol Algol 68. 68. The The F ar ar West West of of Computer Computer Science. Science.

the the shortcomings shortcomings of of C++ C++ and and solutions solutions to to overcome overcome them them gives gives me me a a strong strong feeling feeling of of

and and casts I . n n fact, fact, the the boisterous boisterous discussions discussions in in the the programming programming community community about about

security security have have been been mostly mostly lost . . A A whole whole new new generation generation of of programmers programmers uses uses coercions coercions

give a a give weird weird echo echo of of Algol Algol 68, 68, even even though though the the orthogonality orthogonality in in the the syntax, syntax, elegance elegance and and

unlikely unlikely places , , like like C C and and C++, C++, whose whose concepts concepts and and terminology terminology at at numerous numerous places places

Algol Algol 68 68 lives lives on , , not not only only in in the the minds minds of of people people formed formed by by it it but but also also in in very very

Implementation Implementation L anguages, anguages, D atabases atabases and and Computer Computer Graphics . .

38 38 C .H. A . . K oster : : The The making making of of Algal Algal 68 68

-- - . , , , . _, ~- - Conference on the History of ALGOL 68 39

[10] A. van Wijngaarden (Editor), B.J . Mailloux, J .E.L. Peck and C.H.A. Koster, Final Draft Report on the Algorithmic Language Algal 68, Mathematisch Cen­ trurn, MR 100, December 1968. [M R101] A. van Wijngaarden (Editor), B.J . Mailloux, J .E.L. Peck and C.H.A. Koster, Report on the Algorithmic Language Algal 68, Mathematisch Centrurn, MR 101, February 1969; also l urnerische Mathematik, Vo! 14, pp 79-218, 1969. [11] A.A. Bahrs, A.P. Ershov, L. L. Zmieskaya and A.F. Rar, Soobshchenije ob algorimicheskom jazyke Algal 68, Kybernetika, Kiev, Vol. 6, 1969 and Vol. 1, 1970. [12] C. H. Lindsey and S.G. van der Meulen, Informal introduction to Algal 68, :'forth Holland P ublishing Company, Amsterdam 1971. [13] D. Toshkov and St. Buchvarov, Algoritmichniyat yezik Algal 68, Nauka i Yzkustvo, Sofia 1971. [14] J. Buffet, P. Arnal and A. Quere, Definition du Language Algorithmique Algal 68, Hermann, , 1972. [15] I.O Kerner, Bericht iiber die Algorithmische Sprache Algal 68, Akademie­ Verlag, Berlin 1972. [RR] A. van Wijngaarden, B.J . Maill oux, J .E.L. Peck, C. H.A. Koster, M. Sintzoff. C. H. Lindsey, L.G.L.T. r.foertens and R.G. Fisker, Revised Report on the Algo­ rithmic Language Algal 68, Acta lnformatica, Vol. 5 Tome 1-3, Springer-Verlag, Berlin, 1975. [16) J . C. Cleaveland and R. C. Uzgalis , Grammars for Programming Languages. Elsevier/ North Holland, 1977.

41

An Orthogonal first Programming Language

Sietse van der Meulen RU Utrecht

Algol68 in Dutch academic curricula

' lnformat ica' ('Compute r Science') was accepted as a principal study in t he Dutch academic statute as late as 1981. By that time ALGOLGS was already very much a. dyin g lang uage. After a. long pregnancy of a. bout 8 yea.rs - includi ng the six years of breeding in the poucli of \VG2.l - the a.ctua.I birth a11no11 11ce1nent ea.me in the REVISED REPORT O N T ll E ALGOIUTllMI C L ANGUAGE A LGOLGS in 1974. Though stages of life in programming languages may be quite different from t hose in its inventors, A D 1981 the dying h ero was not even in its puberty. In that light it ca.n har dly be a surprise that we do 11ot fi11d 111a.ny trails in our present academic curricnla.. ALG O LG S still shows up here and t here as a subject in courses on the struct ure of programming languages and its defining formali sm s, as also in cou rses on impleme11ta.tion. Nowhere, however, it s ti ll is in practical use. T here are a.t least t wo simple reasons: usa ble co111 pilers are not longer a.v a.ila.ble on t he com put.er si t.es i 11 our universities, ;wd there ha.ve never been usable co111pile rs on the wide variety of sma ll computers am! st udents' PC's. Remarkably enough , the role of the language has been more in1porta.nt i11 aca.­

lu that co11text ALGOL68 could be 'tried out' in lectures 011 the la.n g ua.ge itself, on its defining mechanis m a.nd on its implementation . We were in the middle of the heavy fought battles on the issues of program ming languages: the debate on the pro's and con's of FO RTRA N, ALGOL60 , LISP, COl:lOL , PL / t, APL , SNOBOL4, SIM u LAGI , PASCAL, . . . . , and what more did we have u ntil ;rnd already including C , lVIo LHJLA and A OA . In this deba.te A LGO L68 for rna.ny of us was the most interesting point of departure for stopping the craz ~ ' prolife ration in a programmers Babylo 11 . In almost every comparison it see111ecl to be by far the best of all. It was also our s trong beli ef t ha.t A LGOLGS in part icular could and should be used as the first progra.rnmiug language - the language in which irnporta.nt con­ cepts of progra.rn 111 in g and datast.rnct 11 res cou Id best be ta.ugh t on the basis of its orthogonal structure. \Ve were convinced tha.t the language was eas y to teach, to use and to understand. There exis t. eel al ready textbooks. co111 pan ions,

in in 1967 1967 in in North North Berwick. Berwick. At At a. a. lat e. e. meeti n g g t:he t:he t.wo t.wo of of u s s were were commis s ioned ioned

'info rmal rmal in in trod trod 11ctio11 11ctio11 '. '. I I cl cl id id not. not. da r e e to to take take the the challenge challenge before before I I met met Charles Charles

mali c iou sly sly always always (I (I found found him him ki nd nd a.11d a.11d malicious) malicious) challe11ged challe11ged 111e 111e to to write write au au

I I communicated communicated my my frustrated frustrated fccli !l gs gs and and despair despair t:o t:o Aard Aard and and he. he. kindly kindly and and

particular particular for for the the '1111prepared '1111prepared s tudents' tudents' - and and thereby thereby fort.he fort.he language language it.self. it.self.

metaphors, metaphors, but but that that its its defining defining dor.ument. dor.ument. would would be be an an absolute absolute di s aster. aster. in in

convinced convinced that that the the language language wa s s as as sim p le le

C harl es es Lind sey's sey's a . musing musing little little p amphlet. amphlet. without: without: "r\LGOLf-i tears". tears". 1 1 S S became became

alarmed alarmed by by its its extreme extreme compl ex ity. ity. Fortunately. Fortunately. I I a l so so read read a.t. a.t. an an early early st age age

too too ear ly ly issued issued fir s t t 'fina l' - l' R eport . . and and became became more more a.net a.net more more frust.ra frust.ra t.ed t.ed a.u a.u d d

After After that that conversatio11 conversatio11 I I studied studied some some of of the the 111a.ny 111a.ny 'draft ' s s of of the the prernat.11re prernat.11re and and

language language than than in in t:hc t:hc language language dcfi11ed . .

dir ec tion tion he he once once sa.i d. d. ivioreover, ivioreover, he he was was 111u ch ch 111ore 111ore involved involved in in t.ltc t.ltc defining defining

showed showed

much much interest : : i11 i11 popularizing popularizing his his hrain - clrild . . I I lack lack in in any any /a/ r:11 / / Iha/ Iha/

and and what what he he saicl saicl i s s quite quite remarkable remarkable fro111 fro111 his his 111outh. 111outh. Va11 Va11 Wijngaardeu Wijngaardeu never never

The The above above is is a a rather rather precise precise tran s lation lation of of wlia.t wlia.t he he said said t.o t.o me me in in Dutch Dutch -

a.re a.re fully fully understood. understood.

certain certain complicat.ious. complicat.ious. But. But. the se se s hould hould disappear disappear a s s soon soon as as they they

t:o t:o tell tell the111, the111, in in t.lte t.lte proper proper accurate accurate way , , that. that. 111a11y 111a11y detail s s lead lead t.o t.o

yield yield an an internal internal objec t : : of of any any val11e. val11e. Of Of later later .vou .vou co11rse \\'ill \\'ill l1ave l1ave . .

unprepared unprepared stuclent : s s with with all all co111plica.tio11s co111plica.tio11s at at onr.e , , they they \\'ill \\'ill n eve r r

Listen, Listen, t.hiugs t.hiugs a . re re not not that that simple. simple. However, However, when when yo 11 11 t.ease t.ease

and and execution . . a a Jn Jn bri e f f con\'ersation con\'ersation aft.er aft.er the the lecture lecture he he said said to to 111 e : :

this this description description of of what . . happened happened at. at. i i t.erpretation. t.erpretation. or or h h t. t. rough rough 11 11 mm mm pi pi la.t.ion la.t.ion

values' values' that that could could become become ext e rnal rnal objects objects again, again, hy hy put. ting ting them them out.. out.. I I liked liked

objects objects co11ld co11ld he he brought. brought. to to yield yield oth e r r internal internal objects. objects. until until the the 1dt:i111a.t.e 1dt:i111a.t.e ·plain ·plain

memory memory and and how how - by by 'teasing' 'teasing' the se se in in their their t.11rn t.11rn cl cc e11t.l .v .v - the the internal internal

them them i n n a a proper proper way way - b e e brought brought to to yield yield i11t.ernal i11t.ernal objec ts ts in in a a co1n p11 ter ter

How How ex ternal ternal

object s s a.s a.s g enerated enerated a . . two by by - level level gramnmr gramnmr could could - 't ea sing ' ' b~ · ·

was was impressed impressed hy hy the the 1net.a . plior s s van van \ Vijngaarden Vijngaarden used used 011 011 t . ha.t. ha.t. occasion : :

Her e e I I want want to to rnake rnake a a personal personal not e. e. I I attended attended one one of of t.h es<> es<> lect.11res lect.11res and and I I

was was Aa rd rd van van \Vij11gaa.rde11 . .

s till till under under the the n ame ame cam e e ALGOL a s s - X, X, as as earl~ l!JGG. l!JGG. · · The The lecturer, lecturer, of of cour se, se,

Utrecht . . At At

the the lVIat.he1na.tica.I lVIat.he1na.tica.I Centre Centre the the first. first. lecture s s th e e new new la11g11a ge. ge. 011 011

Ce ntre ntre in in Amsterdam , , the the Techni ca l l U niv e rsity rsity of of Delft. Delft. a.ncl a.ncl t.he t.he Univer s it . y y of of

more more so so its its defining defining mechanism, mechanism, course s s already already began began at at th e e ?vfa . t . hemat. ical ical

While While

a a s ub

g roup roup of of \VG2.1 \VG2.1 wa.i-; wa.i-; st ill ill ela.bora . ti11g ti11g t.he t.he rev is ion ion of of a.ncl a.ncl A L GOL68 GOL68

1966-1981 1966-1981

1966-1981 1966-1981

and and 1981-now 1981-now the the - raise raise a.ncl a.ncl fall fall of of in in The The ALGOL68 ALGOL68 Nel ~ herla.nd s. s.

the the new new s tudy tudy of of ' lnfo rmatica'. rmatica'. \V e e can can thus thus roughly roughly distingui s h h two two period s : :

cisely cisely this this language language could could be be the the 11a.tive 11a.tive la.ng11age la.ng11age oft.he oft.he generation generation to to come come in in

practica.l practica.l gui de s s and and informal informal introductions, introductions, a.nd a.nd we we ha.d ha.d good good hope hope that that pre ­

42 42 S. S. v.d. v.d. Meulen: Meulen: An An Orthogonal Orthogonal first first Programming Programming Conference on the History of ALGOL 68 43

to prepare an "In formal I11trod11ction to ALGOLGS" as a 'co111pa11io11 vol11111e ' to the Report. \Ve have reason to believe that the 'co111 pall io 11 vol 11 rnes' ( t. o t.he Report and later to the Revi sed Heport) at least helped to postpone the li11al break cl own. John Peck also wrote a 'companion volume' . Another ea.rly bird was Fra11 k P agans' "A Practical Guide to AL GOL GS" . They all eased to so111e extend the fear, trembling and horror in the computing community. In Delft \Vi m va11 der Poet a.n d his group gave a.n en.rly start. to the promul­ gation of the language in T he Netherl an ds, and beca.111e a.cti ve on the front of im plementation already i11 l96!J. Iu Utrecht, fro111 1970 to 197~> , I tried our l11 for111al Introduction out on several groups of students fro111 quite different di sci plines. wlio were illt.erest.ed in pro­ gramming and progra111111i11g la.11guages as s11cli . Actually using the language was not yet possible because we did not li a.\·c· a compiler a.t. our di sposal befo re 1976. In Berlin at the Technical University Cees I\ost.er start.eel i11t.rodu ctory courses in 1972/1973 and 197:_~/197 ·1. He invited nt e to give the fir st of these courses which led to a. two-volu11 1e textbook 011 the language in Gerrnan which J wrote together with Peter l\:iihli11 g. This Derli11 -experie11 n• was very sti1uula.ting for my activities in Utrecht where ·Informatica· was hidi11g son1 ewhere deep i11 tlw Department of .Ma.the111a.t.ics. In 1971 Cees t.ook ('\'eryt.hi11 g. illcluding a few colleagues, with him t.o Nij111ege11 . In Nijmege11 A LG OLGS. as impleme11ted 011 t.he FLA CC: -cornpiler 0 11 IH .tvl , IH'­ came the first programming language i11 the l~J/ 8 curric:n lt11 11 a11cl remain ed so until 1987. Cees wrote several t.extliooks 011 strnct.med prng rarn111i11g usin g ALGOLG8 a. nd later ELAN - au in Gerrna11~ · den•loped edu ca.t.io11al dialect. A very irnporta.llt e\'ellt ror the position of ALGOL(>S ill Ut.rechL as al so i11 ivianchester and A1usterdalll, was t he co 11 1pletio11 i11 HJIG of au almost perfect full implementa.tion 011 the CDG8xxx (what. is i11 a 11 111n lwr ) later re11a111cd a.s 'Cyber'. Co11trol Da.ta wa.s coerced by contract t.o deli ver a. full i111plc111 e11ta­ tio11 of the la.11guage t.ogct.he r with it.s (for that. t. i111c huge ) 11111nl>e rcru11cher at the computer centres of Utrec ht. and the two u11i versit.ies uf Arn sterda. 111. Joost Scblichtiug aml hi s group i11 H.ijswijk (W i111 \·a11 dl'r Poe] wa s 011e of the co11 - sulta.nts) did a. quick. but. also i11credibly clean , job ancl produced a11 excelll'ltt. compiler - by taki11g the Report literally, as was the rna11da.tr~. Everybody - in fa.vo11r or against the language - ha s to accept. that ad1ip\·e111e11t. as a q11it. l• co nvinci11g proof of the quality of the Revised Report.! At la.st t.he11 we i11 Ut rech1 . co11ld use AL GOLGS. We i111 111 edia . t.el~· started to cl efi11e a.nd test a superset for operatio11s Oil ,·ect.ors a11d 111at.riccs over a rbit.ra.ry fi elds a. nd of varia ble size na.llll'd To111ux . It has IH:.• e 11 used fur so11 1< • t.i111 e at the Numerical Applica.tio11s Group (NA G) ill t he Unit:cd Kin gdom . From 1976 until 1982 we taught. ALGOLG 8 i11 Utrecht. as a. firs t. progra11 11ui11g language. lu the first. in stance we conlinecl ou rselves t.o a11 \•duca tio 11a.I subset· (nicknarne S PEEDY , so 111 eti 111 es even S PE EDYG8), though alw; ,,· s 1•1 •1p l1asizi11 g the full orthogonal structure a.nd encouraging st ndcll l.f to cxp1 ·ri1 .1('lll wi t l1 it.

------:-- :.:...

Netherlands. Netherlands.

In In Nijmegen Nijmegen ALGOL68 ALGOL68 held held until until 1987. 1987. In In that. that. year year the the langua ge ge died died in in The The

ALGOL68 ALGOL68 in in 198.5. 198.5.

these these a.nd a.nd con se qu ently ently used used PASCAL PASCAL for for the the practical practical exe rci se. se. Twente Twente dropped dropped

with with many many pitfalls pitfalls - in in the the t hird hird trimester trimester mo st st students students remcn1bere

ing ing - in in the the second second trimester trimester the the PAS CAL CAL pointer pointer was was a. a. tricky tricky new new concept. concept.

the the ALGOL68 ALGOL68 ref ref refwa. sjust sjust a. a. normal normal incidental incidental st one one in in a.11 a.11 orthogonal orthogonal build ­

ercise . . The The ma.in ma.in t.ronblespot t.ronblespot was was the the concept concept of of pointer: pointer: a. a. in in th e e first first trime s ter ter

trimester trimester the the students students could could freely freely choose choose b etween etween the the two two - a. a. for for practi ca l l ex ­

trimester trimester ALGOL68 ALGOL68 was was taught., taught., in in the the second second it it was was PA SCAL , , and and in in the the third third

academic academic year year there there was was snbcliYi d ed ed in in trime s t e rs. rs. B elieve elieve it it or or not: not: in in the the fir s t t

At At the the Technical Technical University University of of Twente Twente t.he t.he hcsitatio11 hcsitatio11 la. s t.ed t.ed fiv e e year s . . The The

batch batch mode mode of of two two decade s s a.go. a.go.

language language 011 011 the the Cyber Cyber until until about about two two years years ago ago - but. but. in in th e e una cce ptabl e e

cha.grin cha.grin I I had had t.o t.o turn turn my my back back to to ALGOLG 8, 8, although although we we s till till could could use use th e e

consequently consequently had had to to drop drop ALGOL6 8 8 in in favour favour of of PA SC AL. AL. To To n1 y y p ersonal ersonal

had had to to make make our our choice choice in in Hl 8 2. 2. We We wou ld ld get get VAX VAX a. a. a11d a11d UN IX, IX, and and almo s l. l.

In In Utrecht Utrecht we we s ta.rt e d d one one year year later later with with ' In formatica' formatica' as as a a pri11cipal pri11cipal s tudy tudy and and

sympathized sympathized with with the the language language for for quite quite son1e son1e time. time.

let let the the tim e e go go by, by, although although - in in the the wake wake of of the the Mathemati ca l l Centr e e - b o th th

gramming. gramming. The The two two univer s iti es es of of A111 s terdam terdam he si t.a . ted ted quit e e s om e e tirne. tirne. am! am!

ver s ity ity of of Twen Twen te te ( ( Enschede) Enschede) follow e d. d. usin g g Ko s t.er t.er 's 's books books s t rnctm ecl ecl pro ­ 011 011

The The decision decision in in Nij rnege11 rnege11 wa s s to to pro cee d d with with ALGOL6S. ALGOL6S. Th e e Technical Technical Uni ­

to to ta k e e d ec i s ion s s t he he fir s t t progra.mn1ing progra.mn1ing 011 011 la . 11 g11age g11age for for 'lllforrn at i c a . '. '.

la t e r. r. UNIX wa s s ri si ng ng abov t e he he European European horizon . . In In tha . t t s ituation ituation w e e h ad ad

PDPlO PDPlO and and later later tb e e VAX . . The The mi c ra's ra's and and P C 's 's were were to to come come a a ye fe w w ar s s

the the transition transition of of t h e e la . rge rge mainfram es es to to 111inico111p11t e r s s like like th e e PDP S, S, tl1 e e

or or very very littl e e experience experience with with computers computers and and programming. programming. We We wer e e just just in in

nomica.lly nomica.lly promising promising brandn e w w field field of of technology. technology. Most Most of of them them had had none none

s traight traight from from seco nda . ry ry sc hool s, s, and and ea.ger ea.ger to to mak e e a a good good ca r ee r r in in th e e eco ­

ment s s were were confront.eel confront.eel with with a a consid e rabl e e inflow inflow of of young young stu dent s s coming coming

At At the the s tart tart of of 'lnformatica' 'lnformatica' in in the the academic academic stat ute ute in in 1981, 1981, the the Du tch tch d e part ­

Alas , , we we can can be be very very brief brief on on thi s s period . .

1981-now 1981-now

like like to to have have - with with all all its its orthogonal orthogonal consequences . .

leave leave out out everything everything you you 't 't do11 do11 like, like, and and orthogonally orthogonally add add everything everything you you would would

The The main main RIX. RIX. bles s ing ing of of a . n n orthogonal orthogonal language language i s s preci se ly ly that: that: you you can can

Occasionally Occasionally we we even even mixed mixed the the subset subset taught , , with with superset superset features features like like Ton ­

44 44 · · S. S. v.d. v.d. Meulen: Meulen: An An Orthogonal Orthogonal fi.rst fi.rst Programming Programming 45

Algol 68 - 25 Years in the USSR

Mikhail A. Bulyonkov (Novosibirsk) Alexandr F. Rar (Novosibirsk) Andrei N. Terekhov (St.Petersburg)

The first information on Algol - then 67 - was brought to our country by Dr. Ershov in 1966. There arised then in Russia three focuses, in which current work of van Wijngaarden's team was attentively observed. These were Dr. Ershov's group in Novosibirsk, Dr. Lavrov in Podlipki, Moscow Region, Dr. Levinson in Moscow. In these places people began to send numerous remarks on the language and to consider its Russian terminology. The process of translating the report on Algol 68 into Russian followed the process of its up-to-dating in English so closely that both the Report and its Russian translation [1] were issued in the same year of 1969. Even before that, in February 1968 first lectures on the new language were held in Bakuriani, Georgia, at the special Winter School on Algol 68. Later on, the expansion of the language in the USSR was noticeable, but restricted. Groups of ardent adherents of Algol 68 appeared in Kiev, Kharkov (Ukraine), Izhevsk, Kazan, Tomsk, Berdsk and other Russian cities. The most strong and most fruitful of these groups was that of the Leningrad State University. For many years the Algol 68 was the principal programming language studied in the course of Computer Science in the Leningrad University. The Leningrad implementations of Algol 68 will be discussed later. But all these Algol islands were rare in the ocean of Fortran and, later, in the seas of Pascal, Modula, Ada. Starting from 1976 the official national organization on Algol 68 began to act, under whose observation were the translation of the Revised Report, publishing of literature, testing and adopting of . Up to 1982 this body was called "The Scientific­ Technical Commission" and was headed by A.P.Ershov. Lately it became a "Working Group" with G.S.Tseytin as its head. The last session of the Group took place in 1988, in which the national Standard of Algol 68 has been adopted. No attempt was made since then to call a new session of the Group. Our first publication of the Report, mentioned before, was bilingual. It contained the whole text of t he Report with all pragmatic remarks and pictures from Winnie­ the-Pooh. The work on the Russian translation and especially the sophisticated job of transforming the syntactic and metasyntactic rules into the Russian form gave rise to considerations of how to formalize the rules for creating national variants of Algol 68. Methods of designing syntactical and metasyntactical charts of Algol 68 were also considered , and properly designed charts accompanied the publication. Both these

programs . . In In fact fact it it was was a a data data base . . Some Some other other variations variations were were also also done done without without

meant meant to to preserve preserve between between the the executi o ns ns of of the the program program a nd nd could could be be used used by by different different

some some corrections corrections of of the the language. language. Na m ely ely an an "everlasting "everlasting " block" has has been been introduced , ,

onality onality were were in in fac t t due due to to the the Alg al al 68 68 itself itself but but the the pe rsistence rsistence feature feature urged urged for for

design, design, a a large large share share of of in ter pretativity, pretativity, and and so so on. on. Th e e system system of of types types and and orthog­

languages languages of of that that sort: sort: persistent persistent ol:ljects, ol:ljects, an an elaborat n d d system system of of types , , orthogonal orthogonal

data data base base language . . The The Kiev Kiev implementation implementation anticipated anticipated many many features features of of mod e rn rn

The The authors authors of of the the project project were were nterested nterested i in in Algal Algal 68 68 primarily primarily as as in in a a source source of of a a

management management system system called called "START", "START", for for which which Algol Algol 68 68 was was the the only only languag e e it it used . .

M . G.Shteinbukh , , L .A .Makogon . . The The implementation implementation was was oriented oriented to to an an information information

factory factory in in the the end end of of seventies seventies for for Siemens Siemens computers. computers. Its Its authors authors are are S.I.Shtitelman , ,

One One of of the the first first implementations implementations of of Algal Algal 68 68 was was done done in in a a Kiev Kiev computer-producin g g

survived, survived, but but it it really really became became widely widely spreaded. spreaded.

which which will will be be shortly shortly mentioned mentioned below , , only only one one o f f them, them, namely namely that that of of Lenin grad , ,

There There were were several several att empts empts to to implement implement Algo l l 68 68 in in the the US SR. SR. For For some some rea sons , ,

implementation implementation were were ommitted . .

of of its its propagation . . No No session session of of the the Group Group took took p lace lace wh ere ere problems problems of of the the langua ge ge

paid paid considerable considerable attention attention to to practical practical implementation implementation of of Al gol gol 6 8 8 as as the the main main way way

to to them. them. Th e e members members of of the the Working Working Group Group did did realize realize clearly clearly this this problem problem and and

have have become become an an object object of of purely purely mathemati cal cal investigations investigations with with all all closeness closeness prop er er

not not find find a a large large support support in in the the industry . . There There was was a a danger danger that that A lg ol ol 68 68 could could

l anguage anguage wa s s nested nested primarily primarily in in the the academic academic and and university university env ironme nt nt and and did did

Th e e complexity complexity of of Algol Algol 68 , , intrinsic intrinsic to to it , , has has contibuted contibuted t o o the the fa ct ct that that th e e

comp ilation ilation and and also also of of G . S.Tseytin's S.Tseytin's proposals proposals on on exception exception handling . .

Algol Algol 68 " . . This This document document made made use use of of the the IFIP IFIP proposals proposals on on modules modules and and separat e e

another another national national Standard Standard has has been been adopted , , namely namely "The "The Standard Standard of of t he he Ext ended ended

Report Report with with some some minor minor va ri ations ations n n i form form but but not not in in su bst ance. ance. At At the the s a m e e tim e e

1988 . . Th e e text text of of th i s s Standard Standard was was that that of of the the Russian Russian translatio n n of of the the R e vis ed ed

As As it it has has been been s aid aid before , , t h e e national national Standard Standard of of Algal Algal 68 68 has has been been adopted adopted in in

l atter atter forms forms a a part part of of the the book book describing describing the the Leningrad Leningrad compiler compiler [8] . .

b y y V.A.Vasilyev V.A.Vasilyev [ 7 ] ] and and also also the the " In troduction troduction to to Algal Algal 68 " " b y y A . . N . Te rekhov . . T he he

books books on on the the l:m gu age , , there there can can be be mentioned mentioned short short d e scriptions scriptions by by A .N. Maslo v v [ 6 ], ],

der der Meulen Meulen [ 4 ] ] and and of of " A A P ractical ractical Guide " " by by F . . G . P agan agan [ 5 ]. ]. As As for for the the orig i n al al

me n tion tion the the transla ti ons ons o f f the the "Informal "Informal Introd uctio n " " by by C. C. H . Li n dse y a y nd nd S . G . . van van

There There wer e e not not many many publicat i on s s on on Algol Algol 68 68 afterwards afterwards in in our our country. country. W e e can can

Al g ol ol 68 68 Co mmiss io n , , an d d the the final final re sult sult had had been been published published only only n n i 19 80 80 [ 3 ]. ].

autho r r rather rather than than by by four four of of them , , but but under under the the vigilant vigilant surveillance surveillance of of t he he nationa l l

of of the the previo us us Repor t. t. It It was was being being produced produced stea dil y y and and thoroughly , , by by a a single single

The The translati on on of of the the Revised Revised R epo rt rt wa s s not not performed performed a s s quickly quickly as as i n n t he he case case

vise d d Report Report and and corresponding corresponding proposals proposals have have been been partly partly included included into into that that R eport . .

co nstructing nstructing nat io nal nal variants variants have have been been taken taken into into account account by by the the authors authors of of the the R e­

Im plementa tion" tion" which which IFIP IFIP held held in in Munich Munich in in Jul y y 1970 1970 [2] . . Th e e considerations considerations o n n

problems problems became became topics topics of of the the r e port port presented presented at at the the Workin g g conference conference " Algol Algol 68 68

M.A. M.A. Bulyonkov Bulyonkov et et al.: al.: Algal Algal 46 46 68-25 68-25 years years

· - - · <' ; - :' :'. - - ~= ~= Conference on the History of ALGOL 68 47 any regards to the standardization efforts for Algol 68: all arrays were considered to be flexible, a control variable of a loop was long int rather than int, complex values were absent and so on. Accepted by the Working Group in 1979 this system exists no more because of changement of hardware in the factory. At the same time Algol 68 was being implemented on the base of the DEC archi­ tecture. This implementation was being performed under guidance of Dr. M.Levinson. Though uncompleted it brought some original ideas into the implemantation tech­ niques. The main distinction of this implementation was in the scope checking: the life-time of any object was not restricted by the execution time of the block, in which the object was declared. An inplementation of Algol 68 compiler for "" computer complex had been designed by V.V.Brol, V.M.Gushchin, V.B.Yakovlev (Moscow). Its source language is the full Algol 68 defined by the Revised Report and extended by some facilities of module handling. The compiler provides a good quality of the object code, a rather complete error diagnostics. It makes a good use of similarity between main concepts of Algol 68 and those of "Elbrus" architecture and . The compiler has been accepted by the national Working Group in 1985. The Leningrad group par­ ticipated actively in testing of that compiler. About ten large application packages developed in Leningrad University were ported almost without a problem to the "El­ brus" . But the tragedy of the "Elbrus" compiler was that these were practically the only real-life programs that were processed by it. The promising "BETA project" in Novosibirsk primarily designed by Dr. A.P.Ershov, M.Shvartsman, A.A.Baehrs was intended to produce compilers from language descrip­ tions almost aut homatically, and it had Algol 68 , PL/I and Simula 67 as its first ob­ jectives [9]. The system has really been created, but not in the form initially t hought of, and the languages it now encompasses areCBSimula 67, Pascal (these languages be­ ing implemented by G.G.Stepanov and S.B .Pokrovsky), Modula 2 (L.A. Zakharov), a subset of Ada (S.V.Ten), but not Algol 68 or PL/ I [10]. Nevertheless, the concepts of Algol 68 were used in the BETA system for creating both its universal compiling scheme and its internal language. Mostly developed were the works on Algol 68 implementation in the Leningrad University, in the group headed by Dr. G.S. Tseytin and Dr. A.N.Terekhov. Primarily these works were coordinated with the work on BETA system in the frame of a strategy elaborated by the Working Group. It was supposed that the Leningrad group would construct a debugging compiler, a sort of an avant-garde, meant to win new application areas for main forces , namely basic compiler to be constructed in Novosibirsk. A natural presumption was that any application program, debugged b y the Leningrad compiler should run on the 1ovosibirsk compiler without a need to be modified. As it has been just said, t he Leningrad project was originally oriented for practical uses and that fact determined both its principal decisions and its history. The fi rst version of the Leningrad compiler has been completed to the year 1976. Its analysing part was written in Algol 60 and run on the ODRA 1204 computer. Its generating part was written in the Macroassernbler and worked on IT' \J mainfr ame.

___ .;. - :;,.. __

of of the the new new field, field, to to develop develop prototype prototype implementations , , and and to to settle settle organizational organizational

controlled controlled by by specialized specialized computers. computers. It It took took several several years years to to get get inside inside the the specifics specifics

tion tion task task and, and, in in particular, particular, for for design design of of functional functional software software for for telephone telephone stations stations

proposal proposal for for cooperation cooperation in in programming programming of of a a large large class class of of control control and and communica ­

naja naja Zarja" Zarja" (which (which is is the the major major telephone telephone production production company company in in the the USS R ) ) with with

In In 1980 1980 the the Leningard Leningard group group was was addressed addressed by by the the scientific-industrial scientific-industrial union union "Kras­

language. language.

mization: mization: in in most most cases cases the the results results of of global global optimization optimization can can be be expressed expressed in in the the same same

In In a a sense, sense, implementation implementation of of Algol Algol 68 68 undermined undermined the the social social basis basis of of global global opti­

them them are are the the most most effective effective - those those for for parameter parameter passing passing and and for for array array indexing. indexing.

structure. structure. Statistics Statistics showed showed later later that that even even among among all all local local optimization optimization only only two two of of

duction duction of of global global optimization optimization would would have have required required a. a. significant significant revision revision of of compiler compiler

project, project, the the L en ingrad ingrad compiler compiler exploited exploited only only local local optimizations, optimizations, because because an an intro­

namely namely an an optimization optimization pass . . In In contrast contrast to to that that that that was was planned planned in in the the BETA BETA

piler piler would would ever ever appear . . So So a a new new pass pass was was incorporated incorporated in in the the L eningrad eningrad compiler , ,

At At that that moment moment it it became became clear clear that that it it was was highly highly im probabl e e that that the the basic basic com ­

other other technical technical facilities. facilities.

an an optimization optimization techniques techniques has has been been improved , , the the compiler compiler was was being being integrated integrated with with

for g o t ten: ten: a a dozen dozen of of cross-compilers cross-compilers for for different different specialized specialized computers computers were were compiled, compiled,

i nstance ) ) language language facilities facilities only only do do not not suffice. suffice. But But compilation compilation problems problems were were not not

too too compli c ated ated to to b e e a a language language for for simple simple tasks , , but but as as for for big big tasks tasks ( real real time , , for for

b usy usy primarily primarily with with the the programming programming technology, technology, for for there there appeared appeared that that Algal Algal 68 68 is is

la st e d d ov e r r 10 10 te n n years years with with minimal minimal modifications. modifications. In In that that time time the the designers designers wer e e

Th e e second second bootstrapping bootstrapping has has been been completed completed to to the the year year 1979 1979 and and this this version version

r e duction duction of of code code for for procedure procedure calls. calls.

ar i sed sed an an idea idea to to reverse reverse the the direction direction of of the the stack, stack, which which provided provided c a o nsiderabl e e

co mmand s s per per call call and and the the optimizing optimizing PL/I PL/I takes takes 30 30 commands . . Ten Ten year s s l a ter ter t h e r e e

reduced reduced fro m m 16 16 to to 6 6 bytes bytes per per call. call. For For comparison , , PL / I-F I-F c ompiler ompiler t akes akes 150 150

Gr e a t t effort s s wer e e needed needed to to optimize optimize procedure procedure calls. calls. The The c od e e size size has has be en en

like like nest nest not not yet yet known known to to the the author s. s.

Therefore Therefore a a new new construct construct has has been been added added to to Algal Algal 68 , , which which appeared appeared to to be be rath e r r

de s i gner s s realized realized necessity necessity of of library library preludes preludes and and separate separate compilation compilation of of procedur e s . .

l a t i o n ). ). Immediat e ly ly afterwards afterwards the the second second bootstrapping bootstrapping began. began. At At that that moment moment t he he

yielded yielded to to m any any u se r s s in in different different fields fields ( mathematical mathematical physics , , radar radar techniques , , s i m u­

In In 197 8 t 8 h e e first first bootstrapping bootstrapping has has been been done done and and the the resulting resulting compiler compiler has has been been

resi den t ial ial compiler compiler which which compiled compiled every every procedure procedure for for 2 - 3 3 minutes . .

t i me me c onsum e d d was was even even greater. greater. The The result result of of this this bootstrapping bootstrapping process process was was th e e

IBM . . Sin c e e debuggung debuggung of of thes e e procedures procedures urged urged remodifying remodifying and and recompilin g g them , ,

t ran s la ti on on o f f an an av e rage rage procedure procedure took took 10 10 minutes minutes on on ODRA ODRA and and 20 20 minu t es es on on

in p u t t t o o th e e IBM IBM computer computer and and t ranslat ed ed from from IL IL to to the the IBM IBM object object c od e. e. T he he

from from Algal Algal 68 68 to to an an intermediate intermediate language language ( IL ), ), the the punch punch tape tape obtained obtained has has been been

procedure procedure of of the the compiler compiler (more (more than than 1000 1000 of of them) them) has has been been translated translated on on ODRA ODRA

After After that that the the whole whole compiler compiler has has been been rewritten rewritten in in Algal Algal 68 68 and and extended: extended: every every

48 48 M.A. M.A. Bulyonkov Bulyonkov et et al.: al.: Algol Algol 68-25 68-25 years years Conference on the History of ALGOL 68 49 issues. The people from Leningrad group were convinced by their previous experience that it was absolutely necessary to use high-level programming languages. However they had to start with raising the programming culture of the applied programmers. This was caused by the reason that traditionally in the area of embedded real-time software development computers with non-standard architecture oriented to an appli­ cation domain are used. ( In fact , it is not evident, what this orientation should be. For example, if a specialized computer perform nicely some special operations, but works badly on branching and procedure calls which occurs thousand times as often as specialized operation, then could one consider it to be orientated to that application domain?). Non-standard architecture and small number of specialized computers lead t o the a bsence of sufficiently developed operating systems, compilers, debuggers, and other common programming tools. So the group had to deal with punchcards and switchboards. In a short period of time new cross-assembler and interpreter were developed, which together with documentation system and some service programs constituted the basis of the first industrial technological system based on Algal 68 and which was inten­ sively used by hundreds of applied programmers. Naturally, the technology was quite restricted but still popular due to the following objective reasons:

• A widely accessible mainframe with wide services was used instead of speci alized computers;

• Rich debugging tools of the interpreter which were not possible on a specialized computer;

• Comprehension by applied programmers of the necessity of documentation and easiness of its preparation, correction, and copying in the new environment;

• P ractically unbounded possibilities for the development of the technology. That was surprisingly quickly adopted by applied programmers and provided a back­ feed of ideas and suggestions.

Currently Leningrad group has a wide experience of using Algal 68 in various ap­ plication areas. The compiler A68LGU which is used as the implementation tool has quite satisfactory c haracteristics of reliability, compilation time and object code qual­ ity. However, recently the authors of Algal 68 proposed new interesting extensions of the language concerning modularity, separate compilation and exception handling. On t he ot her hand, it turned out that the A68LGU compiler does not fit well for incor­ porating of new technological tools, that were not foreseen from the design point, e.g. debugging in terms of source text. In the course of long exploitation of the compiler some other minor drawbacks were discovered (too narrow range of integer, for example) as well as more serious errors such as incorrect memory allocation in some cases. This lead to the decision to design a new programming system, which was called WBC. The distinguishing features of the new programming system are integrity and in­ teractive style of work. It has special means for configuration control and large project

-- -·- ;:-. :..·· ----

Pub!. Pub!. Co., Co., Amsterdam-, Amsterdam-London, 1971. 1971.

National National Variants. Variants. In: In: "Algal "Algal 6 8 8 Impl ementation" , , ed ited ited by by J.E . L.Pe ck, ck, ~.H. ~.H.

[2] [2] A.A.Baers , , A.P.Ershov, A.P.Ershov, A.F.Ra On On r Descr . . iption iption of of Syntax Syntax of of Algal Algal 68 68 and and its its

and and Part Part 1 1 of of 1970. 1970.

A.P.Ershov, A.P.Ershov, A.F.Rar A.F.Rar and and L.L.Zmievskaya. L.L.Zmievskaya. " Kib u netika", netika", Kiev , , Part Part 6 6 of of 1969 1969

Report Report [1] [1] on on the the Algorithmic Algorithmic La ngu ag e e Algal Algal 68, 68, Ru ssian ssian translat ion ion by by A.A.Baers , ,

References References

PC , , etc., etc., can can be be a a justification justification for for that. that.

progress progress on on t he he way way from from IBM IBM mainframe mainframe to to DEC DEC architecture, architecture, to to CAMCOH , , to to IBM IBM

Such Such unification unification makes makes the the system system open open for for extension extension to to other other computers, computers, and and the the

• • Algal Algal 68 68 as as the the implementation implementation language. language.

• • the the way way to to choose choose variants variants of of compilation compilation for for the the language language constructs; constructs;

• • run-time run-time support, support, including including I/O I/O procedures ; ;

• • technique technique of of code code generation; generation;

algorithms algorithms o o for for memory memory and and register register allocation; allocation;

timization timization phase , , listing listing generation, generation, debugger , , and and monitor ; ;

• • programs programs of of mode mode independent independent and and mode mode dependent dependent analyses, analyses, fragments fragments of of op­

• • stucture stucture of of compiler compiler tables tables and and access access procedures ; ;

• • syntax syntax of of the the intermediate intermediate languages ; ;

features: features:

All All compilers compilers of of the the WBC WBC systems systems hav e e the the following following common common components components and and

of of a a particular particular compiler. compiler.

terface terface were were possible possible even even on on one one and and the the same same computer computer depending depending on on the the objectives objectives

interface interface with with compiler compiler tables tables was was specified specified so so that that various various units units implementing implementing th e e in ­

o n n hardware hardware or or on on operation operation system, system, to to unify unify the the mechanisms mechanisms of of communications . . The The

o f f the the c ompiler ompiler and and its its dynanic dynanic environment , , to to specify specify precisely precisely parts parts which which depend depend

o ut ut to to be be much much mor e e complicated . . It It was was necessary necessary to to reorganize reorganize the the whol e e stucture stucture

wri t ten ten in in Algal Algal 68 68 provokes provokes an an idea idea of of its its portability . . However , , the the real real porting porting turned turned

c ompiler ompiler to to different different computers . . The The very very fact fact that that the the greater greater part part of of the the compiler compiler is is

r e alized alized on on the the basis basis of of the the A68LGU A68LGU compiler. compiler. There There was was an an experience experience of of porting porting the the

1001 , , PC PC compatibles , , and and some some specialized specialized computer ) . . Several Several cross-compilers cross-compilers were were

orientation orientation on on several several computers computers (I BM BM mainframe, mainframe, DEC DEC architecture, architecture, CAMCOH, CAMCOH, PS PS

development development support. support. Yet Yet another another specific specific of of the the WBC WBC system system is is its its simultaneous simultaneous

50 50 M.A. M.A. Bulyonkov Bulyonkov al.: al.: et et Algal Algal 68-25 68-25 years years Conference on the History of ALGOL 68 51

(3] Revised Report on the Algorithmic Language Algal 68. A. van Wij n­ gaarden, B.J .Mailloux, J .E.L.Peck, C.H.A.Koster, M.Sintsoff, C.H.Lindsey, L.G.L.T .Meertens and R.G.Fiskers (Eds.). Russian translation by A.A.Baers, "MIR" Publishers, Moscow, 1980.

(4] C.H.Lindsey and S.G. van der Meulen. Informal Introduction to Algal 68. Russian translation by L.Leifman, "MIR" P ublishers, Moscow, 1977.

11 (5] F.G.Pag:rn. A Pra c 1 •~ al Guide to Algal 68. Russian translation by A.F R,ar, " 1IR" Publishers, Moscow, 1979.

(6] A. N. Maslov. Algal 68. Structure of Programs, Moscow State University P ublishers, 1978. (In Russian. )

[7] V.A.Vasilyev, The Language Algal 68. Basic C oncepts. "Nauka" Publishers, Moscow , 1972. (In Russian.)

(8] G.Deykalo e t al. New Programming Instruments for ES EVM. "FiS nansy i tatis­ tika" Publishers, Moscow, 1984. (In Russian.)

(9] A.P.Ershov. A Multilanguage Programming System Oriented to Language Descrip­ tion and Univers al Optimization Algorithms. In: "Algal 68 Implementation".

(10] L.A.Zakharov, S.B.Pokrovsky, G.G.Stepanov, S.V.Ten, A Multilanguage Compil­ ing System. Computing Centre of the Siberian Division of the USSR Academy of Sciences, Novosibirsk, 1987. (In Russian.)

fl ! ; Ii :J t h 1 e k ~\ . ,. ,.,: ;.r f' 1r··um VO''. Wisku11, i; en lnfvrn1ui1rn ..... ~ ... ,._, Amst er dam ' ·•......

______:~ · . ------::::- ::- ::::::=- ---=== ---- -

:::::::::::::: -· --- 53

The Design of Elegant Languages

Lambert Meertens Department of Algorithmics and Architecture, CWI, Amsterdam, and Department of Computing Science, , The Netherlands

0 Introduction It was a dark and stormy week in Munich, the third week of December 1968, in which IFIP Working Group 2.1 decided to submit MR 100 as " the consolidated outcome of the work of the Group". MR 100 was the docum ent describing the design of the A lgo­ rithmic Language ALGOL 68 [4], after many iterations, with Aad van Wijngaarden's MR 76 [3] as the starting point. The weather o utdoors was fai r for the time of the year, a crisp cold ; but darkness had descended upon the hearts of the Working Group, and storms were raging in the hall of the Bayerische Akademie der Wissensclzaflen where WG 2.1 was assembled. A sub­ stantive minority of the members had strong crit icism of the outcome of the whole enter­ prise; so strong in fact, that it was a pparently impossible to discuss the alleged shortcom­ ings of the proposed language0 in a techn ical way, let alone suggest improvements that 1 might result in a desig n that could have found grace in the ir eyes • The criticism was laid down in a Minority Report, signed by E dsger Dijkstra, Fraser Duncan, Jan V. Garwick2, , Brian Randell, Gerhard Seegmiiller, Wlad Turski and . The followi ng is quoted from the Minority Report.

Now the language itself, which should be judged, among other th ings, as a l anguage i n wh ich to compose programs. Considered a s such, a program­ mi ng language impl ies a conception of the programmer's task. [ ... J More than ever, it wi ll be required from an adequate programming tool that it assists, by structure, the programmer in the most difficult aspects of hi s job, viz. in the reliable creation of sophisticated programs. In this respect we fa il

0. There was also strong cri ticism of the " how" of th e description itself next to the ''what " of w hat was described, but I sha ll leave th is aside. I. In th e in terest of fairness ii should be poi nted out, however, that Fraser Duncan had before produced proposals for more im portant changes, and although these were not followed he remained very active up to th e end in reporting technical deliciencies and suggesting minor improvements, most of which were indeed incorporated. 2. Garwick was actua ll y not present at the meeting, hut requestt:d afterwards th at his name be included among the signatories. A lso not present was S.S. Lavrov, who in fact had drafted an early version o r th e Minority Report.

a = 2 2 h = I. I. and and I f f the the outcom e e is is n o t t 7. 7. s om e t hi n g g we nt nt wro n g. g.

3 . . For For th ose ose w h o o want want t o o tr y y thi s, s, h e r e e is is a a si n n l e e c h eck eck o n n the the r es ult. ult. Ev a lu a t e e th e e r es ultin g g f o rmul a a for for

Finall y, y, when when we we have have to to perfor 11 1 1 s ome ome routine routine task task r e pe a tedly , , we we lo s e e attenti o n n

expanding expanding the the result result by by " multiplyin g g it it out " . .

3

occurrenc e e of of bin bin the the formula formula ( 2 a + h)(a -2 h)-(a + b)(a- 3 h) h) while while at at the the s ame ame tim e e

tuting tuting simultaneou s l y y a+b a+b for for ea ch ch occurrence occurrence of of a a a nd , , likewise , , a-h a-h for for each each

s e v erely erely limited. limited. A s s an an example , , tr y y (without (without writ i ng ng d o wn wn intermediate intermediate re s ult s) s) s ub s t i­

Secondl y , , the the amount amount of of thi ngs ngs that that we we can can m en tall y y handle handle simu/ta11eou is is s l y y

abl y y pining pining for for the the f j ords " " a s s " H e ' s s pining pining for for th e e t ] ord s, s, y ou ou know · · . .

of ten ten make make s ubstitution ubstitution error s . . For For e xa mpl e, e, w e m e ay ay r ec all all the the phra s e e " Well , , h e ' s s p ro ­ b

th i n g g like like that that dail y, y, we we t e nd nd t o o fo r g e t t i t. t. For For me a ni ngf ul ul thin gs gs that that we we d o o r ec a ll, ll, we we

th i n gs, gs, lik e e t e lephone lephone number s s or or non s en s e e text. text. If If we we do do not not u se se or or at at lea s t t recall recall so m e­

I n n the the fir s t t place , , human human long - term term memor y y i s s bad bad for for remembering remembering " m e an i ng l e ss '' ''

t hr ee . .

Th m e a in in limitati o n s s we we ha v e e that that a r e e rele v a n t t here here are are probabl y y th e e following following

puter s s or or pro g ram s s t o s o t ar t t w i t h . .

limi tati o n s s of of the the hum an an min d . . w e e h a d d no no If If s u ch ch l imitation s, s, we we w ould ould n ot ot ne e d d com ­

to to agr e e e t h a t t th e s e tat e m en t t th a t t thi s s is is diffic u lt lt (and (and d iffi cu l t t it it i s) s) is is also also a a st ateme n t t a b out out

tica ted ted pro g ram s . . is is n o t n t e c essa It It r y y t o g o i ve ve a a d etaile d d anal ysis ysis of of t h e e pro gra mm e r ' s s task task

p rog rammer rammer in in the the mo s t t difficul t t as pect s o s f h f is is job , , viz . . in in th e e r eliab l e e c r e at io of of n n soph is­

Report , , we we ca n r n e quir e e of of a n n adequat e e pro g ram ming ming tool tool th at at it it assis t s , , b y s y tru ctu r e, e, t he he

As As s uch , a a , pro g ramm i n g g l an g u ag e e is is und eniably eniably a a t o o l , , an d , , follow in g t g h e e Minorit y y

whic h h to to co program mpo s e e s . .

conside h r ere . . I I w an t t to to l o ok ok a t t prog ram m i ng ng l a n g u ag e s s h e r p e u re l y y a s s l a n guage s s in in

gram m i n g g l a n g ua ge ge i s s to to ac h i e ve ve p ro g ram ram por t ab ilit y . . T h is is i s s an an as p e ct ct th at at I I shall shall n ot ot

g ra m min g g la nguage . . Nowa da ys ys one one impor tant tant a i m m of of u s ing ing a a (co mmonl y availab y l e) e) pro ­

E xce pt pt for for ra r e e ca s e s , , prog r a m s s a r e e not not wr i tten tten in in m ac hi ne ne l a n g ua ge , , but but i n n s ome ome pro­

1 1 Limitations Limitations of of the the human human mind mind

to to do do i t t r ig ht , , o r r wi th th s u ffic i e n t t genera l i t y. y.

may may be be a rgu e d d th at at th e e essence essence of of the the i d e a a e x is ted ted b efo r e e in in lan g u age age A , , i f f B w B as as the the fi r st st

this this l ang u ag e. e. Al so , I I , wi ll ll fr eely eely asc ri bed bed "in n ova tio n s" s" to to language language B , , even even t houg h h it it

ALGOL ALGOL 68. 68. is, is, however It It , , not not my my aim aim to to g ive ive a a "c ritic a l l but but ba l ance d " " assess m ent ent of of

w ill ill no a t t t all all be be co mp r eh ensive. ensive. In In do i ng ng t h is is I I sha ll ll p ay ay p a r t i cular cular attentio n n to to

treatment treatment reflect s s lar ge l y y m y y persona l e l xper ie n ce ce and and ta s t e e in in pro g rammi n g , , a nd nd a s s such such

ming ming l anguage v s ie we d , , s pe ci fi cally, cally, as as language i s n w n h ic h h t o o co p ro mpose mpose gra ms . . The The

tion tion o f f the the programme r 's 's ta sk sk and and deal deal with with so m e e as pe c t s s i n n the the evo luti on on of of p rog ram­

Wha t t I I set set ou t t t o o d o o h ere ere next , , i s s t o o lo o k a k t t p ro g ra m mi ng ng l ang ua g e s s from from a a co nce p­

re garded garded as as a p a ro gra m ming ming t o ol , , t h e e l a n g u age age mu s t b t e e r eg ar ded ded as as o b so l et e . .

the the sam e e a s, s, say , , te n n years years ago . . Thi s s fo r ces ces upon upon us us th e e conclus ion ion t hat , ,

co n tra r y, y, we we fee l l that that it s s implicit implicit vi e w w of of th e e programmer' s s t as k i k s s ver y y mu ch ch

t o o see see how how th e e langu a ge ge propo se d d here here i s s a a s ignificant ignificant s t e p p forward : o : n n th e e

5 L. L. 4 4 Meertens: Meertens: The The Desi g n n of of Elegant Elegant Langua ges ges Conference on the History of ALGOL 68 55 after some time and start making the silliest clerical errors imaginable, precisely in those things we understand and know perfectly well. In the best case, a programming language helps the programmer to cope with the task of program construction by offering ways to get around such l imitations. A simple example is the programmer' s ability to choose meaningful identifiers, such a s "vector", "velocity " and " version" , instead of " V ", " VJ " and " V2 ". In a program with hun­ dreds and hundreds of identifiers - not at all uncommon - this is of inestimable help. In the worst case, programming is a struggle with the programming language itself, a strug­ gle in which more mental effort is spent in trying to cope with the intricacies and idiosyn­ crasies, if not idiocies, of the language, than on the actual problem.

2 The programmer's task

Part of the difficulty of programming, and sometimes t he most difficult part, may be to decide w hat th e program is to do in the first place, rather than how this is to be done. For example, in creating a good code generator, the hard task is to decide and specify what code it will generate ; after that the actual " coding", although perhaps not entirely trivial, is defin itely only a small part of the whole problem . Inasmuch as I have witnessed grandiose fai lu res of software projects, fortu nately usually from a comfortable distance, these were always foreshadowed by a failure to get a clear position on the "what", or even to reach agreement between the actors involved as to the basic objectives of th e project. Various kinds of formalisms can h elp to record th e decisions taken, if any, but as far as I am aware they tend not to be particularly usefu l in reaching th ese decisions, and I see no clear role here for what I consider to be programming languages. Deciding on the "what" cannot be entirely separated from the "how": sometimes a small change in the specification that is almost irrelevant from the point of view of the user of the program may be the difference between entirely feasible and entire ly infeasi­ ble. For example, in code optimization, there are fast and reasonably simple techniques that give very good register allocation, but for obtain ing a truly optimal allocation - on ly marginally better than very good - th e fas test algorithms we have may easily take more time than one could reasonably hope to gain by the optimization. Let us, however, assume that the " what" is given. The next step i s to go from the " what" to th e " how'', w hich typically in vol ves designing, jointly, suitable data struc­ 4 tures, and algorithms o perating on data encoded in terms of such structures . In my experience, this part is on ly rarely a difficult job. Typically I see " immediately" some obvious approach. Usually there is an "obvious" decomposition into sub-problems fo r which rather standard data structures and straightforward algorithmic techniques w ill do th e job. (It helps, of course, to have some knowledge of and experience with such tech­ niques.) In the rare cases in which the approach is not obvious, there is at least the satis­ faction of an intellectual challenge. So where we are now is that in principle th e algorithms to be used, including th e relevant data structures, are sufficiently clear in the programmer's mind, and that the task

4. I am nol considering the design of dislributed programs, which requires a very dilfr1 •:I .pproach.

s uffer uffer to to some some extent extent from from almost almost all all of of these these problems. problems.

most most programming programming languages , , and and certainly certainly those those that that have have a a good good deal deal of of currency , ,

Almost Almost impossible. impossible. And And yet yet this this is is what what most most programmers programmers do do all all the the time. time. Fo r r

code. code.

implementation implementation in in the the abstract abstract operations, operations, and and weaving weaving through through that that the the bookkeeping bookkeeping

to to perform perform a a rather rather mindless mindless task , , the the repeated repeated expansion expansion of of substituting substituting the the concrete concrete

in in mind, mind, while while continually continually retrieving retrieving confusing confusing items items from from long-term long-term memory, memory, in in order order

With With this this scenario scenario the the programmer programmer has has to to keep, keep, all all the the time, time, a a large large amount amount of of detai l l

ters? ters? Then , , are are there there perhaps perhaps restrictions restrictions that that apply apply here? here? Or Or s ome ome semantic semantic exception? exception?

not? not? Are Are the the separators separators here here commas commas or or semicolons? semicolons? What What was was the the order order of of the the parame­

what what its its concrete concrete syntax syntax is. is. What What was was its its name name again? again? Was Was this this keyword keyword abbreviated abbreviated or or

from from the the programming programming language language c an an actually actually be be used used (pant (pant pant) , , the the question question ari ses ses

i ng ng of of o ur ur poor poor programmer. programmer. By By the the time time this this process process reaches reaches the the point point where where a a construct construct

simultaneously simultaneously at at different different abstraction abstraction levels. levels. This This is is by by no no means means the the end end of of the the suffer­

where where the the decomposition decomposition is is in in the the traversal traversal of of a a virtual virtual tree , , and and thi s s possibly possibly aga in in

s ub - program s s solving solving sub-problems, sub-problems, so so that that the the programmer programmer also also ha s s to to keep keep track track of of

th e e p ro gramming gramming language language offer s s little little te x tual tual support support for for composing composing program s s from from

leve ls ls in in mind , , e a ch ch with with the ir ir ow n n me a ning, ning, repre sen tation s , , and and invariants . . Moreover , ,

unde r r co n s tru c t ion . . So So a ll ll th e e t i m e e the the programmer programmer ha s s to to keep keep tw o o different different abs tr ac t ion ion

p le x x and and involve s s awkwar d d bookkeeping, bookkeeping, which which ha s s to to he he woven woven through through the the progra m m

o ut ut again again and and again . . T h e e inbuilt inbuilt d ata ata t y pe s s are are weak , , so so that that thi s s i mplem e ntat ion ion is is com ­

This This mean s s that that th e e co n c rete rete impl e mentati o n n o f f the the abstra c t t operations operations h as as to to be be spelled spelled

a bs trac t t program program b eca u se se it s s abstraction abstraction a nd nd e ncapsulation ncapsulation me cha ni s m s s are are too too defic i ent. ent.

i nterface nterface can can be be cre ated ated betwe en en th e e "a b s tract tract m ac hine " " and and the the implem e ntati on on of of the the

me me ske tch tch the the wors t- case case sce n ario. ario. Ass ume ume tha t t the the language language is is s uch uch that that n o o suitab l e e

N ow ow where where do do t h e e problems problems co m e e i n ? ? What What is is i t t that that mak es es th is is s o o difficult ? ? Let Let

positio n n o f f the the p roble m m i nt o o sub - pro b lem s. s.

pri mi t i v es es is is l a r gely gely a a top-down top-down proce s s , , corresponding corresponding to to the the ( po ssi bl y y repeated) repeated) decom ­

cerns. cerns. W herea s s th i s s was was a a b o tto m - up up p h ase, ase, e xp ress ing ing t he he abstract abstract algorithm algorithm in in th ese ese

it s s proof , , th is is separation separation corres pond s s t o o a a factorization factorization of of the the pro of of b y y se p ara ti on on o f f c on­

built - in in from from the the start. start. In In the the poin t t of of view view i n n w h ic h h a a prog ra m m is is seen seen as as emerging emerging from from

new new da t a a types , , in in a a w ay ay as as if if th e e la nguage nguage h ad ad b een een designed designed w ith ith these these data s s

is is imp l ement ed . . Ideall y, y, the the effe ct ct is is that that t h e e p rogra mming mming language language is is extended extended w i t h h

their their ow n , , cre atin g g a s s it it were were an an a bs tract tract m ach ine ine on on to p p of of which which the the abstract abstract algorit hm hm

T he he imp lem entation entation of of t h e e ba s i c c operatio n s s can can be be viewed viewed as as programming programming task s s on on

ext e ns i v e e administrat i on on t o o keep keep t rack rack of of what what i s s being being u s ed ed when when by by who m . .

mented mented effi ciently . . Th is is m ay ay in v olve olve explicit explicit alloc ation ation a n d d deallocation , , r equiring equiring

t he he basic basic ope rations rations in in terms terms of of whi c h h t he he abstract abstract algori th m m is is formulated formulated can can be be imple ­

the the available available da t a a t ypes ypes of of t h e e programming programming lan guage . . T he he mapping mapping has has to to be be such such th at at

As As a a fi r s t t s tep tep a a mapping mapping of of the the abstract abstract dat s a tructur es es ha s s to to be be give n n in in terms terms of of

that that which which was was so so cl ear ear become s s ob sc ure , , if if not not a a mes s . .

g ram min g g lang uage. uage. i s-s It It till till in in m y y experien c e - here here that that suffering suffering s tart s, s, and and tha t t

concre te te embodiment embodiment of of the the algorithms algorithms and and data data s tructures tructures by by means means of of a a specific specific pro­

at at hand hand is is to to cast cast the s e e abstract abstract but but clear clear idea s s into into the the form form of of a a program ; ; to to create create a a

56 56 L. L. Meertens: Meertens: The The Design Design of of Elegant Elegant Languag es es

- -- . .

-

~ ::: ~ ~ .. .. Conference on the History of ALGOL 68 57

3 On elegance

What makes some designs more elegant than others? In general, when we call a design elegant, we mean that the design displays "good taste'', both in the choice of the ele­ ments of which the design is composed and in the way they are combined. So elegance is-to a certain extent, but undeniably - a matter of taste. A well-known saying tells us that there is no accounting for taste, and indeed, discussing such an elusive a::sthetic judg­ ment as elegance in an academic context is a somewhat precarious enterprise. Yet, as I shall argue, elegance in programming-language design is a difficult but important aim. The notion of "elegance" can be clarified somewhat further by some reflection on what we would, definitely, consider inelegant. Something can be inelegant because of "too-muchness": when the design is suffering from an excess of elaboration, with too many frills. Inelegance can also be due to a lack of balance, which can be defined as a local "too-muchness". Finally, a design can display bad taste in the incompatibility of its components, for example in style. An elegant design, then, is one that is characterized by the apparent simplicity with which its effect is obtained, evidenced by a certain restraint in the choice of elements, in number as well as in sty le : no individual part may give the impression it is superfl uous, and the overall design should give the impression of a conceptual unity. Most programming-language designers will argue - or so I expect- th at simplicity is a desirable property of programming languages, and th at their own pet language is simple. Now there is simple and simple. A knife is simpler than a pair of scissors. But clipping an article from a newspaper using scissors is a simpler task than cutt ing it out with a knife. It is meaningless to apply a notion like simplicity to a programming language without reference to its use as a tool for constructing programs, and without considering in particular th e nature of that task in relation to the limitations of the human mind. An essential aspect of that task is that the " features" of a language are not individu­ ally used as tools the way a carpenter uses a plane and then puts it aside to use next a chisel, and so on. It is the very act of combining various elements by which the program is constructed. From the above discussion of the programmer's task, we can see that all kinds of "bells and whistles" do more harm than good, and that, more than many " ready-made power features", we as programmers need a careful choice of elements that lend them­ selves to easy and graceful combination. An important part of that is that the rules fo r what may be combined when and how are easy. Of paramount importance for composa­ bility is the presence of abstraction mechanisms by which interfaces between abstraction levels can be created. We see thus how the element of elegance comes in . A language in which these things come together nicely will be felt by its users to be elegant. A somewhat different viewpoint is that in which programs are constructed by deriving them formally. How­ ever, the difference is more apparent than real. Precisely the same properties are required to make this formal activity doable, and in fact even more so.

we we arrive arrive at at the the third third step step at at the the follo w ing: ing:

If If TO TO and and Tl Tl are are still still too too complex complex an :J :J are are likewise likewise dec01 dec01 po s ed ed into into subtasks, subtasks, and and so so on, on,

l2: l2:

ll: ll: Ti ; ;

L 2 ; ; goto goto

TO: TO:

C C if if not not then then goto goto Li Li ; ;

the the IBM IBM 704. 704. Using Using 60 60 sy ntax ntax style A , , we we LGOL LGOL ge t t th e n : :

modelled modelled rather rather straightforwardly straightforwardly after after the the sa me me lo w- level level machine -c ode ode i n s truction truction on on

achieved achieved h y y using using "conditional "conditional jumps ' · · i n n the the p rog ram. ram. This This language language construct construct wa s s

T RA N N such such as as it it wa s s w hen hen A L GOL GOL 60 60 wa s s bein g g de signed , , conditi o nal nal execution execution was was

TI . . So, So, assu m ing ing we we h ave ave programs programs for for TO TO a n d d TI , , we we ca n n n ow ow give give one one fo T. T. r r In In FOR ­

th e e ta sk sk T T can can be be r ed uc ed ed t o o th e e simple r r task task TO, TO, whe reas reas ot h e rw ise ise it it can can he he simplified simplified to to

ex pres se d d dir ec tl y y as as a a basic basic s t ep . . However, However, wh e neve r r a a ce rta i n n conditi o n n C C is is satisfied , ,

Sup p ose ose we we h ave ave t o o wr ite ite a a program program for for some some task task which which T is is , , too too complex complex t o o be be

5 5 The The contribution contribution of of 60 60 ALGOL ALGOL

dim ensional ensional ar rays rays to to linear linear memory , , and -w h ence ence i t s s name -"formu l a a t ranslation " . .

of of FORTRAN FORTRAN were were an an explicit explicit parameter parameter mec ha nis m , , automa t ic ic ma pp ing ing of of more ­

langu age age level, level, the the mo re re such such irrelevant irrelevant things things tend tend t o o get get h idden. idden. The The main main innovations innovations

its its li fetime, fetime, b ut ut whic h h actual actual l ocation ocation is is chosen chosen is is co mp l et ely ely irreleva nt. nt. The The highe r r the the

be be store d d somewhere , , and and the the same same location location s hould hould no t t be be u sed sed for for som ething ething else else during during

not not relevant relevant are are taken taken away away from from the the responsib ilit y y of of the the programme r. r. A A q u antity antity has has t o o

Already Already ther e e we we find find that that details details of of the the mapp i n g g to to the the concrete concrete ma chine chine that that are are

lang uage uage was was high -level. -level.

are are a a valuable valuable h elp elp i n n p rog ram mi n g. g. is is e ntir It It e l y y pos sible sible than than t o o pro gram gram a s s if if the the

in in the the fac e . . Co nve rsely, rsely, assembl er er l anguages anguages may may have have ni ce ce abstractio n n mechanism s s that that

lin ear ear mem o r y y model model as as a a con t i guous ly ly addre ss able able s equ e n ce ce o f f words words keep s s staring staring us us

necess arily arily a a matter matter of of princip le. le. For For example , , in in C C th e e unde r l y in g g h ar d ware ware with with i ts ts

Ho weve r , , th e e difference difference between between asse mhl y y l a nguage s s a nd nd higher-le ve l l langu ages ages is is not not

un p l eas a nt nt chore s s h av in g g been been tak en en o ver , , and and with with mnemonic s s t o o a id id the the programmer s. s.

tra ditionall y y viewed viewed as as giving giving a a d ire c t t ma pping pping to to machine machine code code but but wit h h some some

abs tract tract mach i n e e model. model. Th i s s evolution evolution s t a rted rted with with s o -ca lled lled assemhlers, assemhlers, which which are are

the the low-lev e l l model model provided provided b y y hardware hardware architectures, architectures, creating creating instead instead a a more more elegant elegant

Th e e evolution evolution of of programming programming languages, languages, already already hefore hefore ALGOL ALGOL 60 , , ha s s heen heen away away from from

4 4 Before Before 60 60 ALGOL ALGOL

58 58

L. L. Meertens: Meertens: The The Design Design Elegan of of t t Languages Languages

· - ·. ·. -~ -~ - Conference on the History of ALGOL 68 59

if not C then goto LI ; if not CO then goto LOI ; if not COO then goto LOOI; TOOO ; goto L2; LOOI: TOOJ ; goto L2; LOI : if not COJ then goto LOI I; TOJO ; goto L2; LOI I: TOll ; goto L2; LI: if not Cl then goto Ll 1; if not CJO then goto LJOJ; TJOO ; goto L2; LIOJ: TJOJ; goto L2; Ll 1: if not Cl I then goto Ll 11; TllO; goto L2 ; Lll 1: Tl 11; L2: The result looks like spaghetti but is rather more unpalatable. It is far from easy to see from this text under what condi tions exactly T](Jl, for example, will be executed. It is, of course, not accidental that this resembles compiled code. It is compiled code: hand­ compiled from the abstract idea into to th e limited constructs of a programming language. A major innovation of ALGOL 60 was that specific program-composition construc­ tions were provided for the common cases of task decomposition. For conditional execu­ ti on ALGOL 60 has if c then TO else TI With this notation, the above spaghetti program becomes:

text text to to characterize characterize hi s s "Type "Type 2" 2" langu ages ages (now (now generally generally known known as as con text - free free languages ) . .

5. 5. More More properly: properly: to to r e-i nvent. nvent. Chomsky Chomsky had had before before de sc ribed ribed context-free context-free gram mar mar in in a a linguistic linguistic con ­

were were g iven iven explicitl y y in in the the syntax syntax rules. rules. There There was was a a rule rule for for a a conditional conditional integer integer

required , , of of cour se, se, generalizing generalizing construct s s to to arbitrary arbitrary type s . . In In ALGOL ALGOL 60 60 the the types types

Some Some facility facility was was needed needed by by which which programmers programmers could could add add their their own own type s . . T hi s s

important important as as numeric numeric computation. computation.

evident evident that that this this w as as a a se rious rious deficiency; deficiency; non-numeric non-numeric computing computing h a d d become become at at lea s t t as as

other other kind kind of of structure structure than than vectors vectors and and matrices matrices o f f number s. s. B y y the the mid mid s ixtie s, s, it it was was

T hi s s shows shows in in the the absence absence of of any any inbuilt inbuilt facilitie s s to to compute compute with with texts , , or or with with any any

than than T he he majority majority of of FORTRAN. FORTRAN. it s s authors authors had had a a b ack ground ground in in numerical numerical mathem a t ics. ics.

T h e e sy nt a ct ic ic generality generality of of ALGOL ALGOL 60 60 made made it, it, decidedl y, y, a a much much mo re re e leg a nt nt language language

6 6 Some Some problems problems with with 60 60 ALGOL ALGOL

This This is , , i ndeed , , what what happened happened with with ALGOL ALGOL 60. 60.

BN F , , i t t is is easier easier to to de sc r i b e e a a lan guage guage without without suc h h a rbitrar y y restrictio n s s th an an with. with.

language language i s s described described by by " ve rb al al prose ", ", s u ch ch r estrict ion s s are are easy easy to to put put in . . Using Using

of of mag nitud e e m o re re than than th e e tim e e gai ned ned by by the the l azy azy compiler compiler writer. writer. I f f the the syn ta x x of of a a

effort , , if if i t t is is po ss ibl e e at at all. all. The The total total am o unt unt o f f ti m e e wasted wasted thi s s way way i s s seve ra l l o rde rs rs

int o o such such re s tr ictio n s, s, an d d getting getting aro un d d them them may may tak e e more more th a n n half half of of th e e c oding oding

subexpressio s; s; n and and so so fo rth . . In In doing doing s er i ous ous p rogramming , , pro gra mmer s s keep keep ru nning nning

proc edures ; ; o r : : expressi o n s s may may only only be be nested nested five five levels levels deep deep a nd nd co n tain tain at at most most 511 511

identifiers identifiers may may have have o nl y y seve n n c haracter s; s; o r : : proce dure s s m ay ay n o t t be be ne s t ed ed inside inside o t her her

their their own, own, to to l ike ike silly silly rest ri c ti ons ons th a t t mak e e the the programmer 's 's life life h a r der, der, s u ch ch as: as:

ma t ical ical for malism , , w h i ch ch became became know n n as as BNF . . Co mpiler mpiler writ e r s s tend , , for for rea sons sons of of

To To desc ri be be thi s s ex actl y, y, t h e e aut h ors ors of of th e e ALG OL OL 60 60 Rep ort ort had had to to i nve nt a a new new gram­

5 5

As As a a res u lt, lt, the the definition definition of of what what a a perm is sible sible p rogram rogram is is got got a a recursive recursive nature. nature.

The The advant a ge ge sho uld uld be be clea r . .

TI TI II II else else

TI TI 10 10 t hen hen

Cll Cll else else if if

TIOI TIOI else else

TIOO TIOO then then

C IO IO then then if if

Cl Cl else else if if

TOI TOI I I else else

TOJO TOJO the n n

COi COi els e e if if

TO O i i else else

TOOO TOOO then then

C OO OO then then if if

CO CO then then if if

c c if if

60 60 L. L. Meertens: Meertens: The The Design Design of of Elegant Elegant Langua ges ges Conference on the History of ALGOL 68 61

expression, and also for a conditional boolean expression, but not, for example, for a con­ ditional string expression. Another problem with ALGOL 60 had to do with type checking. The following is a program, written in ALGOL 60, that contains a type error: begin procedure a (b, c, d, e, f, g); b(c, d, e, f, g, a);

procedure s(t, u, v, w, x, y, z); z(s, t, u, v, w, x, y);

a(a, a, a, a, a, s) end The procedure-call rule of ALGOL 60 results in the following call sequence: a(a, a, a, a, a, s) a(a, a, a, a, s, a) a(a, a, a, s, a, a) a(a, a, s, a, a, a) a(a, s, a, a, a, a) a(s, a, a, a, a, a) s(a, a, a, a, a, a) Here sis called with six parameters. Buts requires seven parameters. In general there is no foolproof way to determine in advance whether an arbitrary ALGOL 60 program con­ tains such a type error. This is rather ohvious if we only consider "reachable code' ', since it is not decidable which parts of the program are reachable. One can take a more textual view and require that under repeated replacement of calls by expanded bodies there are no parameter mismatches. But even then the problem is undecidable, as was shown hy Langmaack [2]. There are, of course, more shortcomings of ALUOL 60, in particular the conspicuous absence of input/output facilities. Adding these is, however, "merely" a matter of adding. It does not require a really new language. The problems mentioned above could not be solved without creating a new language.

7 From ALGOL 60 to ALGOL 68

Van Wijngaarden's insight was that the required generalization of the syntax rules could be obtained by introducing parametrized grammar rules [3]. Using BNF-like notation, and applying this to ALGOL 60 syntax (somewhat simplified), we see that the rules

Rep o rt ) . .

"

union

and and " " "struct ", ", r e quire s s th e e u s e e o f f "r e f for for " " " s hi e ld yin i n g g ·· to to . . (sec (sec rule s 7 s .4 . 1 1 of of th e e R ev i s ed ed

7 . .

This This i s s es pecially pecially sev e re re s inc e e the the obviou s s w ay ay to to define define "al gebra ic·· ic·· type s . . with with recur s i o n n through through

m o r e e co mmon mmon term term " type · · . .

6. 6.

In In

68 68 idiom. idiom. the the A t e LGOL LGOL rm rm "mode" "mode" i s s us ed ed for for what what i s s usually usually cal le d d "typ e ·'. ·'. In In thi s s arti c l e e I u I se se the the

It It ha s s heen heen remarked remarked that that ALGOL ALGOL 60 60 was was an an improvem e nt nt over over most most of of it s s

current current major major programming programming language s s do do a a much much better better j u h. h. Or Or do do they? they?

With With our our present present knowledge knowledge of of th e e principles principles of of prog r amming amming languages , , surely surely the the

ALGOL ALGOL 68 68 was was not not only only the the brainchild brainchild of of van van Wijngaarden , , but but also also a a child child of of its its time. time.

It It is is inevitable inevitable that that any any retrospective retrospective activity activity ha s s ome ome of of the the power power of of hindsight. hindsight.

8 8 After After ALGOL ALGOL 68 68

typed. typed.

At At least least as as important important as as the the type system per per se se i s s the the fact fact that that ALGO L L 68 68 i s s strongly strongly

detailed detailed criticism , , see see [I]. [I]. Koster Koster

con s tructor tructor

"ref

", ",

in in particular particular the the coupling coupling of of assignability assignability with with referring For For more more . .

7

The The main main criticism criticism I I see see for for the the type type system system of of A L GOL GOL 6 8 8 is is the the low low level level of of the the type type

and and the the implementation implementation of of the the abstract abstract algorithm. algorithm.

users users to to define define a a good good interface interface between between the the implementation implementation of of their their "abstract "abstract machine " "

formation formation rules. rules. In In 196 8 8 it it was was an an innovation ; ; and and precisely precisely what what is is needed needed to to allow allow the the

Today Today it it is is entirely entirely commonplace commonplace that that the the type type s ystem ystem of of a a language language ha s s recur s ive ive

have have exceptions . .

type s of of ALGO L L

68. 68. And, And, just just as as for for ALGOL ALGOL 60 , , this this makes makes

it it harder harder rather rather than than easier easier to to 6 6

for for program program texts texts in in A L GOL GOL 60. 60. here here the y y allow allow to to give give recursive recursive formation formation rule s s for for the the

Just Just like like context context free free grammar grammar permitted permitted to to describe describe the the recursive recursive formation formation rule s s

Wijngaarden Wijngaarden grammar s s have have for for the the met al e v el el a a conventional conventional context context free free grammar. grammar.

the s e e had had either either a a limited limited or or not not grammatically grammatically s pecified pecified domain domain for for the the metalevel, metalevel, Van Van

varieties varieties of of two-level two-level grammar s, s, s uch uch a s a s ffi x g x rammar s s or or attribute attribute grammar s, s, but but wher e e

"metalevel " " of of the the grammar. grammar. I I do do not not know know if if Van Van Wijngaard e n n wa s s aware aware of of other other

require s s now now to to desc r ibe ibe what what "T YPE " " can can stand stand for. for. Thi s s de s cription cription form s s th e e

if if "T YP E" E" can can stand stand for for any any of of " boolean " , , "real " " and and "integer " . . The The gen e ralizati o n n

( cond if if i tion ) ) then then ( T YP E E expression ) ) else else ( TYP E E expression ) )

( conditional conditional T YP E E e x pres s ion : : = = ) )

can can be be unified unified to to a s a ingle ingle rul e e

( condition if if ) ) then then ( real real expression ) ) else else ( real real expression ) )

( conditional conditional real real expre s sion ): : = =

( condition if if ) ) then then ( integer integer expre s sion ) ) else else ( integer integer expression ) )

( conditional conditional integer integer expres s ion ) ) :: = =

( condition if if ) ) then then (boolean (boolean expression ) ) else else (boolean (boolean expre s sion ) )

( conditional conditional boolean boolean expression): := :=

62 62 Meertens: Meertens: L. L. The The Design Design of of Elegant Elegant Languages Languages Conference on the History of ALGOL 68 63

8 successors . To make a joke in the style of van Wijngaarden, but reflecting my personal opinion: ALGOL 68 would have been an improvement over most of its successors, had it had any. Is it true that the "implicit view of the programmer's task" underlying the design of ALGOL 68 was very much the same as, say, 1958? Whether this was so or not, ALGOL 68 introduced a view on types that makes programming easier. It is a view that is common now. Unfortunately, not much has been added since, at least not in major available languages. Although C owes much of its type system from ALGOL 68, it is clearly a step back towards the machine level. In particular, it is annoying-to put it extremely mildly-that the allocation and deallocation of dynamic "non-stack" storage is the responsibility of th,, C '."'rogrammer, and that the sem~11tics of C gives nn ~upr"rt for keeping pointers in check. A true improvement, in my opinion, is type polymorphism. I am more dubious about the object-oriented paradigm. I've seen no linguistic approach to that seems of an acceptable neatness to me.

9 Final remarks

There is a tension between two viewpoints concerning the relation between language design and program correctness. One viewpoint is that a good language makes it hard to write bad programs. The other viewpoint is that it makes it easy to write good programs. Van Wijngaarden was an outspoken adherent of the latter viewpoint; he considered the first one "paternalistic". Nevertheless, the design of ALGOL 68 is such that many if not most "clerical errors" may be statically detected, and this was already so in the version of 1968. No language design can really prevent programmers to create an inextricable mess, and a language in which it is really hard to write had programs probably also makes it hard to write good programs. Nevertheless, some things in ALGOL 68 are error prone (like ''ref" mentioned before), and I think the language could have been better if more attention had heen paid to such problems. The same is true for almost all languages that saw the light since. For the record, I want to state that- although my name is associated with, in partic­ ular, the Revised Report [5]-1 do not feel I have, personally, a stake in any evaluation of the design of ALGOL 68. My role has mainly heen confined to "debugging" and pol­ ishing an existing description of an existing design, and this has had at most a marginal influence on the language as a programmer perceives it. I do feel responsible for remain­ ing errors in the Revised Report (not counting the section on Transput declarations); in particular, being reminded of the painful fact that I overlooked that "real field letter y integral field letter I" contains "yin" (see rule 7.3.1.c of the Revised Report) still can make me blush.

8. I do not remember to whom this witticism should be ascribed, but Tony Hoare comes hJ mind as a plau­ si ble source. In any case I am prelly sure it was not .

the the Algorithmic Algorithmic Language Language ALGOL ALGOL 68. 68. Acta Acta lnformatica lnformatica 5, 5, 1-236. 1-236.

C.H. C.H. Lindsey, Lindsey, LG.LT. LG.LT. Meertens Meertens and and R.G. R.G. Fisker, Fisker, Eds Eds (1975). (1975). Revised Revised Report Report on on

5. 5. A. A. van van Wijngaarden , , B.J. B.J. Mailloux , , J.E.L. J.E.L. Peck , , C.H.A. C.H.A. Koster , , M. M. Sintzoff, Sintzoff,

Amsterdam, Amsterdam, Mathematical Mathematical Centre Centre Report Report MR MR 100. 100.

Final Final Draft Draft Report Report on on the the Algorithmic Algorithmic LangutJge LangutJge ALGOL ALGOL 68. 68. Mathematisch Mathematisch ['nntrum , ,

4. 4. van van A. A. Wijngaarden Wijngaarden (Editor), (Editor), B.J. B.J. Mailloux, Mailloux, J.E . L L Peck Peck and and C.H.A. C.H.A. Koster Koster (1968). (1968).

MR MR 76. 76.

language. language. Mathematisch Mathematisch Centrum , , Amsterdam, Amsterdam, Mathematical Mathematical Centre Centre Report Report

3. 3. van van A. A. Wijngaarden Wijngaarden (1965). (1965). Orthogonal Orthogonal design design and and description description of of a a formal formal

gramming gramming languages. languages. Acta Acta Informatica Informatica 2, 2, - 110 142. 142.

2. 2. H. H. Langmaack Langmaack (1973). (1973). On On correct correct procedure procedure parameter parameter transmission transmission in in higher higher pro­

rithmic rithmic Languages Languages 1975 1975 (S.A. ! Schuman, Schuman, ed .), .), 125-138, 125-138, IRIA, IRIA, Rocquencourt. Rocquencourt.

C.H.A. C.H.A. I. I. Koster Koster (1976). (1976). The The mode mode system system in in ALGOL ALGOL 68. 68. New New Directions Directions in in Algo­

References References

64 64 Meertens: Meertens: L. L. The The Design Design of of Elegant Elegant Languages Languages 65

Aad van Wijngaarden and the Mathematisch Cent rum A personal recollection

John Peck em. University of British Columbia

Preamble After nine years of retirement, it is surprising to receive an invitation to attend a confe rence on Computer Science. It is comforting to be told that one is not expected to indulge in deep archival research and that makes it a pleasant task. So do not look for too many facts and do not search for references, for there will be none. You will probably find all these in a paper by Charles Lindsey. Rather we shall try to recall the flavour of the events of the 1960's as they appeared to unfold in the eyes of one of the bit players. It is probably true to say that I have lost contact with Computer Science over the last nine years, although I have not lost my interest in programming. My current love is HyperCard and HyperTalk on a Mac Ilci. I keep myself occupied by doing voluntary programming for my son's factory, my bicycle club and for a local educational office that is trying to encourage the learning of French in British Columbia's school, and all of this on a Macintosh computer in HyperCard. It would not be easy to accomplish these things in ALGOL 68. It may surprise younger participants here to know that when I went to school, a computer was a person who turned the handle of a mechanical calculator, that television did not exist, and radios were large boxes with pride of place in the living room. There were no transistors, no micro-wave ovens, no fax machines, no computers, no cellular 'phones, and nobody was worried about the environment. In my first job as an analytical chemist, all calculations were done with a slide rule. It is pleasant to have witnessed such vast changes stimulated by science and technology, and by Computer Science in particular. It seems that life has become easier and more enjoyable.

Personal I was trained as a mathematician. I used to worry about such things as Banach spaces and topological semi-groups, and when I began teaching, no university had a Computer Science department. At McGill University in 1955 a note was circulated in the depart- 66 J. Peck: Aad van Wijngaarden and the Mathematisch Centrum ment of mathematics that Canadair had a Datatron computer and mathematicians were invited to program it . I can well remember my colleagues saying, "why bother with that? It's just a simple application of Boolean algebra." However, I took up the invitation and from then was hooked. We shall skip the rest, except to say that I wrote a program for the Datatron, then learned to program the IBM 650. In 1959 I moved to Calgary, a booming oil town that had one computer, a Royal McBee, which I learned to program also. In the early '60s, the University of Calgary acquired an IBM 1620, and that then took my fancy. But perhaps it is time to turn to the subject at hand, which is my association with Aad van Wijngaarden, ALGOL 68 and the Mathematisch Centrum.

1966 I first met Aad van Wijngaarden in 1966. It happened this way. I was teaching mathematics at the University of Calgary, and in that year I was due for the first sabbatical leave of my career. I had become interested in computing and had been programming on the IBM 1620. We had attempted an implementation of ALGOL 60 on that machine, but we knew little about how to do it. For example, we did not know how to include recursion. Although we executed a few programs, our implementation was not much more than a curiosity. We knew that interesting things concerning ALGOL were happening in Europe, so I wrote to a few places. The reply from Aad van Wijngaarden was the most encouraging, so I arrived at the Mathematisch Centrum in September of 1966. It was there that I heard that the Algol Working Group was planning a new ALGOL and that Aad had a preliminary design which he would present at the next meeting in Warsaw. Aad suggested t hat someone was needed to write a users manual for the new lan­ guage, and he invited me to sit with him and Barry Mailloux, another Canadian, to learn something of t he new language. I found it very confusing. The language was defined by a new grammatical mechanism which I had difficulty in understanding. Moreover there was a rush to get a document ready for the Warsaw meeting. I attended the October Working Group meeting in Warsaw as an observer. This was a humiliating meeting for me, because most of the discussion was beyond my comprehension. However I began to absorb new meanings to words such as notion, protonotion, consistent substitution, overloading, extensions, orthogonal design and so on. Also I was able to associate faces with names that were already familiar, such as John McCarthy, Niklaus Wirth, Tony Hoare, Brian Randell, Edsger Dijkstra and others. Aad insisted and received his mandate to continue with the design of the language, known then as ALGOL X. At that meeting T learned of the mandate given to Aad at St. Pierre de Chartreuse and some disturbing news of the Kootwijk meeting where two proposals were supposed to be merged, but their champions could not agree. Even at that stage it was clear to me that not everyone believed that Aad's vision was the right one. Also his manner in debate was sometimes a little too keen. He would goad his adversary into admitting several aspects of a certain subject, and then Conference on the History of ALGOL 68 67 tactlessly humiliate him by showing that those views were inconsistent. In this way there was a clash of sharp minds which sometimes left personality wounds, although I was never a recipient of his rapier thrusts. Despite these clashes, Aad was always a delightful dinner companion, with many stories of interesting trivia to entertain us. One day he said "Did you know that Halloween equals Christmas?" . I had to plead ignorance, so he wrote on a piece of paper "OCT 31 = DEC 25". I felt rather embarrassed that I took me some time to realise that octal 31 is decimal 25. He also asked "How many pins are there in a new shirt" . I said "About six". "No", he said, "there is always one more'' . He was full of such little jokes and puzzles to keep one entertained Back at the Mathematisch Centrum I sat in on the design sessions and began to understand something of the defining mechanism. It was not long before I was suggesting changes and my confidence rose when these were accepted. We were working towards a new document, which became known as MR88, to be presented at the Zandfort meeting in May of 1967. At that time there was no thought of using the computer as a document editor. I bought a new portable typewriter with some useful symbols on it, and since I had plenty of time, I became the unofficial recorder of the design sessions, producing a few new pages each morning. These gradually transformed the Warsaw document into MR88. I still have the old pages at home in my personal . archives. It was clear that Aad had underestimated the time required for design, so all thought of a users manual was forgotten, since the design was changing almost daily.

1967 It was in Zandfort then that the document acquired three Authors: van Wijngaarden, Mailloux, and Peck. At the end of that meeting, I was voted a member of the Working Group which helped me to obtain travel expenses to subsequent meetings. That year in Amsterdam was a turning point. It shaped the remainder of my career in Computer Science. In the Fall of 1967 I returned to teaching duties in Calgary and kept in touch with the design activities by mail. How much easier it would have been had FAX transmission been common at that time. The document under preparation was MR93, which appeared in the ALGOL Bulletin in February of 1968.

1968 In May of that year an ALGOL anniversary meeting was held in Zurich and MR93 was attacked for its "obscurity, complexity, inadequacy and length", despite the fact that Lindsey in Manchester and Tseytin in Leningrad, neither of whom were involved in the design, had shown that they could understand it and could explain it to others. To me it was a matter of surprise and disappointment to discover the extent of the antagonism. Aad spent some time in Chicago, where he had access to an Iffv1 sel ctri c type-

meeting. meeting. I I arrived arrived in in Amsterdam Amsterdam a a few few days days before before that that meeting. meeting. I I well well remember remember t he he

Munich Munich meeting meeting of of the the Working Working Group Group in in December December of of 1968 , , the the take take it it or or leave leave i t t

The The rush rush was was then then on on to to produce produce the the next next version, version, MRlOO, MRlOO, to to be be presented presented at at the the

a a firm firm friend friend and and who who was was to to play play a a major major role role in in the the Revised Revised Report . .

Report Report than than most most of of the the members members of of the the Group. Group. It It was was Charles Charles Lindsey, Lindsey, who who became became

that that they they were were designing. designing. We We were were delighted delighted to to discover discover that that he he knew knew more more about about the the

in in from from the the cold , , so so to to speak , , and and who who explained explained to to the the Working Working Group Group the the language language

MR95 MR95 was was presented. presented. was was It It there there that that I I first first met met a a tall tall fast-talking fast-talking visitor visitor who who came came

In In the the Fall Fall a a Working Working Group Group meeting meeting was was held held in in North North Berwick, Berwick, Scotland Scotland where where

Esztergom Esztergom again. again.

Twenty-two Twenty-two years years later later I I was was on on a a bicycle bicycle tour tour in in Hungary Hungary and and we we passed passed through through

to to find find that that the the documents documents were were there, there, without without being being held held up up by by the the Iron Iron Curtain. Curtain.

same same the train train that that took took me me to to Esztergom. Esztergom. When When I I arrived arrived in in Budapest, Budapest, it it was was a a relief relief

that that I I made made a a hurried hurried trip trip to to Copenhagen Copenhagen to to retrieve retrieve them them and and then then assigned assigned them them to to

last last minute minute we we discovered discovered that that they they had had been been sent sent to to Copenhagen Copenhagen instead. instead. I I believ e e

of of the the MR95 MR95 document document were were to to be be sent sent to to Esztergom Esztergom for for the the students. students. However , , at at the the

clearly clearly in in a a strong strong position!" position!" Another Another incident incident related related to to that that meeting meeting was was that that copies copies

remarked, remarked, "Now "Now I I understand understand the the coercion coercion nomenclature, nomenclature, you you see, see, Czechoslovakia Czechoslovakia is is

years, years, he he said. said. However , , someone someone else else must must have have been been listening listening to to the the lectures, lectures, for for h e e

closed, closed, and and that that I I should should start start learning learning Hungarian , , which which would would only only take take me me twenty twenty

how how they they would would get get home. home. One One of of the the students students told told me me that that the the borders borders had had been been

concerned concerned with with the the news news on on their their radios , , than than with with my my lectures , , the the Poles Poles wonderin g g

moved moved into into Czechoslovakia, Czechoslovakia, which which was was just just across across the the river. river. My My listeners listeners were were mor e e

constructs constructs in in a a strong strong position position could could be be strongly strongly coerced. coerced. Just Just at at that that time time the the Russians Russians

so so things things moved moved slowly. slowly. I I remember remember trying trying to to explain explain the the coercion coercion mechanism mechanism and and that that

ex plaining plaining the the new new ALGOL. ALGOL. I I was was translated translated bo t h h into into Hungarian Hungarian and and into into Russian , ,

week . . was was It It a a conference conference of of Eastern Eastern computer computer scientists scientists at at which which I I gave gave several several lectur es es

preparation preparation of of what what became became MR95. MR95. That That I I summer was was in in Esztergom, Esztergom, Hungary , , for for a a

I I was was able able to to spend spend the the summer summer of of 1968 1968 at at the the Mathematisch Mathematisch Centrum Centrum to to help help in in the the

Group Group meeting?" meeting?"

combat. combat. Someone Someone whispered aside aside whispered to to me: me: "Doesn't "Doesn't that that remind remind you you of of a a Working Working

wall wall of of a a bloody bloody historical historical battle. battle. Men Men and and animals animals were were depicted depicted locked locked in in morta l l

welcomed welcomed by by the the city city of of Pisa Pisa at at the the City City Hall , , where where there there was was a a large large painting painting on on the the

level level grammar grammar description description method method with with a a syntactic syntactic device device of of his his own. own. Aiso Aiso we we wer e e

little little of of that that meeting meeting except except for for Fraser Fraser Duncan's Duncan's valiant valiant attempt attempt to to replace replace the the two­

The The next next Working Working Group Group meeting meeting was was in in Tirrenia, Tirrenia, Italy Italy in in June June of of 1968. 1968. I I remember remember

italic italic stop stop has has oblique oblique axes ", ", at at which which he he beamed beamed with with pleasure pleasure at at his his little little joke. joke.

were were both both small small circles. circles. "No", "No", he he said , , "the "the standard standard stop stop has has orthogonal orthogonal axes axes and and the the

is is standard standard or or italic?". italic?". So So I I replied replied that that there there was was obviously obviously no no difference, difference, since since they they

to to a a full full stop stop (or (or period) period) in in the the text text and and said said "How "How can can you you tell tell whether whether that that stop stop

with with using using standard standard and and italic italic to to get get different different effects. effects. When When I I met met him him next, next, he he pointed pointed

get get different different fonts. fonts. He He personally personally typed typed many many pages pages of of the the Report, Report, and and experimented experimented

writer, writer, the the one one with with the the type type faces faces on on a a "golf "golf ball". ball". You You could could change change the the golf golf ball ball to to

68 68 J. J. Peck: Peck: Aad Aad

van van Wijngaarden Wijngaarden and and the the Mathematisch Mathematisch Centrum Centrum

.' - '°: < -. - - - Conference on the History of ALGOL 68 69 rush there was to prepare that document. Changes were being made at the last minute. We spent one whole night reproducing perhaps 50 copies of its 120 or so pages, and were frustrated when the Xerox machine broke down. There was no time to send the copies by any other means than to carry them to Munich ourselves. I remember that all the documents were packed in a large suitcase, which came with us to the airport, and on which over-weight charges were collected by the airline. Books weigh like lead as luggage. As he settled down in his seat on the plane, Aad called for extra drinks all round to calm us down, after the hectic activity.

The Munich meeting was dramatic. At first there was some technical discussion on the report, followed by a grudging acceptance. Then there was discussion about a covering letter to go to TC2 indicating that not everyone agreed. However, at the last moment a minority report made its appearance. I well remember the breathless tension in the room. First Edsger Dijkstra and then Brian Randell strode up and down, behind their seats, explaining in measured tones that they believed that a new language was not the way to go. What was needed, they said, was a new approach to programming instead. I thought about all the work that Aad and his three helpers had done, how Aad had more or less staked his academic reputation on the acceptance of his design, and what a blow it would be to him if this minority report were to destroy the credibility of his creation. I thought about politicians who have worked hard for their country, only to be driven out of office by a fickl e electorate. How does one recover from a blow such as that? It cannot be easy. Most Algal Working Group meetings were "cliff hangers", i.e. , you never knew whether an important decision would go the way you wished it. Your reputation was on the line. You could either feel humiliated or exhilarated, but the final vote only came at the last moment.

In the end t he ALGOL 68 report was accepted for transmission to Technical Com­ mittee 2, together with a covering letter and the Minority Report. TC2, for reasons of its own, sent the Report and a modified covering letter to IFIP, but not the Minority Report.

So these were the birth pangs of the new language. Its first publication was as MR101, and other publications soon followed. These were known as the "Report on the Algorithmic Language ALGOL 68" and must be distinguished from the "Revised Report ... " which came later.

Can one now look back on these years and suggest that it might have been oth­ erwise? I feel that perhaps a fundamental mistake made by WG 2.1 was to believe that a new programming language could be designed and readily accepted without insisting that at least one implementation should exist. Of course, if they had insisted on an implementation, then the design process would have taken much longer, perhaps twice as long, so it was a gamble that almost paid off. However, with a concurrent implementation, the design might well have been better, as we soon discovered when the first implementation appeared.

$8000 $8000 provided provided allowed allowed us us to to bring bring the the editors editors toget her, her, first first in in Vancouver Vancouver and and then then

behind behind the the Iron Iron Curtain. Curtain. Anyway, Anyway, o ur ur application application was was successful successful and and the the modest modest

the the Working Working Group Group was was truly truly international international and and had had members members from from several several countries countries

for for a a grant grant to to help help us us with with the the task task of of revision. revision. I I was was careful careful not not to to tell tell NATO NATO that that

a a Revised Revised Report Report on on ALGOL ALGOL 68. 68. Soon Soon after after this this I I made made an an application application to to NATO NATO

1971 1971 saw saw the the Working Working Group Group at at No vosibirsk , , where where a a decision decision was was taken taken to to produce produce

A A Revised Revised Report Report

for for me me that that he he had had opened opened the the book book at at page page 231, 231, where where the the devil devil had had been been at at work. work.

spot spot a a printing printing error, error, as as a a hawk hawk does does a a mouse , , faster faster than than anyone, anyone, and and it it was was unlucky unlucky

one one of of the the instigators instigators of of the the Minority Minority Report. Report. Aad Aad was was a a superb superb proof proof reader, reader, he he could could

But But we we all all knew knew that that Brian Brian Randell Randell was was an an outspoken outspoken opponent opponent of of ALGOL ALGOL 68 68 and and

the the printer ' s s devil devil had had been been at at work work and and it it appeared appeared as as ALGOL ALGOL 68 68 Impl e mentation. mentation.

was was reference reference to to Randell Randell and and Russell ' s s book book on on ALGOL ALGOL 60 60 Implementation , , except except that that

be be laughing laughing about? about? Then Then he he showed showed it it to to me. me. In In a a paper paper by by Branquart Branquart and and Lewi , , there there

terribly terribly embarrassed embarrassed and and wanted wanted to to sink sink through through the the floor. floor. What What was was it it that that he he could could

appreciation appreciation at at the the work work I I had had don e . . Suddenly Suddenly he he was was convulsed convulsed with with lau g ht e r. r. I I felt felt

North-Holland North-Holland when when I I was was with with Aad. Aad. He He opened opened it it proudly proudly at at random random smilin g g in in

I I was was asked asked to to edit edit the the proceedings proceedings of of tha t t conference. conference. The The book book arrived arrived from from

perhaps perhaps the the design design should should be be amended amended to to make make implementations implementations easier. easier.

being being the the omission omission of of the the proceduring proceduring coercion , , but but it it was was significant. significant. It It taught taught us us that that

what what he he called called ALGOL ALGOL 68 - R. R. was was not not It It a a faithful faithful implementation , , a a major major discrepan cy cy

tell tell us us of of an an implementation implementation at at the the Royal Royal Radar Radar Establishmen t t in in Malvern, Malvern, England of of

new new language , , but but it it was was no t t to to be. be. To To the the surprise surprise of of most, most, Ian Ian Currie Currie appeared appeared to to

had had confidently confidently e xpe cte d d that that the the Munich Munich group group would would be be the the first first implementers implementers of of th e e

In In 1970 1970 a a formal formal ALGOL ALGOL 68 68 implementation implementation c onference onference was was held held in in Munich. Munich. W e e

resigned, resigned, to to form form a a new new working working group group on on Programming Programming Me tho dology. dology.

somewhat somewhat low low key , , since since most most of of those those who who had had disagreed disagreed with with the the Report Report had had already already

what what WG WG 2.1 2.1 should should do do next. next. Compared Compared to to the the previous previous meeting meeting in in Munich, Munich, it it was was

errata errata for for the the Report , , discussed discussed some some problems problems of of implementation , , and and talked talked abou t t

yet yet except except to to think think about about the the problem. problem. The The Banff Banff meeting meeting looked looked a t t some some necessar y y

The The informal informal implementation implementation conference conference revealed revealed that that not not much much had had b ee n n don e e

should should meet meet there there at at least least once, once, and and Banff Banff was was an an obvious obvious choice. choice.

group, group, Barry Barry Mailloux Mailloux and and myself , , in in Western Western Canada , , it it was was natural natural that that WG WG 2.1 2.1

before. before. We We next next saw saw Aad Aad in in Banff. Banff. Since Since there there were were two two members members of of t he he editorial editorial

tu nity nity to to arrange arrange a a quick quick informal informal implementation implementation conference conference in in Vancouver Vancouver the the week week

The The Working Working Group Group was was to to meet meet in in Banff , , Alberta Alberta in in the the Fall , , so so we we took took the the oppor­

head head the the new new Department Department of of Computer Computer Science Science at at the the University University of of British British Columbia . .

its its translation translation to to other other languages , , including including Russian , , and and the the year year that that I I was was invited invited to to

1969 1969 was was the the year year of of publication publication of of the the ALGOL ALGOL 68 68 Report Report as as MR MR 101 101 and and elsewhere, elsewhere,

Implementations Implementations

J. J. Peck: Peck: Aad Aad van van Wijngaarden Wijngaarden and and the the Mathematisch Mathematisch 70 70 Centrum Centrum Conference on the History of ALGOL 68 71 in Edmonton, for extended design sessions. But t his was when Aad began to bow out of the working sessions. He remained only a fatherly fi gure remotely in Amsterdam. The real brain-storming was done by Charles Lindsey, and Lambert Meertens. More sophisticated tools were used to produce the Revised Report. First we had the remarkable advances made by Sintzoff, who gave us the NEST syntax, a device which enabled us to include the identification of identifiers i n the syntax. Second we committed the Report and its syntax to computer fil es which enabled us to edit the copy and produce new versions with ease. This also meant that the Revised Report was eventually printed directly from computer fil es. I no longer had the role of typing new pages on my typewriter. But perhaps this is where my story should end. As I have indicated above, much of the work of revision was done in Western Canada and Aad and t he Mathematisch Centrum were far away. It is sufficient to remind you that t he Revised R eport was eventually accepted by the Working Group at a meeting in Los Angeles at the end of 1973.

China In 1987 I was on a bicycle tour in China and found myself in Beijing. I contacted Lu Ruqian at the Academy of Scientists and went to visit him there. T his was before the Tienanamen Square massacre. Lu Ruqian is the translator of the ALGOL 68 Report into Chinese. Apart from discussing translation problems, I asked him what he did during the cultural revolution. He said that he was sent to the country to herd buffalo. It remarked that it must have been good for his health. "Yes", he said, "but not much good for my mind."

Conclusion I have already mentioned that ALGOL 68 dominated my career in Computer Science. I greatly respected Aad van Wijngaarden, the brilliance of his mind and the kindness of his disposition. I also look back with pleasure at the many days spent at the Mathematisch Centrum. The design of ALGOL 68 was an intellectual challenge that I enjoyed immensely.

. ----:...·

73

The History of ALGOL 68

conference on 25 years of ALGOL 68 Held on the occasion of the 4 7th anniversary of CWI Amsterdam, February llth, 1993

Program Registration and coffee from 09:00 09:30 Welcome by Cor Baayen, scientific director CWI 09:50 F.L. Bauer (Technische Universitat Miinchen) History of Programming languages, a Survey 10:30 C.H. Lindsey (Dept. Comp. Sc.; Manchester) The History of ALGOL 68; Part I: general Coffee at 11:10 10:30 C.H. Lindsey (Dept. Comp. Sc.; Manchester) The History of ALGOL 68; Part II: details 12:10 C. H.A. Koster (KU Nijmegen) The Making of Algal 68 Lunch at 12:40 14:00 S. G. van der Meulen (RU Utrecht) An orthogonal first programming language 14:20 A. Rar, M. Bulyonkov (Novosibirsk), A. Terekhov (St . Petersburg) ALGOL 68 - 25 Years in the USSR 14:50 Maurice V. Wilkes (Cambridge UK) The Impact of ALGOL 68 at Cambridge 15:00 Panel Discussion on the impact of ALGOL 68 Teatime is 15:30 15:50 L.G.L. T. Meertens (CWI) The Design of Elegant Languages 16:30 J.E.L. Peck (U niv. of British Columbia) Aad van Wijngaarden and the Mathematisch Centrum, A personal recollection Reception at 17: 10

- - - - O~-o; -· ..____

. . . ---- - .,, , , , _, ,- - - -