HOME

TheInfoList



OR:

Autocode is the name of a family of "simplified coding systems", later called
programming languages A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their syntax (form) and semantics (meaning), usually defined by a formal language. Languages usually provide features ...
, devised in the 1950s and 1960s for a series of
digital computer A computer is a machine that can be programmed to automatically carry out sequences of arithmetic or logical operations (''computation''). Modern digital electronic computers can perform generic sets of operations known as ''programs'', wh ...
s at the Universities of
Manchester Manchester () is a city and the metropolitan borough of Greater Manchester, England. It had an estimated population of in . Greater Manchester is the third-most populous metropolitan area in the United Kingdom, with a population of 2.92&nbs ...
,
Cambridge Cambridge ( ) is a List of cities in the United Kingdom, city and non-metropolitan district in the county of Cambridgeshire, England. It is the county town of Cambridgeshire and is located on the River Cam, north of London. As of the 2021 Unit ...
and
London London is the Capital city, capital and List of urban areas in the United Kingdom, largest city of both England and the United Kingdom, with a population of in . London metropolitan area, Its wider metropolitan area is the largest in Wester ...
. Autocode was a generic term; the autocodes for different machines were not necessarily closely related as are, for example, the different versions of the single language Fortran. Today the term is used to refer to the family of early languages descended from the
Manchester Mark 1 The Manchester Mark 1 was one of the earliest stored-program computers, developed at the Victoria University of Manchester, England from the Manchester Baby (operational in June 1948). Work began in August 1948, and the first version was operat ...
autocoder systems, which were generally similar. In the 1960s, the term autocoders was used more generically as to refer to any
high-level programming language A high-level programming language is a programming language with strong Abstraction (computer science), abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ''elements'', be ea ...
using a
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 ...
. Examples of languages referred to as autocodes are
COBOL COBOL (; an acronym for "common business-oriented language") is a compiled English-like computer programming language designed for business use. It is an imperative, procedural, and, since 2002, object-oriented language. COBOL is primarily ...
and Fortran.


Glennie's Autocode

The first autocode and its compiler were developed by Alick Glennie in 1952 for the Mark 1 computer at the University of Manchester and is considered by some to be the first compiled programming language. His main goal was increased comprehensibility in the programming of Mark 1 machines, which were known for their particularly abstruse machine code. Although the resulting language was much clearer than the machine code, it was still very machine dependent. Below is an example of Glennie's Autocode function which calculates the formula: f(t) = \sqrt + 5t^3. The example omits necessary scaling instruction needed to place integers into variables and assumes that results of multiplication fit into lower accumulator. c@VA t@IC x@½C y@RC z@NC INTEGERS +5 →c # Put 5 into c →t # Load argument from lower accumulator # to variable t +t TESTA Z # Put , t, into lower accumulator -t ENTRY Z SUBROUTINE 6 →z # Run square root subroutine on # lower accumulator value # and put the result into z +tt →y →x # Calculate t^3 and put it into x +tx →y →x +z+cx CLOSE WRITE 1 # Put z + (c * x) into # lower accumulator # and return User's manual of Glennie's Autocode Compiler mentioned that "the loss of efficiency is no more than 10%". Impact of Glennie's Autocode on other Manchester users' programming habits was negligible. It wasn't even mentioned in Brooker's 1958 paper called "The Autocode Programs developed for the Manchester University Computers".


Mark 1 Autocode

