H ? « »

Language peer sets for Atlas Autocode:
United Kingdom
United Kingdom/1964
Designed 1964
1960s languages
Third generation
Early Cold War
Genus Early Autocodes
Early Autocodes
UK historic algorithmic systems
Early Autocodes/1964
UK historic algorithmic systems/1964
Early Autocodes/United Kingdom
Autocodes/United Kingdom
UK historic algorithmic systems/United Kingdom

Atlas Autocode(ID:1840/atl003)

Algol-like high-level Autocode 

alternate simple view
Country: United Kingdom
Designed 1964
Genus: Early Autocodes
Sammet category: Multi-purpose

Atlas Autocode (AA) was a programming language developed at Manchester University for the Atlas Computer. It was developed by Tony Brooker as an improvement on the ALGOL programming languages, removing some of Algol's poorer features such as passing parameters by name. It featured explicitly typed variables, subroutines and functions. The AA compiler generated range-checking for array accesses, and the language allowed an array to have dimensions that were determined at run-time (i.e. you could declare an array as %integer %array Thing (i:j), where i and j were calculated values). Atlas Autocode included a "%complex" data type which would support imaginary numbers (eg the square root of -1), a feature which was dropped when the language later morphed into the Edinburgh IMP programming language. (Imp was an extension of AA and was notable for being used to write the EMAS operating system.)

Keywords in AA were represented as being underlined, however for the sake of easy typing it was possible to strop keywords by placing a "%" sign in front of them. There were no reserved words in the language. For example "%if token=if %then %result = token" refers to a variable called "if".

Because of this keyword stropping, it was possible for AA to allow spaces in variable names, such as "%integer previous value". Spaces were not significant and were removed prior to parsing.

The syntax for expressions was very close to mathematical standards and allowed implicit multiplication such as "z = 3x + y" as an alternative to the more common "z = x * 3 + y".

Atlas Autocode's syntax was influenced by the output device which the author had available, a Flexowriter. Consequently it allowed symbols like "1\over 2" and superscripts for "i^2". The flexowriter supported overstriking and therefore AA did as well - up to three characters could be overstruck as a single symbol. For example the character set had no "^" symbol, so exponentiation was an overstrike of "|" and "*". (The underlining of keywords mentioned above could also be done using overstriking.)

When AA was ported to the KDF-9 computer, the character set was changed to ISO and that compiler has actually been recovered from an old paper tape by the Edinburgh Computer History Project and is available online, as is a high-quality scan of the original Atlas Autocode manual.

Atlas Autocode's second-greatest claim to fame (after being the progenitor of Imp and EMAS) was that it was the original "Compiler Compiler" of which "Yacc" was a later derivative. A variant of the AA compiler included run-time support for a top-down recursive descent parser. The style of parser used in the Compiler Compiler was in use continuously at Edinburgh from the 60's until almost the turn of the millennium.

Autocode for the Ferranti Atlas, which may have been the first commercial machine with hardware-paged virtual memory. The Atlas was based on the Manchester MUSE (for MIcroSEcond) computer, which was designed to put British large-scale back to international competitivity. Whereas other autocodes were basically symbolic assembly languges, Atlas Autocode was high-level and block-structured, resembling a cross between FORTRAN and ALGOL 60. It had call-by value, loops, declarations, complex numbers, pointers, heap and stack storage generators, dynamic arrays, extensible syntax, etc.

Not an Algol though - drew heavily on the other Autocodes and the experience they gave

Had first complier compiler extensions thanks to Tony Brooker

Related languages
ALGOL 60 Revised Atlas Autocode   Influence
Compiler-Compiler Atlas Autocode   Incorporated features of
EMA Atlas Autocode   Evolution of
Atlas Autocode Atlas Commercial Language   Based on
Atlas Autocode ATLAS LISP   Written using
Atlas Autocode CLAM   Written using
Atlas Autocode IMP   Augmentation of
Atlas Autocode MU5 Autocode   Evolution of

  • DJ Howarth, RB Payne and FH Sumner (1961) DJ Howarth, RB Payne and FH Sumner "The Manchester University Atlas operating system part II: users' description" pp226-229 Abstract Online copy
          in (1961) The Computer Journal 4(3) October 1961
  • T Kilburn, DJ Howarth, RB Payne and FH Sumner (1961) T Kilburn, DJ Howarth, RB Payne and FH Sumner "The Manchester University Atlas operating system part I: internal organization" pp222-225 Abstract Online copy
          in (1961) The Computer Journal 4(3) October 1961
  • J.S. Rohl, (1964) J.S. Rohl, "An Introduction to ATLAS Autocode"
          in (1961) The Computer Journal 4(3) October 1961
  • G.P. Mitchell, A.J. Willmott, (1965) G.P. Mitchell, A.J. Willmott, "Programming a computer in Atlas Autocode", Manchester University Press, Liverpool, 1965
          in (1961) The Computer Journal 4(3) October 1961
  • W.F. Lunnon and G. Riding, (1965) W.F. Lunnon and G. Riding, "The ATLAS Autocode Mini Manual", Manchester University Computer Science Department, July 1965
          in (1961) The Computer Journal 4(3) October 1961
  • Brooker, R.A., Morris, D. and Rohl, J. S. (1967) Brooker, R.A., Morris, D. and Rohl, J. S. "Compiler Compiler facilities in Atlas Autocode" pp350-352 Abstract Online copy
          in (1967) The Computer Journal 9(4) 1967
  • Brooker, RA (1967) Brooker, RA "Atlas Austocode" Manchester University 1967 Online copy Extract: Statements
          in (1967) The Computer Journal 9(4) 1967
  • McEwan, AT (1967) McEwan, AT "An Atlas Autocode to ALGOL 60 translator" pp353-359 Abstract Online copy
          in (1967) The Computer Journal 9(4) 1967
  • Clark (1968) Clark, S. R. [Letters to the editor: Endorsing the Illinois post mortem dump] CACM 11(03) March 1968
          in (1967) The Computer Journal 9(4) 1967
  • Feldman, Jerome and Gries, David (1968) Feldman, Jerome and Gries, David "Translator writing systems" p77-113 Abstract
          in [ACM] (1968) [ACM] CACM 11(02) (February 1968)
  • Rohl, JS and Coringley, G (1970) Rohl, JS and Coringley, G "List processing facilities in Atlas Autocode" pp20-24 Abstract Online copy
          in (1970) The Computer Journal 13(1) January 1970
  • Evershed and Rippon (1971) Evershed, DG and Rippon, GE "High level languages for low level users" pp. 87-90 Abstract
          in (1971) The Computer Journal 14(1) 1971
  • Lavington, SH (1978) Lavington, SH "The Manchester Mark I and Atlas: a Historical Perspective" pp4-12 Abstract Extract: Atlas Autocode
          in [ACM] (1978) [ACM] CACM 21(01) (January 1978)
  • Rohl, J S (2000) Rohl, J S "The influence of programming languages on the design of MU5" Online copy Abstract Extract: Extract: Facilities of Atlas that we could not utilise
          in [ACM] (1978) [ACM] CACM 21(01) (January 1978)
  • Ponton, Jack (2002) Ponton, Jack "The Autocodes: Sirius to IMP, a User's Perspective" Online copy
          in [ACM] (1978) [ACM] CACM 21(01) (January 1978)
    Search in: Google  Google scholar  World Cat  Yahoo  Overture  DBLP  Monash bib  NZ  IEEE  ACM portal  CiteSeer  CSB  ncstrl  jstor  Bookfinder