Algol programming language
Algol is a computer programming language originally developed in 1958, which was named for the algorithmic process of definition of a programming problem. It is short for Algorithmic Language. In some ways, it was a reaction to Fortran and was a precursor to Pascal. It uses words to bracket blocks and was the first to use begin end pairs.
There were three main official versions of Algol: Algol 58, Algol 60, and Algol 68. Of these, Algol 60 was by far the most influential. (Algol 60 produced Algol W, which was used by Niklaus Wirth to develop Pascal.) Each of the official Algol versions is named after the year in which it was published.
Algol was developed jointly by a committee of European and American computer
scientists. It had at least three different syntaxes: a reference syntax, a
publication syntax, and an implementation syntax. The different syntaxes permitted it to use different keyword names, conventions for decimal points (commas vs. periods) for different languages.
Algol 60 was released in 1960. John Backus and Peter Naur both served on the committee which created it. Algol 60 inspired many languages that followed it; the canonical quote in this regard is C. A. R. Hoare's "Algol was a great improvement on its successors." The full quote is "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", but the aphoristic version is far more known. It is sometimes erroneously attributed to Edsger Dijkstra, which is understandable, as he served on the design committee as well and is equally known for pointed remarks.
The Burroughs Corporation's B5000 and its successors were and are stack machines designed to be programmed in an extended Algol; indeed their operating system, or MCP (Master Control Program) as they are called, is written in an extended Algol back in 1961. The Unisys Corporation still markets machines descended from the B5000 today, running the MCP and supporting several extended Algol compilers.
Algol 60 as officially defined had no I/O facilities; implementations necessarily had to add some, but they varied from one implementation to another. Algol 68 perhaps went overboard with its I/O (or "transput") facilities in reaction.
Algol 60 allowed for two types of parameter passing: call-by-value, and the innovation of call-by-name, which was later abandoned by its successor languages. Call-by-name had certain limitations in contrast to call-by-reference, making it an undesirable feature in 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.
John Backus developed the Backus normal form method of describing
programming languages specifically for Algol 58. It was revised and expanded by Peter Naur to the Backus-Naur form for Algol 60. Algol 68 was defined using a two-level grammar of the sort invented by Adriaan van Wijngaarden and which bears his name. The van Wijngaarden grammar uses a context-free grammar to generate an infinite set of productions that will recognize a particular Algol 68 program; it is able to express the kind of requirements that in many other programming language standards are labelled "semantics", expressed in often-ambiguous natural language prose, and implemented in compilers in ad hoc code attached to the formal language parser.
Code Sample (Hello World)
% the main program (this is a comment)
BEGIN
FILE F (KIND=REMOTE);
EBCDIC ARRAY E [1];
REPLACE E BY "HELLO WORLD!";
WHILE TRUE DO
WRITE (F, *, E)
END.
External links
- For more info about Algol 68, see http://vestein.arb-phys.uni-dortmund.de/~wb/RR/rrTOC.html.
- Charles Lindsey's wonderful and bittersweet paper on the development of Algol 68 in the second History of Programming Languages proceedings is well worth reading, and perhaps dispels some of the common myths about the language.
- A syntax summary of Algol-60 in BNF (Backus Normal Form).
Referenced By
3rd Generation Language | ADD 1 TO COBOL GIVING COBOL | Alan Perlis | Algol | Alphabetical list of programming languages | BASAIC programming language | BASIC | BASIC language | BASIC programming language | COBOL | COBOL language | COBOL programming language | Categorical list of programming languages | Computer programming language | Computing timeline 1950-1979 | Control flow | Control structure | D programming language | Dartmouth BASIC programming language | Egon Zakrajsek | Free-form language | GOTO | Generational list of programming languages | Go to | History of computing II | History of computing hardware (1960s-present) | History of computing hardware (1960s - present) | History of computing hardware II | J programming language | LISP | LISP programming language | Lexical environment | Lexical variable scoping | Lisp computer language | List of computing topics | List of programming languages | MOO programming language | PL/1 | PL/1 programming language | PL/I | PL/I programming language | PLI programming language | Pascal programming language | Program loop | ProgrammingLanguage | ProgrammingLanguages | Programming Languages | Programming language | Programming language/Timeline | Programming language timeline | Programming methodology | PythonLanguage | Python language | Python programming language | ROM BASIC programming language | SIMULA | Simula67 | Simula programming language | Static scoping | Tagged union | Third-generation programming language | Third Generation Language | Timeline of computing 1950-1979 | Timeline of programming languages | VHDL | VHDL-93 | VHSIC Hardware Description Language
|