Algol 60

The Algol 60 programming language was from 1958 to 1963 under the leadership of the Association for Computing Machinery (ACM ) and the Association of Applied Mathematics and Mechanics ( GAMM ), and later the developed International Federation for Information Processing ( IFIP ). It involved, among others, John W. Backus, Friedrich L. Bauer, John McCarthy, Peter Naur, Alan J. Perlis, Heinz Rutishauser and Klaus Samelson. The name Algol is a short form for Algorithmic Language, 60 is the year of the " fast completion " ( a discussion draft was known as the International Algorithmic Language ( IAL ) or Algol 58 and the final text (as " Revised Report " titled ) comes from the year 1963).

The language design

Algol 60 was developed as an international, independent of commercial interests, portable, procedural programming language primarily for scientific, it was called then thought numeric, purposes. But there were also important non-numerical applications. Their simplicity, and the large degree of freedom for that time constraints made ​​them enjoyable to use.

Algol 60 was a milestone in the history of programming languages ​​:

  • With it, the exact definition of voice characteristics of each implementation began independently of (and before ) (other than this even in LISP was ).
  • The Algol 60 report introduced the formal definition of the syntax using the Backus -Naur Form, which was common practice soon.
  • ALGOL pointed to the value of a clear and simple language core, an experience that will soon inspire Peter Landin for his language design ISWIM and thus affect the most developed according to ALGOL programming languages ​​should.
  • ALGOL wrote - before runtime checks, a decision that was only appreciated and imitated slowly - against the trend of the times.
  • The distinction between the language itself and its technical (input ) representation ( which had to take on existing rear view) met with approval, but few followers.

As an ( unexpected) major problem proved that the Ein-/Ausgabe was not regulated, so that their implementations vary widely between compilers. For example, a text is printed once with the OutString and once with the WRITE TEXT command ( for example, at the Electro Logica X1).

Properties

The method of sequential formula translation of Bauer and Samelson made ​​it possible to dispense with many restrictions, as she knew about FORTRAN. The idea contained in the stack then also allowed recursive procedures ( Edsger W. Dijkstra ).

Inspired by the λ - calculus was the possibility of internal procedure definitions (" block structure ")., Begin' blocks ( anonymous procedures) have been mainly used to create fields with variable limits in the stack. Visibility and scope of the variable were going properly defined lexically. Provided also, own' variables should be their life of the program were (see, static ' in C); straight but this was not often implemented.

Also from the λ - calculus, the parameter passing modes were taken:

  • Valued Parameters ( keyword, value ') were evaluated before the call ( Strict evaluation - " only evaluating, then inserting ").
  • For parameter names, default, the semantics of a textual setting ( Not Strict lazy ) ( Evaluation - " only fitting, then evaluating " ) was prescribed. This resulted in the context of memory variables to certain difficulties, allowed in principle but an elegant formulation of integrals and similar functions:

Integrating (alpha * x * x, x, a, b) ( Jensen's device). To implement one related thunks, Closures of anonymous functions ( and named " after the sound they made ​​on the 7090 "). Algol led with LISP the principle of freedom in programming a format. In this case a key word always has the same meaning, regardless of the position in the program. In addition, the beginning of a new line is equivalent to the space. In the prevailing languages ​​FORTRAN and COBOL positioning the instructions on punched cards, however, was crucial - a keyword could, depending on the position have a different meaning. Also the division line was not clear in these languages.

Example

The following ( complete ) Algol -60 program is HELLO WORLD on the output channel 2:

' COMMENT ' HELLO WORLD PROGRAM IN ALGOL 60;     ' BEGIN '        OutString (2, ' ( ' HELLO WORLD ' )');     'END ' Effects / importance / successor

" ALGOL was an advance over most of its successors. "

In practice, Algol was less use than FORTRAN or COBOL; but that did not diminish its long-term impact (see above). For a long time Algol 60 was exemplary in academia.

The most important successor was Simula 67

According to John C. Reynolds, most languages ​​do not follow Algol 60, but ISWIM; he asked with Forsythe before a further development in the Algol tradition.

Algol 68 was the name despite a complete redesign, which was a mixed response. Niklaus Wirth developed alternative Algol W, resulting in the development should be Pascal.

48309
de