Jump to content

ALGOL 58

From Wikipedia, the free encyclopedia
ALGOL 58
Paradigmprocedural,imperative,structured
FamilyALGOL
Designed byFriedrich L. Bauer,Hermann Bottenbruch,Heinz Rutishauser,Klaus Samelson,John Backus,Charles Katz,Alan Perlis,Joseph Henry Wegstein
First appeared1958;66 years ago(1958)
Typing disciplineStatic,strong
ScopeLexical
Influenced by
FORTRAN,IT,Plankalkül,[1]Superplan,Sequentielle Formelübersetzung
Influenced
Most subsequent imperative languages (Algol-like)

ALGOL 58,originally namedIAL,is one of the family ofALGOLcomputerprogramming languages.It was an early compromise design soon superseded byALGOL 60.According toJohn Backus:

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...[2]

ALGOL 58 introduced the fundamental notion of thecompound statement,but it was restricted tocontrol flowonly, and it was not tied toidentifier scopein the way that Algol 60'sblockswere.

Name

[edit]

Bauer attributes the name toHermann Bottenbruch,who coined the termalgorithmic language(algorithmische Sprache) in 1957, "at least in Germany".[3][4]

History

[edit]

There were proposals for a universal language by theAssociation for Computing Machinery(ACM) and also by the GermanGesellschaft für Angewandte Mathematik und Mechanik( "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, atETH Zurichand was attended by the following people:

The language was originally proposed to be calledIAL(International Algebraic Language) but according to Perlis,[5] 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.[6]

By the end of 1958 the ZMMD-group had built a working ALGOL 58 compiler for theZ22computer. 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 atIBM,but the effort was in competition withFORTRAN,and soon abandoned. It was also implemented atDartmouth Collegeon anLGP-30,but that implementation soon evolved intoALGOL 60.An implementation for theBurroughs220 calledBALGOLevolved along its own lines as well, but retained much of ALGOL 58's original character.[7]

ALGOL 58's primary contribution was to later languages; it was used as a basis forJOVIAL,[4]MAD,NELIAC[4]andALGO.It was also used during 1959 to publishalgorithmsinCACM,beginning a trend of using ALGOL notation in publication that continued for many years.

Time line of implementations of ALGOL 58 variants

[edit]
Name Year Author State Description Target CPU
ZMMD-implementation 1958 Friedrich L. Bauer,Heinz Rutishauser, Klaus Samelson, Hermann Bottenbruch Germany Z22
NELIAC 1958 Naval Electronics Laboratory USA AN/USQ-17
JOVIAL 1960 Jules Schwartz USA Was theDODHOLprior toAda (programming language) Various (see article)
BALGOL 1960 Joel Merner et al. USA Burroughs CorporationB220
MAD 1960 University of Michigan USA IBM 7090/7094 mainframe, then mid-1960s ported toUnivac 1108
Dartmouth ALGOL 30 1962 Thomas Eugene Kurtzet al. - evolved into ALGOL 60 USA LGP-30
SUBALGOL 1962 Bob Braden,Lawrence M. BreedandRoger Moore,Stanford University USA BALGOL extension IBM 7090
ALGO ~ Bendix Corporation USA Bendix G-15

ALGOL 58's influence on ALGOL 60

[edit]
  • 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.[8]
  • 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 ofcall by name.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 aswitch designator,unrelated, however, to theswitch statementin C and other languages.
  • In-line functions of the formf(x):=x/ 2;were proposed in IAL butdroppedin ALGOL 60.
  • IAL procedure declarations provide separate declaration lists for input and output parameters, a procedure can return multiple values; this mechanism wasreplacedin ALGOL 60 with thevaluedeclaration.
  • Variable declarations in IAL can be placedanywherein the program and not necessarily at the beginning of a procedure. In contrast, the declarations within an ALGOL 60 block should occurbeforeall execution statements.
  • Thefor-statement has the formfor i:=base(increment)limit,directly resembling the loop of Rutishauser's programming languageSuperplan,replacing=with:=,and replacing its German keywordFürwith the direct English translationfor;ALGOL 60 replaced the parentheses with the word delimitersstepanduntil,such that the previous statement instead would bei:=basestepincrementuntillimit.
  • The IALif-statement does not have athen-clause orelse-clause; it ratherguardsthe succeeding statement. IAL provides anif either-statement that cleanly allows testing of multiple conditions. Both were replaced by ALGOL'sif-thenconstruct, with the introduction of the "dangling-else"ambiguity.
  • IAL provides macro-substitution with thedo-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

[edit]
  1. ^Rojas, Raúl; Hashagen, Ulf (2002).The First Computers: History and Architectures.MIT Press. p. 292.ISBN978-0262681377.RetrievedOctober 25,2013.
  2. ^Backus, J.W. (1959). "The Syntax and Semantics of the Proposed International Algebraic Language of Zürich ACM-GAMM Conference".Proceedings of the International Conference on Information Processing.UNESCO. pp. 125–132.
  3. ^Aspray, William (17 February 1987),An interview with Friedrich L. Bauer(PDF),Charles Babbage Institute,archived fromthe original(PDF)on April 22, 2012
  4. ^abcGoos, Gerhard[in German](2017-08-07).Geschichte der deutschsprachigen Informatik - Programmiersprachen und Übersetzerbau[History of informatics in German-speaking countries - Programming languages and compiler design](PDF)(in German). Karlsruhe, Germany: Fakultät für Informatik,Karlsruhe Institute of Technology(KIT).Archived(PDF)from the original on 2022-05-19.Retrieved2022-11-14.(11 pages)
  5. ^ Perlis, A.J.(1981). "Talk on Computing in the fifties".ACM National Conference. Nashville, TN.Los Alamito, CA: (Transcript in J. A. N. Lee (ed.), Computer Pioneers, IEEE Computer Society Press (published 1995). pp. 545–556).
  6. ^ Perlis, A.J.;Samelson, K.(1958)."Preliminary report: international algebraic language".Communications of the ACM.1(12): 8–22.doi:10.1145/377924.594925.S2CID28755282.
  7. ^"Algol 58 implementations and dialects",Software Preservation Group,Computer History Museum.Donald Knuthis quoted on BALGOL: "I’m in my second year at Caltech, and I was a consultant to Burroughs. After finishing my compiler for Burroughs, I joined the Product Planning Department. The Product Planning Department was largely composed of people who had written the best software ever done in the world up to that time, which was a Burroughs ALGOL compiler for the 220 computer. That was a great leap forward for software. It was the first software that used list processing and high level data structures in an intelligent way. They took the ideas of Newell and Simon and applied them to compilers. It ran circles around all the other things that we were doing." [Don Knuth, CHM Oral History, 2007, page 9]
  8. ^ Naur, P, ed. (1962).Revised report on the Algorithmic Language ALGOL 60(PDF).International Federation for Information Processing.
[edit]