ALGOL 60
Encyclopedia
ALGOL 60 is a member of the ALGOL
family of computer programming languages. It gave rise to many other programming languages, including BCPL
, B, Pascal
, Simula
, C
, and many others. ALGOL 58
introduced code blocks and the
definitions with lexical scope.
Niklaus Wirth
based his own ALGOL W
on ALGOL 60 before moving to develop Pascal
. Algol-W was intended to be the next generation ALGOL but the ALGOL 68
committee decided on a design that was more complex and advanced rather than a cleaned simplified ALGOL 60. The official ALGOL versions are named after the year they were first published.
ALGOL 68
is substantially different from Algol 60 but was not well received so that in general "Algol" means dialects of Algol 60. The name ALGOL
of the family is sometimes given in mixed case (Algol 60), and sometimes in all uppercase (ALGOL 68).
- were the first languages to seek standardization.
John Backus
developed the Backus normal form
method of describing programming languages specifically for ALGOL 58. It was revised and expanded by Peter Naur
for ALGOL 60, and at Donald Knuth
's suggestion renamed Backus–Naur Form
.
Peter Naur: "As editor of the ALGOL Bulletin I was drawn into the international discussions of the language and was selected to be member of the European language design group in November 1959. In this capacity I was the editor of the ALGOL 60 report, produced as the result of the ALGOL 60 meeting in Paris in January 1960."
The following people attended the meeting in Paris (from January 11 to 16):
Alan Perlis gave a vivid description of the meeting: "The meetings were exhausting, interminable, and exhilarating. One became aggravated when one's good ideas were discarded along with the bad ones of others. Nevertheless, diligence persisted during the entire period. The chemistry of the 13 was excellent."
Both John Backus and Peter Naur served on the committee which created ALGOL 60 as did Wally Feurzeig
, who later created Logo
.
ALGOL 60 inspired many languages that followed it. C. A. R. Hoare
remarked: "Here is a language so far ahead of its time that it was not only an improvement on its predecessors but also on nearly all its successors." The Scheme programming language, a variant of Lisp that adopted the block structure and lexical scope of ALGOL, also adopted the wording "Revised Report on the Algorithmic Language Scheme" for its standards documents in homage to ALGOL.
The Burroughs dialects included special Bootstrapping dialects such as ESPOL
and NEWP
.
ALGOL 60 allowed for two evaluation strategies
for parameter
passing: the common call-by-value, and call-by-name. Call-by-name had certain limitations in contrast to call-by-reference, making it an undesirable feature in imperative language design. For example, it is impossible in ALGOL 60 to develop a procedure that will swap the values of two parameters if the actual parameters that are passed in are an integer variable and an array that is indexed by that same integer variable.
However, call-by-name is still beloved of ALGOL implementors for the interesting "thunk
s" that are used to implement it. Donald Knuth
devised the "man or boy test
" to separate compilers that correctly implemented "recursion and non-local references." This test contains an example of call-by-name.
There are 71 such restricted identifiers in the standard Burroughs large systems sub-language:
and also the names of all the intrinsic functions.
value n, m; array a; integer n, m, i, k; real y;
comment The absolute greatest element of the matrix a, of size n by m
is transferred to y, and the subscripts of this element to i and k;
begin integer p, q;
y := 0; i := k := 1;
for p:=1 step 1 until n do
for q:=1 step 1 until m do
if abs(a[p, q]) > y then
begin y := abs(a[p, q]);
i := p; k := q
end
end Absmax
Implementations differ in how the text in bold must be written. The word 'INTEGER', including the quotation marks, must be used in some implementations in place of integer, above, thereby designating it as a special keyword.
Following is an example of how to produce a table using Elliott 803 ALGOL:
FLOATING POINT ALGOL TEST'
BEGIN REAL A,B,C,D'
READ D'
FOR A:= 0.0 STEP D UNTIL 6.3 DO
BEGIN
PRINT PUNCH(3),££L??'
B := SIN(A)'
C := COS(A)'
PRINT PUNCH(3),SAMELINE,ALIGNED(1,6),A,B,C'
END'
END'
PUNCH(3) sends output to the teleprinter rather than the tape punch.
SAMELINE suppresses the carriage return + line feed normally printed between arguments.
ALIGNED(1,6) controls the format of the output with 1 digit before and 6 after the decimal point
in ALGOL. The following program could (and still will) compile and run on an ALGOL implementation for a Unisys A-Series mainframe, and is a straightforward simplification of code taken from The Language Guide at the University of Michigan
-Dearborn Computer and Information
Science Department Hello world! ALGOL Example Program page.
BEGIN
FILE F(KIND=REMOTE);
EBCDIC ARRAY E[0:11];
REPLACE E BY "HELLO WORLD!";
WRITE(F, *, E);
END.
A simpler program using an inline format:
BEGIN
FILE F(KIND=REMOTE);
WRITE(F, <"HELLO WORLD!">);
END.
An even simpler program using the Display statement:
BEGIN DISPLAY("HELLO WORLD!") END.
An alternative example, using Elliott Algol I/O is as follows. Elliott Algol used different characters for "open-string-quote" and "close-string-quote", represented here by ‘ and ’.
program HiFolks;
begin
print ‘Hello world’
end;
Here's a version for the Elliott 803 Algol (A104) The standard Elliott 803 used 5 hole paper tape and thus only had upper case. The code lacked any quote characters so £ (UK Pound Sign) was used for open quote and ? (Question Mark) for close quote. Special sequences were placed in double quotes (e.g. ££L?? produced a new line on the teleprinter).
HIFOLKS'
BEGIN
PRINT £HELLO WORLD£L??'
END'
The ICT 1900 series
Algol I/O version allowed input from paper tape or punched card. Paper tape 'full' mode allowed lower case. Output was to a line printer.
'PROGRAM' (HELLO)
'BEGIN'
'COMMENT' OPEN QUOTE IS '(', CLOSE IS ')', PRINTABLE SPACE HAS TO
BE WRITTEN AS % BECAUSE SPACES ARE IGNORED;
WRITE TEXT('('HELLO%WORLD')');
'END'
'FINISH'
ALGOL
ALGOL is a family of imperative computer programming languages originally developed in the mid 1950s which greatly influenced many other languages and became the de facto way algorithms were described in textbooks and academic works for almost the next 30 years...
family of computer programming languages. It gave rise to many other programming languages, including BCPL
BCPL
BCPL is a procedural, imperative, and structured computer programming language designed by Martin Richards of the University of Cambridge in 1966.- Design :...
, B, Pascal
Pascal (programming language)
Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...
, Simula
Simula
Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard...
, C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
, and many others. ALGOL 58
ALGOL 58
ALGOL 58, originally known as IAL, is one of the family of ALGOL computer programming languages. It was an early compromise design soon superseded by ALGOL 60...
introduced code blocks and the
begin
and end
pairs for delimiting them. ALGOL 60 was the first language implementing nested functionNested function
In computer programming, a nested function is a function which is lexically encapsulated within another function. It can only be called by the enclosing function or by functions directly or indirectly nested within the same enclosing function. In other words, the scope of the nested function is...
definitions with lexical scope.
Niklaus Wirth
Niklaus Wirth
Niklaus Emil Wirth is a Swiss computer scientist, best known for designing several programming languages, including Pascal, and for pioneering several classic topics in software engineering. In 1984 he won the Turing Award for developing a sequence of innovative computer languages.-Biography:Wirth...
based his own ALGOL W
ALGOL W
ALGOL W is a programming language. It was based on a proposal for ALGOL X by Niklaus Wirth and C. A. R. Hoare as a successor to ALGOL 60 in IFIP Working Group 2.1. When the committee decided that the proposal was not a sufficient advance over ALGOL 60, the proposal was published as A contribution...
on ALGOL 60 before moving to develop Pascal
Pascal (programming language)
Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...
. Algol-W was intended to be the next generation ALGOL but the ALGOL 68
ALGOL 68
ALGOL 68 isan imperative computerprogramming language that was conceived as a successor to theALGOL 60 programming language, designed with the goal of a...
committee decided on a design that was more complex and advanced rather than a cleaned simplified ALGOL 60. The official ALGOL versions are named after the year they were first published.
ALGOL 68
ALGOL 68
ALGOL 68 isan imperative computerprogramming language that was conceived as a successor to theALGOL 60 programming language, designed with the goal of a...
is substantially different from Algol 60 but was not well received so that in general "Algol" means dialects of Algol 60. The name ALGOL
ALGOL
ALGOL is a family of imperative computer programming languages originally developed in the mid 1950s which greatly influenced many other languages and became the de facto way algorithms were described in textbooks and academic works for almost the next 30 years...
of the family is sometimes given in mixed case (Algol 60), and sometimes in all uppercase (ALGOL 68).
Standardization
ALGOL 60 - with COBOLCOBOL
COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....
- were the first languages to seek standardization.
- ISO 1538:1984, Programming language Algol 60 (now withdrawn)
- ISO TR 1672:1977, Algol 60 Hardware Representation (now withdrawn)
History
ALGOL 60 was used mostly by research computer scientists in the United States and in Europe. Its use in commercial applications was hindered by the absence of standard input/output facilities in its description and the lack of interest in the language by large computer vendors. ALGOL 60 did however become the standard for the publication of algorithms and had a profound effect on future language development.John Backus
John Backus
John Warner Backus was an American computer scientist. He directed the team that invented the first widely used high-level programming language and was the inventor of the Backus-Naur form , the almost universally used notation to define formal language syntax.He also did research in...
developed the Backus normal form
Backus–Naur form
In computer science, BNF is a notation technique for context-free grammars, often used to describe the syntax of languages used in computing, such as computer programming languages, document formats, instruction sets and communication protocols.It is applied wherever exact descriptions of...
method of describing programming languages specifically for ALGOL 58. It was revised and expanded by Peter Naur
Peter Naur
Peter Naur is a Danish pioneer in computer science and Turing award winner. His last name is the N in the BNF notation , used in the description of the syntax for most programming languages...
for ALGOL 60, and at Donald Knuth
Donald Knuth
Donald Ervin Knuth is a computer scientist and Professor Emeritus at Stanford University.He is the author of the seminal multi-volume work The Art of Computer Programming. Knuth has been called the "father" of the analysis of algorithms...
's suggestion renamed Backus–Naur Form
Backus–Naur form
In computer science, BNF is a notation technique for context-free grammars, often used to describe the syntax of languages used in computing, such as computer programming languages, document formats, instruction sets and communication protocols.It is applied wherever exact descriptions of...
.
Peter Naur: "As editor of the ALGOL Bulletin I was drawn into the international discussions of the language and was selected to be member of the European language design group in November 1959. In this capacity I was the editor of the ALGOL 60 report, produced as the result of the ALGOL 60 meeting in Paris in January 1960."
The following people attended the meeting in Paris (from January 11 to 16):
- Friedrich L. BauerFriedrich L. BauerFriedrich Ludwig Bauer is a German computer scientist and professor emeritus at Technical University of Munich.-Life:...
, Peter NaurPeter NaurPeter Naur is a Danish pioneer in computer science and Turing award winner. His last name is the N in the BNF notation , used in the description of the syntax for most programming languages...
, Heinz RutishauserHeinz RutishauserHeinz Rutishauser was a Swiss mathematician and a pioneer of modern numerical mathematics and computer science.- Life :...
, Klaus SamelsonKlaus SamelsonKlaus Samelson was a German mathematician, physicist, and computer pioneer in the area of programming language translation and push-pop stack algorithms for sequential formula translation on computers.- Early life :...
, Bernard Vauquois, Adriaan van WijngaardenAdriaan van WijngaardenAdriaan van Wijngaarden was an important mathematician and computer scientist who is considered by many to have been the founding father of informatica in the Netherlands...
, and Michael Woodger (from Europe) - John W. BackusJohn BackusJohn Warner Backus was an American computer scientist. He directed the team that invented the first widely used high-level programming language and was the inventor of the Backus-Naur form , the almost universally used notation to define formal language syntax.He also did research in...
, Julien Green, Charles Katz, John McCarthyJohn McCarthy (computer scientist)John McCarthy was an American computer scientist and cognitive scientist. He coined the term "artificial intelligence" , invented the Lisp programming language and was highly influential in the early development of AI.McCarthy also influenced other areas of computing such as time sharing systems...
, Alan J. PerlisAlan PerlisAlan Jay Perlis was an American computer scientist known for his pioneering work in programming languages and the first recipient of the Turing Award.-Biography:...
, and Joseph Henry Wegstein (from the USA).
Alan Perlis gave a vivid description of the meeting: "The meetings were exhausting, interminable, and exhilarating. One became aggravated when one's good ideas were discarded along with the bad ones of others. Nevertheless, diligence persisted during the entire period. The chemistry of the 13 was excellent."
Both John Backus and Peter Naur served on the committee which created ALGOL 60 as did Wally Feurzeig
Wally Feurzeig
Wally Feurzeig is an inventor of the LOGO programming language, and a well-known researcher in Artificial Intelligence.During the early 1960s, BBN had become a major center of computer science research and innovative applications...
, who later created Logo
Logo (programming language)
Logo is a multi-paradigm computer programming language used in education. It is an adaptation and dialect of the Lisp language; some have called it Lisp without the parentheses. It was originally conceived and written as functional programming language, and drove a mechanical turtle as an output...
.
ALGOL 60 inspired many languages that followed it. C. A. R. Hoare
C. A. R. Hoare
Sir Charles Antony Richard Hoare , commonly known as Tony Hoare or C. A. R. Hoare, is a British computer scientist best known for the development of Quicksort, one of the world's most widely used sorting algorithms...
remarked: "Here is a language so far ahead of its time that it was not only an improvement on its predecessors but also on nearly all its successors." The Scheme programming language, a variant of Lisp that adopted the block structure and lexical scope of ALGOL, also adopted the wording "Revised Report on the Algorithmic Language Scheme" for its standards documents in homage to ALGOL.
ALGOL 60 implementations timeline
To date there have been at least 70 augmentations, extensions, derivations and sublanguages of Algol 60.Name | Year | Author | State | Description | Target CPU |
---|---|---|---|---|---|
X1 ALGOL 60 | August 1960 | Edsger W. Dijkstra and Jaap A. Zonneveld | Netherlands | First implementation of ALGOL 60 | Electrologica X1 Electrologica X1 The Electrologica X1 was a digital computer designed and manufactured in the Netherlands from 1958 to 1965. About thirty were produced and sold in the Netherlands and abroad.... |
Elliott ALGOL Elliott ALGOL Elliott ALGOL was an ALGOL 60 compiler for the Eliott 803 computer. It differed slightly from the reference version of Algol, particularly in the supported character set. First released in February 1962, it is believed to be the first implementation of an ALGOL 60 compiler in a commercial context... |
1960s | C. A. R. Hoare C. A. R. Hoare Sir Charles Antony Richard Hoare , commonly known as Tony Hoare or C. A. R. Hoare, is a British computer scientist best known for the development of Quicksort, one of the world's most widely used sorting algorithms... |
UK | Subject of the famous Turing Turing Award The Turing Award, in full The ACM A.M. Turing Award, is an annual award given by the Association for Computing Machinery to "an individual selected for contributions of a technical nature made to the computing community. The contributions should be of lasting and major technical importance to the... lecture |
Elliott 803 Elliott 803 The Elliott 803 was a small, medium speed digital computer manufactured by the British company Elliott Brothers in the 1960s. About 250 were built and most British universities and colleges bought one.-History:... & the Elliott 503 |
Burroughs Algol (Several variants) |
1961 | Burroughs Corporation (with participation by Hoare, Dijkstra, and others) | USA | Basis of the Burroughs (and now Unisys Unisys Unisys Corporation , headquartered in Blue Bell, Pennsylvania, United States, and incorporated in Delaware, is a long established business whose core products now involves computing and networking.-History:... MCP based) computers |
Burroughs large systems and their midrange as well. |
Case ALGOL | 1961 | USA | Simula Simula Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard... was originally contracted as a simulation extension of the Case ALGOL |
UNIVAC 1107 UNIVAC 1107 The UNIVAC 1107 was the first member of Sperry Rand's UNIVAC 1100 series of computers, introduced in October 1962. It was also known as the Thin Film Computer because of its use of thin film memory for its register storage... |
|
GOGOL | 1961 | Bill McKeeman | USA | For ODIN Odin Odin is a major god in Norse mythology and the ruler of Asgard. Homologous with the Anglo-Saxon "Wōden" and the Old High German "Wotan", the name is descended from Proto-Germanic "*Wodanaz" or "*Wōđanaz".... time-sharing system |
PDP-1 PDP-1 The PDP-1 was the first computer in Digital Equipment Corporation's PDP series and was first produced in 1960. It is famous for being the computer most important in the creation of hacker culture at MIT, BBN and elsewhere... |
RegneCentralen ALGOL | 1961 | Peter Naur Peter Naur Peter Naur is a Danish pioneer in computer science and Turing award winner. His last name is the N in the BNF notation , used in the description of the syntax for most programming languages... , Jørn Jensen Jørn Jensen Jørn Jensen, one of the earliest Danish programmers. Examined as a mechanical engineer and had worked with electromechanical construction. In 1958 employed at the Danish Regnecentralen, and very soon exhibited an extraordinary programming skill... |
Denmark | Implementation of full Algol 60 | DASK at Regnecentralen |
Dartmouth ALGOL 30 Dartmouth ALGOL 30 Dartmouth ALGOL 30 was an implementation, firstly of ALGOL 58, then of ALGOL 60 for the LGP-30 at Dartmouth College, hence the name.Since the limited size of the LGP-30 precluded a full implementation of ALGOL 60, certain of its features were omitted; but the implementors did include parameters... |
1962 | Thomas Eugene Kurtz Thomas Eugene Kurtz Thomas Eugene Kurtz is an American computer scientist who co-developed the BASIC programming language during 1963 to 1964, together with John G. Kemeny.... et al. |
USA | LGP-30 LGP-30 The LGP-30, standing for Librascope General Purpose and then Librascope General Precision, was an early off-the-shelf computer. It was manufactured by the Librascope company of Glendale, California , and sold and serviced by the Royal Precision Electronic Computer Company, a joint venture with the... |
|
USS 90 Algol | 1962 | L. Petrone | Italy | ||
Algol Translator | 1962 | G. van der Mey and W.L. van der Poel Willem van der Poel Willem Louis van der Poel is a pioneering Dutch computer scientist, who is known for designing the ZEBRA computer. In 1950 he obtained an engineering degree in applied science at Delft University of Technology. In 1956 he obtained his PhD degree from the University of Amsterdam... |
Netherlands | Staatsbedrijf der Posterijen, Telegrafie en Telefonie | ZEBRA ZEBRA (computer) The ZEBRA was one of the first computers to be designed in the Netherlands, and one of the first Dutch computers to be commercially available... |
Kidsgrove Algol | 1963 | F. G. Duncan | UK | English Electric Company English Electric English Electric was a British industrial manufacturer. Founded in 1918, it initially specialised in industrial electric motors and transformers... KDF9 English Electric KDF9 KDF9 was an early British computer designed and built by English Electric, later English Electric Leo Marconi, EELM, later still incorporated into ICL. It first came into service in 1964 and was still in use in 1980 in at least one installation... |
|
VALGOL | 1963 | Val Schorre | USA | A test of the META II META II META II is a compiler writing language first released in 1962 by D. V. Schorre. It consists of syntax equations resembling Backus normal form and into which instructions to output assembly language commands are inserted. Compilers have been written in this language for VALGOL I and VALGOL II... compiler compiler |
|
FP6000 Algol | 1963 | Roger Moore Roger Moore (computer scientist) Roger D. Moore was the 1973 recipient of the Grace Murray Hopper Award from the Association for Computing Machinery... |
Canada | written for Saskatchewan Power Corp SaskPower Since 1929, SaskPower has been the principal supplier of electricity in Saskatchewan, Canada. Today, it serves more than 473,000 customers and manages $5.3 billion in assets... |
FP6000 Ferranti-Packard 6000 The FP-6000 was a second generation mainframe computer developed and built by Ferranti-Packard in the early 1960s. It is particularly notable for supporting multitasking, being one of the first commercial machines to do so... |
Whetstone Whetstone (benchmark) The Whetstone benchmark is a synthetic benchmark for evaluating the performance of computers. It was first written in Algol 60 in 1972 at the National Physical Laboratory in the United Kingdom and derived from statistics on program behaviour gathered on the KDF9 computer, using a modified version... |
1964 | Brian Randell Brian Randell Brian Randell is a British computer scientist, and Emeritus Professor at the School of Computing Science, Newcastle University, U.K. He specializes in research in software fault tolerance and dependability, and is a noted authority on the early prior to 1950 history of computers.- Biography... and L J Russell |
UK | Atomic Power Division of English Electric Company. Precursor to Ferranti Pegasus, National Physical Laboratories ACE and English Electric DEUCE English Electric DEUCE The DEUCE was one of the earliest British commercially available computers, built by English Electric from 1955.It was the production version of the Pilot ACE, itself a cut down version of Alan Turing's ACE.... implementations. |
English Electric Company KDF9 English Electric KDF9 KDF9 was an early British computer designed and built by English Electric, later English Electric Leo Marconi, EELM, later still incorporated into ICL. It first came into service in 1964 and was still in use in 1980 in at least one installation... |
NU ALGOL | 1965 | Norway | UNIVAC UNIVAC UNIVAC is the name of a business unit and division of the Remington Rand company formed by the 1950 purchase of the Eckert-Mauchly Computer Corporation, founded four years earlier by ENIAC inventors J. Presper Eckert and John Mauchly, and the associated line of computers which continues to this day... |
||
ALGEK | 1965 | USSR Soviet Union The Soviet Union , officially the Union of Soviet Socialist Republics , was a constitutionally socialist state that existed in Eurasia between 1922 and 1991.... |
Minsk-22 Minsk family of computers Minsk family of mainframe computers was developed and produced in the Byelorussian SSR from 1959 to 1975. Its further progress was stopped by a political decision of switching to IBM System/360 clone family known as ES EVM during the brief period of détente.... |
АЛГЭК, based on ALGOL-60 and COBOL COBOL COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments.... support, for economical tasks |
|
MALGOL | 1966 | publ. A. Viil, M Kotli & M. Rakhendi, | Estonian SSR Estonian Soviet Socialist Republic The Estonian Soviet Socialist Republic , often abbreviated as Estonian SSR or ESSR, was a republic of the Soviet Union, administered by and subordinated to the Government of the Soviet Union... |
Minsk-22 Minsk family of computers Minsk family of mainframe computers was developed and produced in the Byelorussian SSR from 1959 to 1975. Its further progress was stopped by a political decision of switching to IBM System/360 clone family known as ES EVM during the brief period of détente.... |
|
ALGAMS | 1967 | GAMS group (ГАМС, группа автоматизации программирования для машин среднего класса), cooperation of Comecon Academies of Science | Comecon Comecon The Council for Mutual Economic Assistance , 1949–1991, was an economic organisation under hegemony of Soviet Union comprising the countries of the Eastern Bloc along with a number of communist states elsewhere in the world... |
Minsk-22 Minsk family of computers Minsk family of mainframe computers was developed and produced in the Byelorussian SSR from 1959 to 1975. Its further progress was stopped by a political decision of switching to IBM System/360 clone family known as ES EVM during the brief period of détente.... , later ES EVM ES EVM ES EVM was a series of clones of IBM's System/360 and System/370 mainframes, released in the Comecon countries under the initiative of the Soviet Union since the 1960s. Production continued until 1998... , BESM BESM BESM is the name of a series of Soviet mainframe computers built in 1950-1960s. The name is an acronym for "Bolshaya Elektronno-Schetnaya Mashina" , literally "Large Electronically Computing Machine". The series began as a successor to MESM... |
|
ALGOL/ZAM | 1967 | Poland | Polish ZAM computer | ||
Chinese Algol | 1972 | China | Chinese characters, expressed via the Symbol system | ||
DG/L DG/L DG/L was a programming language developed by Data General Corp for the Nova, Eclipse and Eclipse/MV families of minicomputers in the 1970s and early 1980s.There were actually two separate versions:... |
1972 | USA | DG Eclipse Data General Eclipse The Data General Eclipse line of computers by Data General were 16-bit minicomputers released in early 1974 and sold until 1988. The Eclipse was based on many of the same concepts as the Data General Nova, but included support for virtual memory and multitasking more suitable to the small office... family of Computers |
The Burroughs dialects included special Bootstrapping dialects such as ESPOL
ESPOL
ESPOL was a superset of ALGOL 60 that provided capabilities of what would later be known as Mohols, machine oriented high order languages, such as interrupting a processor on a multiprocessor system...
and NEWP
NEWP
NEWP is a high-level programming language used on the Unisys MCP systems. The language is used to write the operating system and other system utilities, although it can also be used to write user software as well. Several constructs separate it from extended ALGOL on which it is based...
.
Properties
ALGOL 60 as officially defined had no I/O facilities; implementations defined their own in ways that were rarely compatible with each other. In contrast, ALGOL 68 offered an extensive library of transput (ALGOL 68 parlance for Input/Output) facilities.ALGOL 60 allowed for two evaluation strategies
Evaluation strategy
In computer science, an evaluation strategy is a set of rules for evaluating expressions in a programming language. Emphasis is typically placed on functions or operators: an evaluation strategy defines when and in what order the arguments to a function are evaluated, when they are substituted...
for parameter
Parameter (computer science)
In computer programming, a parameter is a special kind of variable, used in a subroutine to refer to one of the pieces of data provided as input to the subroutine. These pieces of data are called arguments...
passing: the common call-by-value, and call-by-name. Call-by-name had certain limitations in contrast to call-by-reference, making it an undesirable feature in imperative language design. For example, it is impossible in ALGOL 60 to develop a procedure that will swap the values of two parameters if the actual parameters that are passed in are an integer variable and an array that is indexed by that same integer variable.
However, call-by-name is still beloved of ALGOL implementors for the interesting "thunk
Thunk (functional programming)
In computer science, a thunk is a parameterless closure created to prevent the evaluation of an expression until forced at a later time. In lazy languages thunks are created and forced implicitly...
s" that are used to implement it. Donald Knuth
Donald Knuth
Donald Ervin Knuth is a computer scientist and Professor Emeritus at Stanford University.He is the author of the seminal multi-volume work The Art of Computer Programming. Knuth has been called the "father" of the analysis of algorithms...
devised the "man or boy test
Man or boy test
The man or boy test was proposed by computer scientist Donald Knuth as a means of evaluating implementations of the ALGOL 60 programming language...
" to separate compilers that correctly implemented "recursion and non-local references." This test contains an example of call-by-name.
ALGOL 60 Reserved words and restricted identifiers
There are 35 such reserved words in the standard Burroughs large systems sub-language:
|
DO DOUBLE ELSE END EVENT FALSE FILE |
FOR FORMAT GO IF INTEGER LABEL LIST |
LONG OWN POINTER PROCEDURE REAL STEP SWITCH |
TASK THEN TRUE UNTIL VALUE WHILE ZIP |
There are 71 such restricted identifiers in the standard Burroughs large systems sub-language:
|
ENABLE EQL EQV EXCHANGE EXTERNAL FILL FORWARD GEQ GTR IMP IN INTERRUPT IS LB |
LEQ LIBERATE LINE LOCK LSS MERGE MOD MONITOR MUX NEQ NO NOT ON OPEN |
OR OUT PICTURE PROCESS PROCURE PROGRAMDUMP RB READ RELEASE REPLACE RESET RESIZE REWIND RUN |
SCAN SEEK SET SKIP SORT SPACE SWAP THRU TIMES TO WAIT WHEN WITH WRITE |
and also the names of all the intrinsic functions.
Standard Operators
Priority | Operator | |
---|---|---|
first arithmetic |
first | ↑ (power) |
second | ×, / (real), ÷ (integer) | |
third | +, - | |
second | <, ≤, =, ≥, >, ≠ | |
third | ¬ (not) | |
fourth | ∧ (or) | |
fifth | ∨ (and) | |
sixth | ⊃ (implication) | |
seventh | ≡ (equivalence) |
ALGOL 60
procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);value n, m; array a; integer n, m, i, k; real y;
comment The absolute greatest element of the matrix a, of size n by m
is transferred to y, and the subscripts of this element to i and k;
begin integer p, q;
y := 0; i := k := 1;
for p:=1 step 1 until n do
for q:=1 step 1 until m do
if abs(a[p, q]) > y then
begin y := abs(a[p, q]);
i := p; k := q
end
end Absmax
Implementations differ in how the text in bold must be written. The word 'INTEGER', including the quotation marks, must be used in some implementations in place of integer, above, thereby designating it as a special keyword.
Following is an example of how to produce a table using Elliott 803 ALGOL:
FLOATING POINT ALGOL TEST'
BEGIN REAL A,B,C,D'
READ D'
FOR A:= 0.0 STEP D UNTIL 6.3 DO
BEGIN
PRINT PUNCH(3),££L??'
B := SIN(A)'
C := COS(A)'
PRINT PUNCH(3),SAMELINE,ALIGNED(1,6),A,B,C'
END'
END'
PUNCH(3) sends output to the teleprinter rather than the tape punch.
SAMELINE suppresses the carriage return + line feed normally printed between arguments.
ALIGNED(1,6) controls the format of the output with 1 digit before and 6 after the decimal point
ALGOL 60 family
Since ALGOL 60 had no I/O facilities, there is no portable hello world programHello world program
A "Hello world" program is a computer program that outputs "Hello world" on a display device. Because it is typically one of the simplest programs possible in most programming languages, it is by tradition often used to illustrate to beginners the most basic syntax of a programming language, or to...
in ALGOL. The following program could (and still will) compile and run on an ALGOL implementation for a Unisys A-Series mainframe, and is a straightforward simplification of code taken from The Language Guide at the University of Michigan
University of Michigan
The University of Michigan is a public research university located in Ann Arbor, Michigan in the United States. It is the state's oldest university and the flagship campus of the University of Michigan...
-Dearborn Computer and Information
Science Department Hello world! ALGOL Example Program page.
BEGIN
FILE F(KIND=REMOTE);
EBCDIC ARRAY E[0:11];
REPLACE E BY "HELLO WORLD!";
WRITE(F, *, E);
END.
A simpler program using an inline format:
BEGIN
FILE F(KIND=REMOTE);
WRITE(F, <"HELLO WORLD!">);
END.
An even simpler program using the Display statement:
BEGIN DISPLAY("HELLO WORLD!") END.
An alternative example, using Elliott Algol I/O is as follows. Elliott Algol used different characters for "open-string-quote" and "close-string-quote", represented here by ‘ and ’.
program HiFolks;
begin
print ‘Hello world’
end;
Here's a version for the Elliott 803 Algol (A104) The standard Elliott 803 used 5 hole paper tape and thus only had upper case. The code lacked any quote characters so £ (UK Pound Sign) was used for open quote and ? (Question Mark) for close quote. Special sequences were placed in double quotes (e.g. ££L?? produced a new line on the teleprinter).
HIFOLKS'
BEGIN
PRINT £HELLO WORLD£L??'
END'
The ICT 1900 series
ICT 1900 series
ICT 1900 was the name given to a series of mainframe computers released by International Computers and Tabulators and later International Computers Limited during the 1960s and '70s...
Algol I/O version allowed input from paper tape or punched card. Paper tape 'full' mode allowed lower case. Output was to a line printer.
'PROGRAM' (HELLO)
'BEGIN'
'COMMENT' OPEN QUOTE IS '(', CLOSE IS ')', PRINTABLE SPACE HAS TO
BE WRITTEN AS % BECAUSE SPACES ARE IGNORED;
WRITE TEXT('('HELLO%WORLD')');
'END'
'FINISH'
See also
- ALGOLALGOLALGOL is a family of imperative computer programming languages originally developed in the mid 1950s which greatly influenced many other languages and became the de facto way algorithms were described in textbooks and academic works for almost the next 30 years...
- ALGOL 58ALGOL 58ALGOL 58, originally known as IAL, is one of the family of ALGOL computer programming languages. It was an early compromise design soon superseded by ALGOL 60...
- ALGOL NALGOL NALGOL N is the name of a successor to ALGOL 60 designed in Japan with the aim of being as powerful as ALGOL 68 but as simple as ALGOL 60. It was proposed by Yoneda. Algol N tried to use extensibility in order to solve the problem that programming language designers faced when trying to make an...
- ALGOL 68ALGOL 68ALGOL 68 isan imperative computerprogramming language that was conceived as a successor to theALGOL 60 programming language, designed with the goal of a...
- ALGOL WALGOL WALGOL W is a programming language. It was based on a proposal for ALGOL X by Niklaus Wirth and C. A. R. Hoare as a successor to ALGOL 60 in IFIP Working Group 2.1. When the committee decided that the proposal was not a sufficient advance over ALGOL 60, the proposal was published as A contribution...
- Atlas AutocodeAtlas AutocodeAtlas Autocode was a programming language developed around 1965 at Manchester University for the Atlas Computer. It was developed by Tony Brooker and Derrick Morris as an improvement on the ALGOL programming languages, removing some of Algol's poorer features such as "passing parameters by name"...
- Coral 66
- Edinburgh IMPEdinburgh IMPEdinburgh IMP is a development of ATLAS Autocode, initially developed around 1966-1969 at Edinburgh University, Scotland. IMP was a general-purpose programming language which was used heavily for systems programming....
- Jensen's DeviceJensen's DeviceJensen's Device is a computer programming technique devised by Danish computer scientist Jørn Jensen, who worked with Peter Naur at Regnecentralen, particularly on the GIER Algol compiler, one of the earliest correct implementations of ALGOL 60....
- ISWIMISWIMISWIM is an abstract computer programming language devised by Peter J. Landin and first described in his article, The Next 700 Programming Languages, published in the Communications of the ACM in 1966...
- JOVIALJOVIALJOVIAL is a high-order computer programming language similar to ALGOL, but specialized for the development of embedded systems .JOVIAL is an acronym for "Jules Own Version of the International...
- NELIACNELIACThe Navy Electronics Laboratory International ALGOL Compiler or NELIAC is a dialect and compiler implementation of the ALGOL 58 programming language developed by the Naval Electronics Laboratory in 1958....
- SimulaSimulaSimula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard...
- S-algolS-algolS-algol is a computer programming language derivative of ALGOL 60 developed at the University of St. Andrews in 1979 by Ron Morrison. The language was developed as his PhD thesis as a modification of ALGOL to contain orthogonal datatypes. Ron Morrison would go on to become professor at the...
- Scheme (programming language)
Further reading
- B. Randell and L.J. Russell, ALGOL 60 Implementation: The Translation and Use of ALGOL 60 Programs on a Computer. Academic Press, 1964. The design of the Whetstone Compiler. One of the early published descriptions of implementing a compiler. See the related papers: Whetstone Algol Revisited, and The Whetstone KDF9 Algol Translator by B. Randell
- E. W, Dijkstra, Algol 60 translation: an algol 60 translator for the x1 and making a translator for algol 60, report MR 35/61. Mathematisch Centrum, Amsterdam, 1961. http://www.cs.utexas.edu/users/EWD/MCReps/MR35.PDF
Comparisons with other languages
- The Algol Family and Haskell (pptx) - Kathleen Fisher
External links
- Revised Report on the Algorithmic Language Algol 60 by Peter Naur, et al. ALGOL definition
- A BNF syntax summary of ALGOL 60
- "The Emperor's Old Clothes" - Hoare's 1980 ACM Turing Award speech, which discusses ALGOL history and his involvement
- MARST, a free Algol-to-C translator
- AN IMPLEMENTATION OF ALGOL 60 FOR THE FP6000 Discussion of some implementation issues.
- "The European Side of the Last Phase of the Development of ALGOL 60" by Peter Naur
- Edinburgh University wrote compilers for Algol60 (later updated for Algol60M) based on their Atlas Autocode compilers initially bootstrapped from the Atlas to the KDF-9. The Edinburgh compilers generated code for the ICL1900, the ICL4/75 (an IBM360 clone), and the ICL2900. Here is the BNF for Algol60 and the ICL2900 compiler source, library documentation, and a considerable test suite including Brian Wichmann's tests. Also there is a rather superficial Algol60 to Atlas Autocode source-level translator.
- Eric S. RaymondEric S. RaymondEric Steven Raymond , often referred to as ESR, is an American computer programmer, author and open source software advocate. After the 1997 publication of The Cathedral and the Bazaar, Raymond was for a number of years frequently quoted as an unofficial spokesman for the open source movement...
's Retrocomputing Museum, among others a link to the NASE Algol-60 interpreter written in C. - The NASE interpreter
- Stories about Burrough's B5000 http://ed-thelen.org/comp-hist/B5000-AlgolRWaychoff.html
- NUMAL A Library of Numerical Procedures in ALGOL 60 developed at The Stichting Centrum Wiskunde & Informatica (legal successor of Stichting Mathematisch Centrum) legal owner.