Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
ALGOL 68
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==History== ===Origins=== ALGOL 68, as the name implies, is a follow-on to the [[ALGOL]] language that was first formalized in 1960. That same year the [[International Federation for Information Processing]] (IFIP) formed and started the Working Group on ALGOL, or WG2.1. This group released an updated ALGOL 60 specification in Rome in April 1962. At a follow-up meeting in March 1964, it was agreed that the group should begin work on two follow-on standards, ALGOL X, which would be a redefinition of the language with some additions, and [[ALGOL Y]], which would have the ability to modify its own programs in the style of the language [[Lisp (programming language)|LISP]].{{sfn|Lindsey|1993|p=7}} ===Definition process=== The first meeting of the ALGOL X group was held in [[Princeton University]] in May 1965. A report of the meeting noted two broadly supported themes, the introduction of [[strong typing]] and interest in [[Euler programming language|Euler's]] concepts of 'trees' or 'lists' for handling collections.{{sfn|Lindsey|1993|p=9}} Although intended as a "short-term solution to existing difficulties",{{sfn|Lindsey|1993|p=4}} ALGOL X got as far as having a compiler made for it. This compiler was written by [[Douglas T. Ross]] of the [[Massachusetts Institute of Technology]] (MIT) with the ''Automated Engineering Design'' (AED-0) system, also termed ''ALGOL Extended for Design''.<ref>{{Cite web |last=Ross |first=Douglas T. |date=October 1966 |url=http://www.dtic.mil/cgi-bin/GetTRDoc?AD=AD0296998 |archive-url=https://web.archive.org/web/20130626171225/http://www.dtic.mil/cgi-bin/GetTRDoc?AD=AD0296998 |url-status=dead |archive-date=26 June 2013 |title=An Algorithmic Theory of Language (AB26.2.2) |page=6 |website=Defense Technical Information Center |publisher=Massachusetts Institute of Technology |access-date=2020-08-12}}</ref><ref>{{Cite journal |last=Ross |first=D. T. |date=August 1967 |url=https://dl.acm.org/doi/abs/10.1145/1139498.1139500 |title=AB26.2.2 Features Essential for a Workable ALGOL X |journal=ACM SIGPLAN Notices: ALGOL Bulletin |volume=26 |issue=2 |publisher=Association for Computing Machinery: Digital Library |doi=10.1145/1139498.1139500 |s2cid=38156680 |access-date=2020-08-12|url-access=subscription }}</ref> At the second meeting in October in France, three formal proposals were presented, [[Niklaus Wirth]]'s [[ALGOL W]] along with comments about record structures by [[C.A.R. Hoare|C.A.R. (Tony) Hoare]], a similar language by Gerhard Seegmüller, and a paper by [[Adriaan van Wijngaarden]] on "Orthogonal design and description of a formal language". The latter, written in almost indecipherable "W-Grammar", proved to be a decisive shift in the evolution of the language. The meeting closed with an agreement that van Wijngaarden would re-write the Wirth/Hoare submission using his W-Grammar.{{sfn|Lindsey|1993|p=9}} This seemingly simple task ultimately proved more difficult than expected, and the follow-up meeting had to be delayed six months. When it met in April 1966 in [[Kootwijk]], van Wijngaarden's draft remained incomplete and Wirth and Hoare presented a version using more traditional descriptions. It was generally agreed that their paper was "the right language in the wrong formalism".{{sfn|Lindsey|1993|p=24}} As these approaches were explored, it became clear there was a difference in the way parameters were described that would have real-world effects, and while Wirth and Hoare protested that further delays might become endless, the committee decided to wait for van Wijngaarden's version. Wirth then implemented their current definition as ALGOL W.{{sfn|Lindsey|1993|p=10}} At the next meeting in [[Warsaw]] in October 1966,<ref>{{Cite web|url=http://archive.computerhistory.org/resources/text/algol/algol_bulletin/|title = The Algol Bulletin}}</ref> there was an initial report from the I/O Subcommittee who had met at the [[Oak Ridge National Laboratory]] and the [[University of Illinois]] but had not yet made much progress. The two proposals from the previous meeting were again explored, and this time a new debate emerged about the use of [[pointer (computer science)|pointers]]; ALGOL W used them only to refer to records, while van Wijngaarden's version could point to any object. To add confusion, [[John McCarthy (computer scientist)|John McCarthy]] presented a new proposal for [[operator overloading]] and the ability to string together ''and'' and ''or'' constructs, and [[Klaus Samelson]] wanted to allow [[anonymous function]]s. In the resulting confusion, there was some discussion of abandoning the entire effort.{{sfn|Lindsey|1993|p=10}} The confusion continued through what was supposed to be the ALGOL Y meeting in [[Zandvoort]] in May 1967.{{sfn|Lindsey|1993|p=9}} ===Publication=== A draft report was finally published in February 1968. This was met by "shock, horror and dissent",{{sfn|Lindsey|1993|p=9}} mostly due to the hundreds of pages of unreadable grammar and odd terminology. [[Charles H. Lindsey]] attempted to figure out what "language was hidden inside of it",{{sfn|Lindsey|1993|p=12}} a process that took six man-weeks of effort. The resulting paper, "ALGOL 68 with fewer tears",<ref>{{cite journal |title=ALGOL 68 with fewer tears |journal=The Computer Journal |date=1972 |volume=15 |issue=1 |pages=176–188 |doi=10.1093/comjnl/15.2.176 |url=https://academic.oup.com/comjnl/article-pdf/15/2/176/1002964/15-2-176.pdf |last1=Lindsey |first1=C. H. }}</ref> was widely circulated. At a wider information processing meeting in [[Zürich]] in May 1968, attendees complained that the language was being forced upon them and that IFIP was "the true villain of this unreasonable situation" as the meetings were mostly closed and there was no formal feedback mechanism. Wirth and [[Peter Naur]] formally resigned their authorship positions in WG2.1 at that time.{{sfn|Lindsey|1993|p=12}} The next WG2.1 meeting took place in [[Tirrenia]] in June 1968. It was supposed to discuss the release of compilers and other issues, but instead devolved into a discussion on the language. van Wijngaarden responded by saying (or threatening) that he would release only one more version of the report. By this point Naur, Hoare, and Wirth had left the effort, and several more were threatening to do so.{{sfn|Lindsey|1993|p=13}} Several more meetings followed, [[North Berwick]] in August 1968, Munich in December which produced the release of the official Report in January 1969 but also resulted in a contentious Minority Report being written. Finally, at [[Banff, Alberta]] in September 1969, the project was generally considered complete and the discussion was primarily on errata and a greatly expanded Introduction to the Report.{{sfn|Lindsey|1993|p=15}} The effort took five years, burned out many of the greatest names in [[computer science]], and on several occasions became deadlocked over issues both in the definition and the group as a whole. Hoare released a "Critique of ALGOL 68" almost immediately,<ref name="Hoare1968">{{cite journal |last=Hoare |first=C. A. R. |author-link=Tony Hoare |date=November 1968 |title=Critique of MR93 (Critique of ALGOL 68) |url=https://dl.acm.org/doi/10.5555/1061166.1061173 |journal=[[ALGOL Bulletin]] |volume=29 |pages=27–29}}</ref> which has been widely referenced in many works. Wirth went on to further develop the ALGOL W concept and released this as Pascal in 1970. ===Implementations=== ====ALGOL 68-R==== The first implementation of the standard, based on the late-1968 draft Report, was introduced by the [[Royal Radar Establishment]] in the UK as [[ALGOL 68-R]] in July 1970. This was, however, a subset of the full language, and [[Barry Mailloux]], the final editor of the Report, joked that "It is a question of morality. We have a Bible and you are sinning!"<ref name="implement">{{citation |editor-first=J. E. L. |editor-last=Peck |date=1970 |title=Proceedings of the IFIP working conference on ALGOL 68 Implementation |publisher=North-Holland |place=Munich |isbn=0-7204-2045-8}}</ref> This version nevertheless became very popular on the [[International Computers Limited|ICL]] machines, and became a widely-used language in military coding, especially in the UK.<ref name=shorter>{{cite web |first=C. H. A. |last=Koster |title=A Shorter History of Algol 68 |archive-url=https://web.archive.org/web/20071217203826/http://npt.cc.rsu.ru/user/wanderer/ODP/ALGOL68.txt |url=http://npt.cc.rsu.ru/user/wanderer/ODP/ALGOL68.txt |archive-date=2007-12-17}}</ref> Among the changes in 68-R was the requirement for all variables to be declared before their first use. This had a significant advantage that it allowed the compiler to be one-pass, as space for the variables in the [[activation record]] was set aside before it was used. However, this change also had the side-effect of demanding the '''PROC'''s be declared twice, once as a declaration of the types, and then again as the body of code. Another change was to eliminate the assumed '''VOID''' mode, an expression that returns no value (named a ''statement'' in other languages) and demanding the word '''VOID''' be added where it would have been assumed. Further, 68-R eliminated the explicit [[Parallel computing|parallel processing]] commands based on '''PAR'''.<ref name=implement/> ====Others==== The first full implementation of the language was introduced in 1974 by CDC Netherlands for the [[Control Data]] mainframe series. This saw limited use, mostly teaching in Germany and the Netherlands.<ref name="shorter"/> A version similar to 68-R was introduced from [[Carnegie Mellon University]] in 1976 as 68S, and was again a one-pass compiler based on various simplifications of the original and intended for use on smaller machines like the [[DEC PDP-11]]. It too was used mostly for teaching purposes.<ref name="shorter"/> A version for [[IBM]] mainframes did not become available until 1978, when one was released from [[Cambridge University]]. This was "nearly complete". Lindsey released a version for small machines including the [[IBM PC]] in 1984.<ref name="shorter"/> Three open source Algol 68 implementations are known:<ref>{{cite web |last1=van der Veer |first1=Marcel |title=Open source Algol 68 implementations |url=http://algol68.sourceforge.net/ |website=algol68.sourceforge.net}}</ref> * '''a68g''', [[GPLv3]], written by Marcel van der Veer. * '''algol68toc''', an [[open-source software]] port of [[ALGOL 68RS]]. * experimental Algol68 frontend for [[GNU Compiler Collection|GCC]], written by Jose E. Marchesi.<ref name=":0">{{cite web |last1=E. Marchesi |first1=Jose |title= Algol 68 Front-End |url=https://gcc.gnu.org/wiki/Algol68FrontEnd |website=gcc.gnu.org}}</ref><ref name=":1">{{cite web |last1=E. Marchesi |first1=Jose |title= An Algol 68 front end for GCC |url=https://lwn.net/Articles/1003916/ |website=lwn.net}}</ref> ===Timeline=== {|class="wikitable" |- ! scope="col" | Year || scope="col" |Event || scope="col" |Contributor |- | style="text-align:right;" | March 1959 || [[ALGOL Bulletin]] Issue 1 (First) || [[Peter Naur]] / [[Association for Computing Machinery|ACM]] |- | style="text-align:right;" | February 1968 || Draft Report<sup>(DR)</sup> Published<ref>{{Cite journal|url=https://dl.acm.org/doi/10.5555/1064072.1064073|title=Draft Report on the Algorithmic Language ALGOL 68|first1=A.|last1=Van Wijngaarden|first2=B. J.|last2=Mailloux|first3=J.|last3=Peck|first4=C. H. A.|last4=Koster|date=1 March 1968|journal=ALGOL Bulletin|issue=Sup 26|pages=1–84|accessdate=7 April 2023|via=Mar. 1968}}</ref> || [[IFIP]] [[IFIP Working Group 2.1|Working Group 2.1]] |- | style="text-align:right;" | March 1968 || Algol 68 Final Report<sup>[[#The language of the unrevised report|r0]]</sup> Presented at Munich Meeting || IFIP Working Group 2.1 |- | style="text-align:right;" | June 1968 || Meeting in Tirrenia, Italy || IFIP Working Group 2.1 |- | style="text-align:right;" | Aug 1968 || Meeting in North Berwick, Scotland || IFIP Working Group 2.1 |- | style="text-align:right;" | December 1968 || ALGOL 68 Final Report<sup>[[#The language of the unrevised report|r0]]</sup> Presented at Munich Meeting || IFIP Working Group 2.1 |- | style="text-align:right;" | April 1970 || [[ALGOL 68-R]] under [[GEORGE (operating system)|GEORGE 3]] on an [[International Computers Limited|ICL]] [[ICT 1900 series|1907F]] || [[RSRE|Royal Signals and Radar Est.]] |- | style="text-align:right;" | July 1970 || ALGOL 68 for the [[Dartmouth Time-Sharing System]]<ref>Sidney Marshall, "ALGOL 68 Implementation", ''Proceedings of the IFIP Working Conference on ALGOL 68 Implementation'', Munich, July 20–24, 1970, J. E. L. Peck, editor, North Holland, pages 239–243.</ref><ref>Sidney Marshall, ''On the implementation of ALGOL 68'', PhD Thesis, Dartmouth College, 1972.</ref> || Sidney Marshall |- | style="text-align:right;" | September 1973 || Algol 68 Revised Report<ref>[https://web.archive.org/web/20130101062456/http://jmvdveer.home.xs4all.nl/report.html Algol 68 Revised Report]</ref><sup>[[#Revisions|r1]]</sup> Published || IFIP Working Group 2.1 |- | style="text-align:right;" | 1975 || [[ALGOL 68C]]<sup>(C)</sup> – transportable compiler (zcode [[virtual machine|VM]]) || [[Stephen R. Bourne|S. Bourne]], [[Andrew Birrell]], and [[Michael Guy (computer scientist)|Michael Guy]] |- | style="text-align:right;" | June 1975 || G. E. Hedrick and Alan Robertson. The Oklahoma State ALGOL 68 Subset Compiler. 1975 International Conference on ALGOL 68. |- | style="text-align:right;" | June 1977 || Strathclyde ALGOL 68 conference, Scotland || ACM |- | style="text-align:right;" | May 1978 || Proposals for ALGOL H – A Superlanguage of ALGOL 68<ref>{{Cite journal|url=https://dl.acm.org/doi/10.5555/1061701.1061711|title=Proposals for ALGOL H - A Superlanguage of ALGOL 68|first1=A. P.|last1=Black|first2=V. J.|last2=Rayward-Smith|date=1 May 1978|journal=ALGOL Bulletin|issue=42|pages=36–49|accessdate=7 April 2023|via=May. 1978}}</ref> || A. P. Black, V. J. Rayward-Smith |- | style="text-align:right;" | 1984 || Full [[ALGOL 68S]]<sup>(S)</sup> compiler for Sun, SPARC, and PCs || C. H. Lindsey et al, Manchester |- | style="text-align:right;" | August 1988 || [[ALGOL Bulletin]] Issue 52 (last) || Ed. C. H. Lindsey / ACM |- | style="text-align:right;" | May 1997 || Algol68 S<sup>(S)</sup> published on the internet<ref>{{Cite web |url=http://www.cs.man.ac.uk/~chl/index.html#ALGOL%2068 |title=Algol68 S<sup>(S)</sup> published on the internet |access-date=2004-08-30 |archive-date=2005-12-03 |archive-url=https://web.archive.org/web/20051203193706/http://www.cs.man.ac.uk/~chl/index.html#ALGOL%2068 |url-status=dead }}</ref> || [[Charles H. Lindsey]] |- | style="text-align:right;" | November 2001 || Algol 68 Genie<sup>(G)</sup> published on the internet<ref>{{Cite web|url=https://jmvdveer.home.xs4all.nl/en.algol-68-genie.html|title=The Algol 68 Genie project|first=Marcel van der|last=Veer|website=jmvdveer.home.xs4all.nl|accessdate=7 April 2023}}</ref> (GNU GPL open source licensing) || [https://jmvdveer.home.xs4all.nl Marcel van der Veer] |- |January 2025 |Algol 68 GCC Front-End published by Jose E. Marchesi under the GPL<ref name=":1" /><ref name=":0" /> |[https://jemarch.net Jose E. Marchesi] |} * [https://web.archive.org/web/20071217203826/http://npt.cc.rsu.ru/user/wanderer/ODP/ALGOL68.txt "A Shorter History of Algol 68"] <!-- retrieved 2011-06-14 --> * [https://web.archive.org/web/20110514113912/http://hopl.murdoch.edu.au/showlanguage.prx?exp=311 ALGOL 68 – 3rd generation ALGOL] <!-- retrieved 2011-06-14 --> ===The Algorithmic Language ALGOL 68 Reports and Working Group members=== * March 1968: Draft Report on the Algorithmic Language ALGOL 68<ref name="a68r-1">{{cite web |title=Draft Report on the Algorithmic Language ALGOL 68 |url=http://archive.computerhistory.org/resources/text/algol/algol_bulletin/AS26/ |access-date=June 22, 2007 |date=March 1968 |url-status=live |archive-url=https://web.archive.org/web/20070930181523/http://archive.computerhistory.org/resources/text/algol/algol_bulletin/AS26/ |archive-date=2007-09-30}}</ref> – Edited by: [[Adriaan van Wijngaarden]], [[Barry J. Mailloux]], [[John E. L. Peck|John Peck]] and [[Cornelis H. A. Koster]]. {{rquote|right|"Van Wijngaarden once characterized the four authors, somewhat tongue-in-cheek, as: Koster: [[#transput: Input and output|transputter]], Peck: syntaxer, Mailloux: implementer, Van Wijngaarden: party ideologist." – Koster.}} * October 1968: Penultimate Draft Report on the Algorithmic Language ALGOL 68 — Chapters 1-9<ref name="a68r-1-9">{{cite web |title=Penultimate Draft Report on the Algorithmic Language ALGOL 68 – Chapters 1-9 |url=http://repos.project.cwi.nl:8888/cwi_repository/docs/I/09/9180A.pdf |access-date=June 22, 2007 |date=October 1968}}{{dead link|date=November 2016 |bot=InternetArchiveBot |fix-attempted=yes}}</ref> Chapters 10-12<ref name="a68r-10-12">{{cite web|title=Penultimate Draft Report on the Algorithmic Language ALGOL 68 – Chapters 10-12 |url=http://repos.project.cwi.nl:8888/cwi_repository/docs/I/09/9179A.pdf |access-date=2007-06-22 |date=October 1968}}{{dead link|date=November 2016 |bot=InternetArchiveBot |fix-attempted=yes}}</ref> — Edited by: A. van Wijngaarden, B.J. Mailloux, J. E. L. Peck and C. H. A. Koster. * December 1968: Report on the Algorithmic Language ALGOL 68 — Offprint from Numerische Mathematik, 14, 79-218 (1969); Springer-Verlag.<ref name="a68r0-kleine">{{cite web |title=Report on the Algorithmic Language ALGOL 68 |url=http://www.fh-jena.de/~kleine/history/languages/Algol68-Report.pdf |access-date=December 30, 2007 |date=December 1968 |archive-date=2008-04-06 |archive-url=https://web.archive.org/web/20080406061108/http://www.fh-jena.de/~kleine/history/languages/Algol68-Report.pdf |url-status=dead }}</ref> — Edited by: A. van Wijngaarden, B. J. Mailloux, J. E. L. Peck and C. H. A. Koster. * March 1970: Minority report, ALGOL Bulletin AB31.1.1 — signed by [[Edsger Dijkstra]], [[Fraser Duncan]], [[Jan Garwick]], [[Tony Hoare]], [[Brian Randell]], [[Gerhard Seegmüller]], [[Władysław M. Turski|Wlad Turski]], and [[Mike Woodger]]. * September 1973: Revised Report on the Algorithmic Language Algol 68 — Springer-Verlag 1976<ref name="a68r1-html">{{cite web |title=Revised Report on the Algorithmic Language Algol 68 |url=http://burks.brighton.ac.uk/burks/language/other/a68rr/rrtoc.htm |access-date=2007-04-30 |date=September 1973 |url-status=live |archive-url=https://web.archive.org/web/20070927191700/http://burks.brighton.ac.uk/burks/language/other/a68rr/rrtoc.htm |archive-date=2007-09-27}}</ref> — Edited by: A. van Wijngaarden, B. Mailloux, J. Peck, K. Koster, [[Michel Sintzoff]], [[Charles H. Lindsey]], [[Lambert Meertens]] and [[Richard G. Fisker]]. * other WG 2.1 members active in ALGOL 68 design:<ref name="ahoa68"/> [[Friedrich L. Bauer]] • [[Hans Bekic]] • [[:de:Gerhard Goos|Gerhard Goos]] • [[Peter Zilahy Ingerman]] • [[Peter Landin]] • [[John McCarthy (computer scientist)|John McCarthy]] • [[Jack N. Merner|Jack Merner]] • [[Peter Naur]] • [[Manfred Paul]] • [[Willem van der Poel]] • [[Douglas T. Ross|Doug Ross]] • [[Klaus Samelson]] • [[Niklaus Wirth]] • [[Nobuo Yoneda]]. ===Timeline of standardization=== 1968: On 20 December 1968, the "Final Report" (MR 101) was adopted by the Working Group, then subsequently approved by the General Assembly of [[UNESCO]]'s [[IFIP]] for publication. Translations of the standard were made for [[Russian language|Russian]], [[German language|German]], [[French language|French]] and [[Bulgarian language|Bulgarian]], and then later [[Japanese language|Japanese]] and [[Chinese language|Chinese]].<ref name="abp33">{{cite web |url=http://archive.computerhistory.org/resources/text/algol/ACM_Algol_bulletin/1061739/p33-ru_ian.pdf |title=The Translation of Algol 68 into Chinese |author=Lu Hu-quan |date=1971 |publisher=Institute of Mathematics, Academia Sinica |place=Peking, China |access-date=2012-08-17}}</ref> The standard was also made available in [[Braille]]. 1984: [[ISO/IEC JTC 1#History|TC 97]] considered ALGOL 68 for standardisation as "New Work Item" TC97/N1642 [http://www.open-std.org/JTC1/sc22/docs/docs0200.html][http://std.dkuug.dk/JTC1/sc22/sc22arc1.txt]. West Germany, Belgium, Netherlands, USSR and Czechoslovakia willing to participate in preparing the standard but the USSR and Czechoslovakia "were not the right kinds of member of the right ISO committees"[http://archive.computerhistory.org/resources/text/algol/algol_bulletin/A50/P1.HTM] and Algol 68's ISO standardisation stalled.[http://www.open-std.org/jtc1/sc22/open/n0200.pdf] 1988: Subsequently ALGOL 68 became one of the [[GOST]] standards in Russia. * GOST 27974-88 Programming language ALGOL 68 — Язык программирования АЛГОЛ 68<ref name="a68ru">{{cite web |url=http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27974-88.pdf |title=GOST 27974-88 Programming language ALGOL 68 – Язык программирования АЛГОЛ 68 |language=ru |date=1988 |publisher=[[GOST]] |access-date=2008-11-15 |archive-url=https://web.archive.org/web/20081115035038/http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27974-88.pdf |archive-date=15 November 2008 |url-status=dead}}</ref> * GOST 27975-88 Programming language ALGOL 68 extended — Язык программирования АЛГОЛ 68 расширенный<ref name="a68ruext">{{cite web |url=http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27975-88.pdf |title=GOST 27975-88 Programming language ALGOL 68 extended – Язык программирования АЛГОЛ 68 расширенный |language=ru |date=1988 |publisher=[[GOST]] |access-date=2008-11-15 |url-status=dead |archive-url=https://web.archive.org/web/20110429001243/http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27975-88.pdf |archive-date=29 April 2011}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)