- Atlas Autocode
Atlas Autocode (AA) was a
programming language developed around 1965 atManchester University for theAtlas Computer . It was developed by Tony Brooker and Derrick Morris as an improvement on theALGOL programming language s, removing some of Algol's poorer features such as "passing parameters by name" (which with Algol 60 meant not its usual meaning but passing the address of a short subroutine to recalculate the parametere each time it was mentioned). It featured explicitly typed variables, subroutines, and functions. The AA compiler generated range-checking for array accesses, and allowed an array to have dimensions that were determined at run-time (i.e. you could declare an array asinteger array Thing (i:j)
, wherei
andj
were calculated values). Direct machine coding was allowed.Atlas Autocode included a
complex
data type which would supportcomplex number s (for example, thesquare root of -1 ). A complex number was represented as an expression involvingi
, which was treated as a fixed complex constant = "i". This was partly because of pressure from theelectrical engineering department, which used complex numbers much to represent the behavior ofalternating current .This 'complex' feature was dropped when Atlas Autocode later morphed into the
Edinburgh IMP programming language. (Imp was an extension of AA and was notable for being used to write the EMASoperating system .)Keywords in AA were represented as being underlined. There was a mode "uppercasedelimiters", where all uppercase letters (outside strings) were treated as underlined lowercase.
In some versions (but not in the original Atlas version), for the sake of easy typing it was possible to strop keywords by placing a "
%
" sign in front of them, for example the keywordendofprogramme
could be typed as%end %of %programme
or%endofprogramme
There were no reserved words in the language. In the statement
if token=if then result = token
, there is both a keywordif
and a variable namedif
.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 in a trivial pre-lexing stage called "line reconstruction". What the compiler would see in the above example would be "iftoken=ifthenresult=token
".The syntax for expressions let the multiplication operator be omitted, e.g.
3a
was treated as3*a
, anda(i+j)
was treated asa*(i+j)
ifa
was not an array. In ambiguous usages, the longest possible name was taken, for exampleab
was not treated asa*b
, whether or nota
andb
had been declared.Atlas Autocode's syntax was influenced by the output device which the author had available, a Friden
Flexowriter . Consequently it allowed symbols like "½" for ".5" and the superscript 2 for "to the power of 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.) The language is described in detail in the [http://history.dcs.ed.ac.uk/archive/docs/atlasautocode.html Atlas Autocode Reference Manual] .Other Flexowriter characters that were found a use in Atlas Autocode were:
α
in floating-point numbers, e.g.3.56α-7
for modern3.56e-7
;β
to mean "the second half of an Atlas memory word";π
for the mathematicalpi number.When AA was ported to the
English Electric KDF9 computer, the character set was changed toISO and that compiler has been recovered from an old paper tape by the [http://history.dcs.ed.ac.uk/ 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 had many of the features of the original "Compiler Compiler". 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.Other
Autocode s were developed for theTitan (computer) (a prototype Atlas 2) at Cambridge and theFerranti Mercury.External links
* [http://history.dcs.ed.ac.uk/archive/bfoley/atlasautocode.html Atlas Autocode Reference Manual]
* [http://history.dcs.ed.ac.uk/archive/docs/CU-Rep-1-AA.pdf Programming In Atlas Autocode] - Edinburgh University Computer Unit Report #1 (1965) (PDF 1.2 format - you may need to right-click and save first, depending on your browser and version of Adobe reader)
Wikimedia Foundation. 2010.