Atlas Autocode (AA)
Original scans
)
) is a
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
developed around 1963 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 of Manchester is c ...
. 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 the ...
, 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 world map, maps of Earth or of a continent or region of Earth. Advances in astronomy have also resulted in atlases of the celestial sphere or of other planets.
Atlases have traditio ...
computer. The initial AA and AB compilers were written by Jeff Rohl and Tony Brooker using the Brooker-Morris
Compiler-compiler
In computer science, a compiler-compiler or compiler generator is a programming tool that creates a Parsing#Computer_languages, parser, interpreter (computer software), interpreter, or compiler from some form of formal description of a programm ...
, with a later hand-coded non-CC implementation (ABC) by Jeff Rohl.
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 (also procedure, method, subroutine, routine, or subprogram) is a callable unit of software logic that has a well-defined interface and behavior and can be invoked multiple times.
Callable units provide a ...
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 ...
means passing the
memory address
In computing, a memory address is a reference to a specific memory location in memory used by both software and hardware. These addresses are fixed-length sequences of digits, typically displayed and handled as unsigned integers. This numeric ...
of a short subroutine (a ''
thunk
In computer programming
Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by- ...
'') to recalculate a parameter each time it is mentioned.
The AA
compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
could generate range-checking for
array 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 computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers, machine code is the binaryOn nonb ...
, either to make an
inner loop
In computer programs, an important form of control flow is the Loop (computing), loop which causes a block of code to be executed more than once. A common idiom is to have a loop Nested loop, nested inside another loop, with the contained loop be ...
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
Electrical engineering is an engineering discipline concerned with the study, design, and application of equipment, devices, and systems that use electricity, electronics, and electromagnetism. It emerged as an identifiable occupation in the l ...
department, as complex numbers are used to represent the behavior of
alternating current
Alternating current (AC) is an electric current that 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 w ...
. The
imaginary unit
The imaginary unit or unit imaginary number () is a mathematical constant that is a solution to the quadratic equation Although there is no real number with this property, can be used to extend the real numbers to what are called complex num ...
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 operating system at the University of Edinburgh. The system went online in 1971.
EMAS was a powerful and efficient general purpose multi-user system which coped with many of the ...
(EMAS)
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
.
In addition to being notable as the progenitor of IMP and EMAS, AA is noted for having 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
In computer science, a recursive descent parser is a kind of top-down parser built from a set of mutually recursive procedures (or a non-recursive equivalent) where each such procedure implements one of the nonterminals of the grammar. Thus t ...
. The style of
parser
Parsing, syntax analysis, or syntactic analysis is a process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar by breaking it into parts. The term '' ...
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
Titan most often refers to:
* Titan (moon), the largest moon of Saturn
* Titans, a race of deities in Greek mythology
Titan or Titans may also refer to:
Arts and entertainment
Fictional entities
Fictional locations
* Titan in fiction, fiction ...
, a prototype Atlas 2 at Cambridge, and the
Ferranti
Ferranti International PLC or simply Ferranti was a UK-based electrical engineering and equipment firm that operated for over a century, from 1885 until its bankruptcy in 1993. At its peak, Ferranti was a significant player in power grid system ...
Mercury.
Syntax
Atlas Autocode's
syntax
In linguistics, syntax ( ) is the study of how words and morphemes combine to form larger units such as phrases and sentences. Central concerns of syntax include word order, grammatical relations, hierarchical sentence structure (constituenc ...
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 programming language, a reserved word (sometimes known as a reserved identifier) is a word that cannot be used by a programmer as an identifier, such as the name of a variable, function, or label – it is "reserved from use". In brief, an '' ...
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 Atlas memory
word
A word is a basic element of language that carries semantics, 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 consensus among linguist ...
'';
π
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 i ...
computer, the character set was changed to
International Organization for Standardization
The International Organization for Standardization (ISO ; ; ) is an independent, non-governmental, international standard development organization composed of representatives from the national standards organizations of member countries.
M ...
(ISO). That compiler has 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 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 programming language, a reserved word (sometimes known as a reserved identifier) is a word that cannot be used by a programmer as an identifier, such as the name of a variable, function, or label – it is "reserved from use". In brief, an '' ...
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.
References
External links
The main features of Atlas Autocode By R. A. Brooker, J. S. Rohl, and S. R. Clark
The Atlas Autocode Mini-Manualby W. F. Lunnon, G. Riding (July 1965)
Atlas Autocode Reference Manualby R.A. Brooker, J.S.Rohl (March 1965)
Mercury Autocode, Atlas Autocode and some Associated Matters.by Vic Forrington (Jan 2014)
Flowcharts for Atlas Autocode compiler on KDF9.
{{ALGOL programming
Ferranti
History of computing in the United Kingdom
Structured programming languages