ALGOL 58, originally named IAL, is a member of the
ALGOL
ALGOL (; short for "Algorithmic Language") is a family of imperative computer programming languages originally developed in 1958. ALGOL heavily influenced many other languages and was the standard method for algorithm description used by the ...
family of computer
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
s. It was an early compromise design soon superseded by
ALGOL 60
ALGOL 60 (short for ''Algorithmic Language 1960'') is a member of the ALGOL family of computer programming languages. It followed on from ALGOL 58 which had introduced code blocks and the begin and end pairs for delimiting them, representing a ...
. According to
John Backus
John Warner Backus (December 3, 1924 – March 17, 2007) was an American computer scientist. He led the team that invented and implemented FORTRAN, the first widely used high-level programming language, and was the inventor of the Backus–N ...
:
The Zurich ACM-GAMM Conference had two principal motives in proposing the IAL: (a) To provide a means of communicating numerical methods and other procedures between people, and (b) To provide a means of realizing a stated process on a variety of machines...
ALGOL 58 introduced the fundamental notion of the
compound statement, but it was restricted to
control flow
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an '' ...
only, and it was not tied to
identifier scope in the way that Algol 60's
block
Block or blocked may refer to:
Arts, entertainment and media Broadcasting
* Block programming, the result of a programming strategy in broadcasting
* W242BX, a radio station licensed to Greenville, South Carolina, United States known as ''96.3 ...
s were.
Name
Bauer attributes the name to
Hermann Bottenbruch
Hermann Bottenbruch (14 September 1928 – 20 May 2019) was a German mathematician and computer scientist.
Biography
Bottenbruch grew up in . Toward the end of World War II, he served as a . In 1947, he began the study of mathematics at the ...
, who coined the term ''algorithmic language'' (algorithmische Sprache) in 1957, "at least in Germany".
History
There were proposals for a universal language by the
Association for Computing Machinery
The Association for Computing Machinery (ACM) is a US-based international learned society for computing. It was founded in 1947 and is the world's largest scientific and educational computing society. The ACM is a non-profit professional membe ...
(ACM) and also by the German
Gesellschaft für Angewandte Mathematik und Mechanik
Gesellschaft für Angewandte Mathematik und Mechanik ("Society of Applied Mathematics and Mechanics"), often referred to by the acronym GAMM, is a German society for the promotion of science, founded in 1922 by the physicist Ludwig Prandtl and the ...
("Society of Applied Mathematics and Mechanics") (GAMM). It was decided to organize a joint meeting to combine them. The meeting took place from May 27 to June 2, 1958, at
ETH Zurich
ETH Zurich (; ) is a public university in Zurich, Switzerland. Founded in 1854 with the stated mission to educate engineers and scientists, the university focuses primarily on science, technology, engineering, and mathematics. ETH Zurich ran ...
and was attended by the following people:
*
Friedrich L. Bauer
Friedrich Ludwig "Fritz" Bauer (10 June 1924 – 26 March 2015) was a German pioneer of computer science and professor at the Technical University of Munich.
Life
Bauer earned his Abitur in 1942 and served in the Wehrmacht during World War ...
,
Hermann Bottenbruch
Hermann Bottenbruch (14 September 1928 – 20 May 2019) was a German mathematician and computer scientist.
Biography
Bottenbruch grew up in . Toward the end of World War II, he served as a . In 1947, he began the study of mathematics at the ...
,
Heinz Rutishauser
Heinz Rutishauser (30 January 1918 – 10 November 1970) was a Swiss people, Swiss mathematician and a pioneer of modern numerical mathematics and computer science.
Life
Rutishauser's father died when he was 13 years old and his mother died t ...
, and
Klaus Samelson
Klaus Samelson (21 December 1918 – 25 May 1980) 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 ...
(from the GAMM)
*
John Backus
John Warner Backus (December 3, 1924 – March 17, 2007) was an American computer scientist. He led the team that invented and implemented FORTRAN, the first widely used high-level programming language, and was the inventor of the Backus–N ...
,
Charles Katz
Charles Abraham Katz (July 7, 1927 – May 9, 1974) was an American mathematician and computer scientist known for his contributions to early compiler development in the 1950s.
Katz received two degrees in mathematics, a Bachelor of Science (B.S ...
,
Alan Perlis
Alan Jay Perlis (April 1, 1922 – February 7, 1990) was an American computer scientist and professor at Purdue University, Carnegie Mellon University and Yale University. He is best known for his pioneering work in programming languages and was t ...
, and
Joseph Henry Wegstein
Joseph Henry Wegstein (April 7, 1922 – August 16, 1985) was an American computer scientist.
Biography
Wegstein was born on April 7, 1922 in Washburn, Illinois. He attended the University of Illinois, where he earned a Bachelor of Science (B.S. ...
(from the ACM).
The language was originally proposed to be called IAL (International Algebraic Language) but according to Perlis,
this was rejected as an "'unspeakable' and pompous acronym". ALGOL was suggested instead, though not officially adopted until a year later. The publication following the meeting still used the name IAL.
By the end of 1958 the ZMMD-group had built a working ALGOL 58 compiler for the
Z22 computer. ZMMD was an abbreviation for Zürich (where Rutishauser worked), München (workplace of Bauer and Samelson), Mainz (location of the Z22 computer), Darmstadt (workplace of Bottenbruch).
ALGOL 58 saw some implementation effort at
IBM
International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
, but the effort was in competition with
FORTRAN, and soon abandoned. It was also implemented at
Dartmouth College
Dartmouth College ( ) is a Private university, private Ivy League research university in Hanover, New Hampshire, United States. Established in 1769 by Eleazar Wheelock, Dartmouth is one of the nine colonial colleges chartered before the America ...
on an
LGP-30
The LGP-30, standing for Librascope General Purpose and then Librascope General Precision, is an early off-the-shelf computer. It was manufactured by the Librascope company of Glendale, California (a division of General Precision Inc.), and so ...
, but that implementation soon evolved into
ALGOL 60
ALGOL 60 (short for ''Algorithmic Language 1960'') is a member of the ALGOL family of computer programming languages. It followed on from ALGOL 58 which had introduced code blocks and the begin and end pairs for delimiting them, representing a ...
. An implementation for the
Burroughs 220 called
BALGOL evolved along its own lines as well, but retained much of ALGOL 58's original character.
ALGOL 58's primary contribution was to later languages; it was used as a basis for
JOVIAL,
MAD,
NELIAC
The Navy Electronics Laboratory International ALGOL Compiler (NELIAC) is a dialect and compiler implementation of the programming language ALGOL 58, developed by the Navy Electronics Laboratory (NEL) in 1958.
It was designed for numeric and lo ...
and
ALGO. It was also used during 1959 to publish
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of Rigour#Mathematics, mathematically rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algo ...
s in ''
CACM'', beginning a trend of using ALGOL notation in publication that continued for many years.
Time line of implementations of ALGOL 58 variants
ALGOL 58's influence on ALGOL 60
* IAL introduced the three-level concept of reference, publication and hardware language, and the concept of "word delimiters" having a separate representation from freely chosen identifiers (hence, no reserved words). ALGOL 60 kept this three-level concept.
[
]
* The distinction between assignment (
:=
representing a left-facing arrow) and the equality relation
=
was introduced in IAL and kept in ALGOL 60.
* Both IAL and ALGOL 60 allow arrays with arbitrary lower and upper subscript bounds, and allow subscript bounds to be defined by integer expressions.
* Both IAL and ALGOL 60 allow nesting of procedure declarations and the corresponding identifier scopes.
* The IAL report described parameter substitution in much the same terms as the ALGOL 60 report, leaving open the possibility of
call by name
In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a ''parameter-passing strategy'' that defines the kind of value that is passed to the ...
. It is unclear if this was realized at the time.
* IAL allows numeric statement labels, that ALGOL 60 kept.
* The possibility of including non-ALGOL code within a program was already hinted at, in the context of parameters to procedures.
* Both IAL and ALGOL 60 have a ''switch designator'', unrelated, however, to the
switch statement
In computer programming languages, a switch statement is a type of selection control mechanism used to allow the value of a variable or expression to change the control flow of program execution via search and map.
Switch statements function ...
in C and other languages.
* In-line functions of the form
''f''(''x'') := ''x'' / 2
; were proposed in IAL but ''dropped'' in ALGOL 60.
* IAL procedure declarations provide separate declaration lists for input and output parameters, a procedure can return multiple values; this mechanism was ''replaced'' in ALGOL 60 with the
value declaration.
* Variable declarations in IAL can be placed ''anywhere'' in the program and not necessarily at the beginning of a procedure. In contrast, the declarations within an ALGOL 60 block should occur ''before'' all execution statements.
* The -statement has the form
for i:=base(increment)limit
, directly resembling the loop of Rutishauser's programming language ''
Superplan'', replacing
=
with
:=
, and replacing its German keyword
Für
with the direct English translation
for
; ALGOL 60 replaced the parentheses with the word delimiters
step
and
until
, such that the previous statement instead would be
''i'':=''base'' ''increment'' ''limit''
.
* The IAL -statement does not have a -clause or -clause; it rather
guards the succeeding statement. IAL provides an -statement that cleanly allows testing of multiple conditions. Both were replaced by ALGOL's - construct, with the introduction of the "
dangling-" ambiguity.
* IAL provides macro-substitution with the -statement; this was dropped in ALGOL 60.
* IAL allows one or more array subscripts to be omitted when passing arrays to procedures, and to provide any or all arguments to a procedure passed to another procedure.
* IAL's infix Boolean operators are all of the same precedence level. Exponents are indicated with paired up and down arrows, which removed any confusion about the correct interpretation of nested exponents; ALGOL 60 replaced the paired arrows with a single up-arrow whose function is equivalent to FORTRAN's **.
* The IAL report does not explicitly specify which standard functions were to be provided, making a vague reference to the "standard functions of analysis." The ALGOL 60 report has a more explicit list of standard functions.
References
External links
Algol 58at the Software Preservation Group (cf.
Computer History Museum
The Computer History Museum (CHM) is a computer museum in Mountain View, California. The museum presents stories and artifacts of Silicon Valley and the Information Age, and explores the Digital Revolution, computing revolution and its impact ...
)
Algol 58 report from CACMat the Software Preservation Group
BALGOL ManualThe Burroughs Algebraic Compiler (1963 Revised Edition)
at The Burroughs 205 and 220 Blog
{{DEFAULTSORT:Algol 58
Algol programming language family
Programming languages created in 1958