The second autocode for the Mark 1 was planned in 1954 and developed by R. A. Brooker in 1955 and was called the "Mark 1 Autocode". The language was nearly machine-independent and had floating-point arithmetic, unlike the first one. On the other hand it allowed only one operation per line, offered few mnemonic names and had no way to define user subroutines. An example code which loads array of size 11 of floating-point numbers from the input would look like this n1 = 1 1 vn1 = I reads input into v [1 n1 = n1 + 1 j1,11 ≥ n1 jumps to 1 if n[1">[1.html" ;"title="[1">[1 n1 = n1 + 1 j1,11 ≥ n1 jumps to 1 if n[1≤ 11 Brooker's Autocode removed two main difficulties of Mark 1's programmer: scaling and management of two-level storage. Unlike its predecessor it was heavily used.Knuth, p. 65


Later Autocodes

Brooker also developed an autocode for the Ferranti Mercury in the 1950s in conjunction with the University of Manchester. ''Mercury Autocode'' had a limited repertoire of Variable (programming), variables a-z and a'-z' and, in some ways resembled early versions of the later
Dartmouth BASIC Dartmouth BASIC is the original version of the BASIC programming language. It was designed by two professors at Dartmouth College, John G. Kemeny and Thomas E. Kurtz. With the underlying Dartmouth Time-Sharing System (DTSS), it offered an interac ...
language. It pre-dated
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 ...
, having no concept of
stack Stack may refer to: Places * Stack Island, an island game reserve in Bass Strait, south-eastern Australia, in Tasmania’s Hunter Island Group * Blue Stack Mountains, in Co. Donegal, Ireland People * Stack (surname) (including a list of people ...
s and hence no
recursion Recursion occurs when the definition of a concept or process depends on a simpler or previous version of itself. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in m ...
or dynamically-allocated
arrays 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 ...
. In order to overcome the relatively small store size available on Mercury, large programs were written as distinct "chapters", each of which constituted an overlay. Some skill was required to minimise time-consuming transfers of control between chapters. This concept of overlays from
drum The drum is a member of the percussion group of musical instruments. In the Hornbostel–Sachs classification system, it is a membranophone. Drums consist of at least one membrane, called a drumhead or drum skin, that is stretched over a ...
under user control became common until
virtual memory In computing, virtual memory, or virtual storage, is a memory management technique that provides an "idealized abstraction of the storage resources that are actually available on a given machine" which "creates the illusion to users of a ver ...
became available in later machines. Slightly different dialects of Mercury Autocode were implemented for the Ferranti Atlas (distinct from the later
Atlas Autocode Atlas Autocode (AA)Original scans)) is a programming language developed around 1963 at the University of Manchester. A variant of the language ALGOL, it was developed by Tony Brooker and Derrick Morris for the Atlas computer. The initial AA and ...
) and the ICT 1300 and
1900 As of March 1 ( O.S. February 17), when the Julian calendar acknowledged a leap day and the Gregorian calendar did not, the Julian calendar fell one day further behind, bringing the difference to 13 days until February 28 ( O.S. February 15 ...
range. The version for the
EDSAC 2 EDSAC 2 was an early vacuum tube computer (operational in 1958), the successor to the Electronic Delay Storage Automatic Calculator (EDSAC). It was the first computer to have a microprogrammed control unit and a bit-slice hardware architecture. ...
was devised by David Hartley of
University of Cambridge Mathematical Laboratory The Department of Computer Science and Technology, formerly the Computer Laboratory, is the computer science department of the University of Cambridge. it employed 56 faculty members, 45 support staff, 105 research staff, and about 205 researc ...
in 1961. Known as EDSAC 2 Autocode, it was a straight development from Mercury Autocode adapted for local circumstances, and was noted for its object code optimisation and source-language diagnostics which were advanced for the time. A version was developed for the successor
Titan 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 ...
(the prototype Atlas 2 computer) as a temporary stop-gap while a more substantially advanced language known as CPL was being developed. CPL was never completed but did give rise to
BCPL BCPL ("Basic Combined Programming Language") is a procedural, imperative, and structured programming language. Originally intended for writing compilers for other languages, BCPL is no longer in common use. However, its influence is still f ...
(developed by M. Richards), which in turn led to B and ultimately C. A contemporary but separate thread of development,
Atlas Autocode Atlas Autocode (AA)Original scans)) is a programming language developed around 1963 at the University of Manchester. A variant of the language ALGOL, it was developed by Tony Brooker and Derrick Morris for the Atlas computer. The initial AA and ...
was developed for the University of Manchester Atlas 1 machine.


References


Sources

* * * * Knuth, Donald E.; Pardo, Luis Trabb (1976). "Early development of programming languages". Stanford University, Computer Science Department.


Further reading


The Autocodes: a User's Perspective
* ** ** * * {{cite book , author-first=David William , author-last=Barron , author-link=David W. Barron , editor-first=Stanley , editor-last=Gill , editor-link=Stanley Gill , title=Recursive techniques in programming , chapter=1.5. Recursion in Functional Programming , series=Macdonald Computer Monographs , date=1968 , orig-year=1967 , edition=1 , publisher= Macdonald & Co. (Publishers) Ltd. , location=London , sbn=356-02201-3 , page=8 (viii+64 pages) History of computing in the United Kingdom Procedural programming languages Programming languages created in 1952 Science and technology in Greater Manchester University of Manchester University of Cambridge Computer Laboratory