Atlas Autocode (AA)
Original scans
)
) is a
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming l ...
developed around 1965 at the
University of Manchester
The University of Manchester is a public university, public research university in Manchester, England. The main campus is south of Manchester city centre, Manchester City Centre on Wilmslow Road, Oxford Road. The university owns and operates majo ...
. A variant of the language
ALGOL
ALGOL (; short for "Algorithmic Language") is a family of imperative computer programming languages originally developed in 1958. ALGOL heavily influenced many other languages and was the standard method for algorithm description used by th ...
, it was developed by
Tony Brooker and Derrick Morris for the
Atlas
An atlas is a collection of maps; it is typically a bundle of maps of Earth or of a region of Earth.
Atlases have traditionally been bound into book form, but today many atlases are in multimedia formats. In addition to presenting geograp ...
computer. The AA compiler was generated using the Brooker-Morris-Rohl
Compiler-compiler
In computer science, a compiler-compiler or compiler generator is a programming tool that creates a parser, interpreter, or compiler from some form of formal description of a programming language and machine.
The most common type of compiler ...
.
The word ''
Autocode'' was basically an early term for ''programming language''. Different autocodes could vary greatly.
Features
AA was a
block structured language that featured explicitly typed
variables,
subroutine
In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.
Functions ma ...
s, and functions. It omitted some ALGOL features such as ''
passing parameters by name'', which in
ALGOL 60
ALGOL 60 (short for ''Algorithmic Language 1960'') 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, representing a k ...
means passing the
memory address
In computing, a memory address is a reference to a specific memory location used at various levels by software and hardware. Memory addresses are fixed-length sequences of digits conventionally displayed and manipulated as unsigned integers. ...
of a short subroutine (a ''
thunk'') to recalculate a parameter each time it is mentioned.
The AA
compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
could generate range-checking for
array
An array is a systematic arrangement of similar objects, usually in rows and columns.
Things called an array include:
{{TOC right
Music
* In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
accesses, and allowed an array to have dimensions that were determined at
runtime, i.e., an array could be declared as
integer array Thing (i:j)
, where
i
and
j
were calculated values.
AA high-level routines could include
machine code
In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a ver ...
, either to make an
inner loop Inner loop may refer to:
* Inner loop in computer programs
* Inner Loop (Phoenix), a section of Interstate 10 in downtown Phoenix, Arizona, United States
* Inner Loop (Rochester), an expressway around downtown Rochester, New York, United States
*In ...
more efficient or to effect some operation which otherwise cannot be done easily.
AA included a
complex
data type
to represent
complex number
In mathematics, a complex number is an element of a number system that extends the real numbers with a specific element denoted , called the imaginary unit and satisfying the equation i^= -1; every complex number can be expressed in the for ...
s, partly because of pressure from the
electrical engineering department, as complex numbers are used to represent the behavior of
alternating current
Alternating current (AC) is an electric current which periodically reverses direction and changes its magnitude continuously with time in contrast to direct current (DC) which flows only in one direction. Alternating current is the form in which ...
. The
imaginary unit
The imaginary unit or unit imaginary number () is a solution to the quadratic equation x^2+1=0. Although there is no real number with this property, can be used to extend the real numbers to what are called complex numbers, using addition a ...
square root of -1 was represented by
i
, which was treated as a fixed complex constant = ''i''.
The
complex
data type was dropped when Atlas Autocode later evolved into the language
Edinburgh IMP. IMP was an extension of AA and was used to write the
Edinburgh Multiple Access System
The Edinburgh Multi-Access System (EMAS) was a mainframe computer
A mainframe computer, informally called a mainframe or big iron, is a computer used primarily by large organizations for critical applications like bulk data processing ...
(EMAS)
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
.
AA'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
Parsing, syntax analysis, or syntactic analysis is the process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar. The term ''parsing'' comes from Lati ...
used in the Compiler Compiler was in use continuously at Edinburgh from the 60's until almost the year 2000.
Other
Autocodes were developed for the
Titan computer, a prototype Atlas 2 at Cambridge, and the
Ferranti
Ferranti or Ferranti International plc was a UK electrical engineering and equipment firm that operated for over a century from 1885 until it went bankrupt in 1993. The company was once a constituent of the FTSE 100 Index.
The firm was known ...
Mercury.
Syntax
Atlas Autocode's
syntax was largely similar to ALGOL, though it was influenced by the output device which the author had available, a
Friden Flexowriter. Thus, it allowed symbols like
½
for
.5
and the superscript
2 for ''to the power of 2''. The Flexowriter supported overstriking and thus, AA did also: 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 aforementioned underlining of
reserved word
In a computer language, a reserved word (also known as a reserved identifier) is a word that cannot be used as an identifier, such as the name of a variable, function, or label – it is "reserved from use". This is a syntactic definition, and a r ...
s (keywords) could also be done using overstriking. The language is described in detail in the Atlas Autocode Reference Manual.
Other Flexowriter characters that were found a use in AA were:
α
in floating-point numbers, ''e.g.'',
3.56α-7
for modern
3.56e-7
;
β
to mean ''the second half of a
48-bit
In computer architecture, 48-bit integers can represent 281,474,976,710,656 (248 or 2.814749767×1014) discrete values. This allows an unsigned binary integer range of 0 through 281,474,976,710,655 (248 − 1) or a signed two's complement ra ...
Atlas memory
word
A word is a basic element of language that carries an objective or practical meaning, can be used on its own, and is uninterruptible. Despite the fact that language speakers often have an intuitive grasp of what a word is, there is no consen ...
'';
π
for the mathematical constant
pi.
When AA was ported to the
English Electric KDF9
KDF9 was an early British 48-bit computer designed and built by English Electric (which in 1968 was merged into International Computers Limited (ICL)). The first machine came into service in 1964 and the last of 29 machines was decommissioned ...
computer, the character set was changed to
International Organization for Standardization
The International Organization for Standardization (ISO ) is an international standard development organization composed of representatives from the national standards organizations of member countries. Membership requirements are given in Ar ...
(ISO) and that compiler has been recovered from an old paper tape by th
Edinburgh Computer History Projectand is available online, as is a high-quality scan of the original Edinburgh version of the Atlas Autocode manual.
Keywords in AA were distinguishable from other text by being underlined, which was implemented via overstrike in the Flexowriter (compare to bold in ALGOL). There were also two
stropping regimes. First, there was an "uppercasedelimiters" mode where all uppercase letters (outside strings) were treated as underlined lowercase. Second, in some versions (but not in the original Atlas version), it was possible to strop keywords by placing a "
%
" sign in front of them, for example the keyword
endofprogramme
could be typed as
%end %of %programme
or
%endofprogramme
. This significantly reduced typing, due to only needing one character, rather than overstriking the whole keyword. As in ALGOL, there were no
reserved word
In a computer language, a reserved word (also known as a reserved identifier) is a word that cannot be used as an identifier, such as the name of a variable, function, or label – it is "reserved from use". This is a syntactic definition, and a r ...
s in the language as keywords were identified by underlining (or stropping), not by recognising reserved character sequences. In the statement
if token=if then result = token
, there is both a keyword
if
and a variable named
if
.
As in ALGOL, AA allowed spaces in variable names, such as
integer previous value
. Spaces were not significant and were removed before parsing in a trivial pre-lexing stage called "
line reconstruction". What the compiler would see in the above example would be "
iftoken=ifthenresult=token
". Spaces were possible due partly to keywords being distinguished in other ways, and partly because the source was processed by
scannerless parsing, without a separate lexing phase, which allowed the lexical syntax to be context-sensitive.
The syntax for expressions let the multiplication operator be omitted, e.g.,
3a
was treated as
3*a
, and
a(i+j)
was treated as
a*(i+j)
if
a
was not an array. In ambiguous uses, the longest possible name was taken (
maximal munch), for example
ab
was not treated as
a*b
, whether or not
a
and
b
had been declared.
In the original Atlas Autocode for the Atlas computer, Atlas machine code instructions could be interpolated between the AA statements.
References
{{ALGOL programming
Ferranti
History of computing in the United Kingdom
Structured programming languages