This was only partly true; ALGOL 68 did find use in several niche markets, notably in the United Kingdom where it was popular on International Computers Limited (ICL) machines, and in teaching roles.
Many languages of the 1970s trace their design specifically to ALGOL 68, selecting some features while abandoning others that were considered too complex or out-of-scope for given roles.
The language of the unrevised report.r0 Though European defence agencies (in Britain Royal Signals and Radar Establishment (RSRE)) promoted the use of ALGOL 68 for its expected security advantages, the American side of the NATO alliance decided to develop a different project, the language Ada, making its use obligatory for US defense contracts.
A report of the meeting noted two broadly supported themes, the introduction of strong typing and interest in Euler's concepts of 'trees' or 'lists' for handling collections.
[24][25] At the second meeting in October in France, three formal proposals were presented, Niklaus Wirth's ALGOL W along with comments about record structures by C.A.R.
[22] This seemingly simple task ultimately proved more difficult than expected, and the follow-up meeting had to be delayed six months.
When it met in April 1966 in Kootwijk, van Wijngaarden's draft remained incomplete and Wirth and Hoare presented a version using more traditional descriptions.
[26] As these approaches were explored, it became clear there was a difference in the way parameters were described that would have real-world effects, and while Wirth and Hoare protested that further delays might become endless, the committee decided to wait for van Wijngaarden's version.
Wirth then implemented their current definition as ALGOL W.[27] At the next meeting in Warsaw in October 1966,[28] there was an initial report from the I/O Subcommittee who had met at the Oak Ridge National Laboratory and the University of Illinois but had not yet made much progress.
The two proposals from the previous meeting were again explored, and this time a new debate emerged about the use of pointers; ALGOL W used them only to refer to records, while van Wijngaarden's version could point to any object.
To add confusion, John McCarthy presented a new proposal for operator overloading and the ability to string together and and or constructs, and Klaus Samelson wanted to allow anonymous functions.
Finally, at Banff, Alberta in September 1969, the project was generally considered complete and the discussion was primarily on errata and a greatly expanded Introduction to the Report.
[32] The effort took five years, burned out many of the greatest names in computer science, and on several occasions became deadlocked over issues both in the definition and the group as a whole.
The first implementation of the standard, based on the late-1968 draft Report, was introduced by the Royal Radar Establishment in the UK as ALGOL 68-R in July 1970.
This was, however, a subset of the full language, and Barry Mailloux, the final editor of the Report, joked that "It is a question of morality.
[35] A version similar to 68-R was introduced from Carnegie Mellon University in 1976 as 68S, and was again a one-pass compiler based on various simplifications of the original and intended for use on smaller machines like the DEC PDP-11.
– Koster.1968: On 20 December 1968, the "Final Report" (MR 101) was adopted by the Working Group, then subsequently approved by the General Assembly of UNESCO's IFIP for publication.
A unit may be a formula, an enclosed clause, a routine text or one of several technically needed constructs (assignation, jump, skip, nihil).
The basic data types (called modes in Algol 68 parlance) are real, int, compl (complex number), bool, char, bits and bytes.
The prelude constants max real and min long int are provided to adapt programs to different implementations.
For example: UNION(INT,REAL) var := 1 IF ~ THEN ... FI and FROM ~ BY ~ TO ~ WHILE ~ DO ... OD etc For more details about Primaries, Secondaries, Tertiary & Quaternaries refer to Operator precedence.
This was considered the "universal" loop, the full syntax is: The construct have several unusual aspects: Subsequent "extensions" to the standard Algol68 allowed the TO syntactic element to be replaced with UPTO and DOWNTO to achieve a small optimisation.
Matrices can be sliced either way, e.g.: ALGOL 68 supports multiple field structures (STRUCT) and united modes.
For an example of all this, here is the traditional linked list declaration: Usage example for UNION CASE of NODE: Procedure (PROC) declarations require type specifications for both the parameters and the result (VOID if none): or, using the "brief" form of the conditional statement: The return value of a proc is the value of the last expression evaluated in the procedure.
Therefore the following expression can never be made legal: Hence the need for separate constructs not subject to the normal coercion rules for operands to operators.
Examples include "≮" and "≯" for templates, the OUTTYPE/INTYPE for crude duck typing, and the STRAIGHTOUT and STRAIGHTIN operators for "straightening" nested arrays and structures This sample program implements the Sieve of Eratosthenes to find all the prime numbers that are less than 100.
For example, all or some of the following may be available programming representations: All implementations must recognize at least POINT, UPPER and RES inside PRAGMAT sections.
After the revision of the report, some extensions to the language have been proposed to widen the applicability: So far, only partial parametrisation has been implemented, in Algol 68 Genie.
However, it omitted many of the more complex features, and replaced the basic modes with a set of data types that mapped directly to the 2900 Series hardware architecture.
In ALGOL 68S(S) from Carnegie Mellon University the power of parallel processing was improved by adding an orthogonal extension, eventing.