ALGOL is a computer programming language that was created in 1958–60 by an international committee of the Association of Computing Machinery (ACM) chaired by Alan J. Perlis of Carnegie Mellon University for publishing algorithms and performing calculations. ALGOL, like LISP, included recursive subprograms, which were procedures that could be used to solve an issue by reducing it to a smaller problem of the same type. ALGOL stands for algorithmic language and was previously known as IAL. It’s a group of portable programming languages for scientific computations that influenced a lot of other languages. For nearly 30 years, the ACM has utilised ALGOL as the standard approach for generating algorithms in textbooks and academics.
Features of ALGOL:
- BNF Notation – Backus-Naur Form is a formal means for describing the syntax of a computer language. Think of it as short-hand for computer languages.
- Statement Blocks – This is a syntactic means for grouping a series of programming statements together. Think of this like putting a group of related items in a box, and treating the box as a unit.
- Parameter Passing – Specifically, there are two methods for passing information to and from a subprogram, pass by value, and pass by reference. Think of these as a way to protect information entering a subprogram from modification, one sends a copy, the other sends the actual data.
- Dynamic Arrays – These are a list of values where the size of the list can be determined at run-time. Think of these as flexible arrays, arrays that adjust to the need.
- Reserved Words – These are predefined words that have special meaning to a computer language. Think of these like your name. It represents you and the things you can do.
Major ALGOL specifications:
ALGOL 58
- ALGOL 58, formerly known as IAL, is a member of the ALGOL programming language family. ALGOL 60 quickly surpassed it as an early compromise design.
- The core concept of the compound statement was introduced in ALGOL 58, but it was limited to control flow only, and it was not bound to identifier scope like Algol 60’s blocks were.
- According to Perlis, the language was first offered as IAL (International Algebraic Language), but this was rejected as a “‘unspeakable’ and pretentious acronym.”
- IBM attempted to implement ALGOL 58, however the development was shortly abandoned due to rivalry with FORTRAN.
- BALGOL, a version for the Burroughs 220, evolved along similar lines, but preserved much of ALGOL 58’s original personality.
- The major contribution of ALGOL 58 was to later languages; it served as the foundation for JOVIAL, MAD, NELIAC, and ALGO.
ALGOL 58’s influence on ALGOL 60:
- Both IAL and ALGOL 60 support arrays with arbitrary lower and higher subscript boundaries, as well as integer expressions to create subscript bounds.
- Procedure declarations and their related identifier scopes can be nested in both IAL and ALGOL 60.
- ALGOL 60 does not enable numeric statement labels, whereas IAL does.
- A switch designator exists in both IAL and ALGOL 60, although it is unrelated to the switch statement in C and other languages.
- The IAL if-statement does not have a then-clause or an else-clause; instead, it protects the next statement. IAL has an if either-statement that allows you to test several conditions in a neat way.
- Both were superseded by ALGOL’s if-then construct, which included the ambiguous “dangling-else.”
ALGOL 60
ALGOL 60 (short for Algorithmic Language 1960) is a computer programming language from the ALGOL family. It came after ALGOL 58, which introduced code blocks and the begin and end pairs for delimiting them, marking a significant step forward in the development of organised programming. The first language to provide nested function declarations with the lexical scope was ALGOL 60. Many additional programming languages arose from it, including CPL, Simula, BCPL, B, Pascal, and C. ALGOL 60 principles were used to programme almost every computer of the time.
For parameter passing, ALGOL 60 provides two evaluation strategies: call-by-value and call-by-name. For each formal parameter, the procedure declaration stated which was to be used: value supplied for call-by-value and omitted for call-by-name. In contrast to call-by-reference, calling by name has certain implications.
ALGOL 68 implementations:
- The Royal Radar Establishment in the United Kingdom presented ALGOL 68-R in July 1970 as the first implementation of the standard, based on the late-1968 draught Report. This was, however, only a portion of the phrase.
- Despite its popularity on ICL computers, this version became a widely used language in military code, particularly in the United Kingdom.
- CDC Netherlands released the first comprehensive implementation of the language in 1974 for the Control Data mainframe series.
There are three open-source Algol 68 implementations:
- Marcel van der Veer wrote -a68g, GPLv3
- algol 68 toc, an ALGOL 68RS open-source software port.
- Jose E. Marchesi wrote an experimental Algol68 frontend for GCC.
Conclusion:
ALGOL is a computer programming language to provide lexical scope nested function declarations. Furthermore, it was the first programming language to pay close attention to formal language definition, and it was the first to introduce Backus–Naur form, a key formal grammar notation for language design, through the Algol 60 Report.