Interactive ALGOL 68

Last updated

The Interactive ALGOL 68 compiler for ALGOL 68 was made available by Peter Craven of Algol Applications from 1984. [1] Then in 1994 from OCCL (Oxford and Cambridge Compilers Ltd) until 2004. [2]

ALGOL 68 programming language

ALGOL 68 is an imperative computer programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously defined syntax and semantics.

Contents

Platforms

Inmos International plc and two operating subsidiaries, Inmos Limited (UK) and Inmos Corporation (US), was a British semiconductor company founded by Iann Barron, Richard Petritz, and Paul Schroeder in July 1978. Inmos Limited’s head office and design office were at Aztec West business park in Bristol, England.

Transputer

The transputer is a series of pioneering microprocessors from the 1980s, featuring integrated memory and serial communication links, intended for parallel computing. They were designed and produced by Inmos, a semiconductor company based in Bristol, United Kingdom.

Linux Family of free and open-source software operating systems based on the Linux kernel

Linux is a family of free and open-source software operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution.

Extensions to standard ALGOL 68

  1. Ability to include source code, and versions of source code.
  2. Nestable comments
  3. FORALL syntactic element for looping over arrays.
  4. ANYMODE a union of all MODEs known to the compiler, and hence dynamic typing.
  5. Enhanced coercions (casting) allowing stringer then "strong" coercions.
  6. Enstructuring automatically coerces a variable from type to struct(type)
  7. Conforming coerces UNION (THING, MOODS) to THING, but if that is not the current mood of the union, then a run-time error will be generated.
  8. Library interface to the native operating system and other libraries.
  9. The operator SIZE
  10. Pseudo-operators ANDTH and OREL, and ANF and ORF for Short-circuit evaluation of Boolean expressions.
  11. Arrays can be slices with stride to select a subset of elements.
  12. MOID is treated differently.

Example of code

MODULE vectors BEGIN     INT dim=3;     MODE VECTOR = [dim]REAL;     OP + = (VECTOR a, b) VECTOR: ( VECTOR out; FOR i FROM LWB a TO UPB a DO out:=a[i]+b[i] OD; out ),        - = (VECTOR a, b) VECTOR: ( VECTOR out; FOR i FROM LWB a TO UPB a DO out:=a[i]-b[i] OD; out ),        DOT = (VECTOR a, b) REAL: ( REAL out:=0; FOR i FROM LWB a TO UPB a DO out+:=a[i]*b[i] OD; out ); END KEEP VECTOR, +, -, DOT 

Restrictions to the language from the standard ALGOL 68

  1. Variable, Modes and Operators must be declared before use.
  2. Anonymous procedure may use rows-declarer as a parameter.
  3. No transient subnames of flexible arrays.
  4. No formatted Transput (or format-texts).
  5. Restricted use of straightening of multiple values during Transput.
  6. Limited use of BYTES, BITS and BOOL.
  7. restricted use of labels to follow EXIT statements.

See also

Related Research Articles

Mary was a programming language designed and implemented by RUNIT at Trondheim, Norway in the 1970s. It borrowed many features from ALGOL 68 but was designed for machine-oriented programming.

Pascal is an imperative and procedural programming language, which Niklaus Wirth designed in 1968–69 and published in 1970, as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named in honor of the French mathematician, philosopher and physicist Blaise Pascal.

MAD is a programming language and compiler for the IBM 704 and later the IBM 709, IBM 7090, IBM 7040, UNIVAC 1107, UNIVAC 1108, Philco 210-211, and eventually the IBM S/370 mainframe computers. Developed in 1959 at the University of Michigan by Bernard Galler, Bruce Arden and Robert M. Graham, MAD is a variant of the ALGOL language. It was widely used to teach programming at colleges and universities during the 1960s and played a minor role in the development of CTSS, Multics, and the Michigan Terminal System computer operating systems.

x86-64 64-bit version of the x86 instruction set

