Atlas Autocode
   HOME

TheInfoList



OR:

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 ...
developed around 1965 at the
University of Manchester , mottoeng = Knowledge, Wisdom, Humanity , established = 2004 – University of Manchester Predecessor institutions: 1956 – UMIST (as university college; university 1994) 1904 – Victoria University of Manchester 1880 – Victoria Univer ...
. 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 Ralph Anthony Brooker (22 September 1925 – 20 November 2019), was a British computer scientist known for developing the Mark 1 Autocode. He was educated at Emanuel School and graduated in Mathematics from Imperial College in 1945 and re ...
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 geographic ...
computer. The AA compiler was generated using the Brooker-Morris-Rohl Compiler-compiler. The word ''
Autocode Autocode is the name of a family of "simplified coding systems", later called programming languages, devised in the 1950s and 1960s for a series of digital computers at the Universities of Manchester, Cambridge and London. Autocode was a generic ...
'' 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 may ...
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. Su ...
of a short subroutine (a ''
thunk In computer programming, a thunk is a subroutine used to inject a calculation into another subroutine. Thunks are primarily used to delay a calculation until its result is needed, or to insert operations at the beginning or end of the other subro ...
'') 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 very ...
, 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 * I ...
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 form ...
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 which 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 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 whic ...
. 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 an ...
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 Edinburgh IMP is a development of Atlas Autocode, initially developed around 1966-1969 at the University of Edinburgh, Scotland. It is a general-purpose programming language which was used heavily for systems programming. Expressively, IMP is hi ...
. 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 t ...
(EMAS)
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
. 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 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 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
Autocode Autocode is the name of a family of "simplified coding systems", later called programming languages, devised in the 1950s and 1960s for a series of digital computers at the Universities of Manchester, Cambridge and London. Autocode was a generic ...
s 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, fictiona ...
, 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 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 ( constituency) ...
was largely similar to ALGOL, though it was influenced by the output device which the author had available, a
Friden Flexowriter The Friden Flexowriter produced by the Friden Calculating Machine Company, was a teleprinter, a heavy-duty electric typewriter capable of being driven not only by a human typing, but also automatically by several methods, including direct atta ...
. 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 re ...
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 an semantics, objective or pragmatics, practical semantics, meaning, can be used on its own, and is uninterruptible. Despite the fact that language speakers often have an intuitive grasp of w ...
''; π 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 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 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 re ...
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 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 ...
". 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 In computer science, scannerless parsing (also called lexerless parsing) performs tokenization (breaking a stream of characters into words) and parsing (arranging the words into phrases) in a single step, rather than breaking it up into a pipeli ...
, 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 In computer programming and computer science, "maximal munch" or "longest match" is the principle that when creating some construct, as much of the available input as possible should be consumed. The earliest known use of this term is by R.G.G. Cat ...
), 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