x86-64 is the 64-bit version of the x86 instruction set. It introduces two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging mode. With 64-bit mode and the new paging mode, it supports vastly larger amounts of virtual memory and physical memory than is possible on its 32-bit predecessors, allowing programs to store larger amounts of data in memory. x86-64 also expands general-purpose registers to 64-bit, as well extends the number of them from 8 to 16, and provides numerous other enhancements. Floating point operations are supported via mandatory SSE2-like instructions, and x87/MMX style registers are generally not used ; instead, a set of 32 vector registers, 128 bits each, is used. In 64-bit mode, instructions are modified to support 64-bit operands and 64-bit addressing mode. The compatibility mode allows 16- and 32-bit user applications to run unmodified coexisting with 64-bit applications if the 64-bit operating system supports them. As the full x86 16-bit and 32-bit instruction sets remain implemented in hardware without any intervening emulation, these older executables can run with little or no performance penalty, while newer or modified applications can take advantage of new features of the processor design to achieve performance improvements. Also, a processor supporting x86-64 still powers on in real mode for full backward compatibility.

Burroughs large systems

In the 1970s, Burroughs Corporation was organized into three divisions with very different product line architectures for high-end, mid-range, and entry-level business computer systems. Each division's product line grew from a different concept for how to optimize a computer's instruction set for particular programming languages. The Burroughs Large Systems Group designed large mainframes using stack machine instruction sets with dense syllables and 48-bit data words. The first such design is the B5000 in 1961. It is optimized for running ALGOL 60 extremely well, using simple compilers. It evolved into the B5500. Subsequent major redesigns include the B6500/B6700 line and its successors, and the separate B8500 line. 'Burroughs Large Systems' referred to all of these product lines together, in contrast to the COBOL-optimized Medium Systems or the flexible-architecture Small Systems (B1000).

In computer science, a for-loop is a control flow statement for specifying iteration, which allows code to be executed repeatedly. Various keywords are used to specify this statement: descendants of ALGOL use "for", while descendants of Fortran use "do". There are other possibilities, for example COBOL which uses "PERFORM VARYING".

In computer programming, array slicing is an operation that extracts a subset of elements from an array and packages them as another array, possibly in a different dimension from the original.

ALGOL 60 is a member of the ALGOL family of computer programming languages. It followed on from ALGOL 58 which had introduced code blocks and the begin and end pairs for delimiting them. ALGOL 60 was the first language implementing nested function definitions with lexical scope. It gave rise to many other programming languages, including CPL, Simula, BCPL, B, Pascal and C.

The language was originally called Z70 and was subsequently morphed into ALGOL 68. ALGOL68C was initially built to develop and program the CAMbridge ALgebra system a.k.a. CAMAL. The initial compiler was written in PSYCO that was implemented by J.H. Mathewman at Cambridge. The compiler and language were initially developed by Stephen Bourne and Michael Guy as a dialect of ALGOL 68.

The computer programming languages C and Pascal have similar times of origin, influences, and purposes. Both were used to design their own compilers early in their lifetimes. The original Pascal definition appeared in 1969 and a first compiler in 1970. The first version of C appeared in 1972.

ALGOL 68-R was the first implementation of the Algorithmic language ALGOL 68.

C++ doesn't have:

ALGOL 68RS is the second ALGOL 68 compiler written by I.F. Currie and J.D. Morrison at the Royal Signals and Radar Establishment. Unlike the earlier ALGOL 68R it was designed as a portable compiler and implemented the language of the revised Report.

In computer programming, a variable-length array (VLA), also called variable-sized, runtime-sized, is an array data structure whose length is determined at run time . In C, the VLA is said to have a variably modified type that depends on a value.

Comparison of programming languages is a common topic of discussion among software engineers. Basic instructions of several programming languages are compared here.

FutureBASIC free BASIC compiler for Apple Inc.s Macintosh

FutureBasic is a free BASIC compiler for Apple Inc.'s Macintosh.

Language support for array types may include certain built-in array data types, some syntactic constructions that the programmer may use to define such types and declare array variables, and special notation for indexing array elements. For example, in the Pascal programming language, the declaration type MyTable = array [1..4,1..2] of integer, defines a new array data type called MyTable. The declaration var A: MyTable then defines a variable A of that type, which is an aggregate of eight elements, each being an integer variable identified by two indices. In the Pascal program, those elements are denoted A[1,1], A[1,2], A[2,1],… A[4,2]. Special array types are often defined by the language's standard libraries.

References

  1. "AB52.3.1: Survey of Viable ALGOL 68 Implementations". Archived from the original on September 27, 2007. Retrieved April 26, 2007.
  2. "Oxford and Cambridge Compilers Ltd Home Page". Archived from the original on June 12, 2004. Retrieved April 26, 2007.