Gorn experimental compiler(ID:1406/gor004)

Gorn machine independant algebraic code 


Experimental and highly theoretical compiler created by Gorn for the Aberdeen Proving Ground, designed to be machine independant. Had influence on UNCOL and hence ALGOL


People:
Related languages
Gorn experimental compiler => Task   Evolution of
Gorn experimental compiler => UNCOL   Influence

References:
  • Gorn, S "Planning universal automatic semiautomatic coding" view details
          in Symposium on Automatic Programming For Digital Computers, Office of Naval Research, Dept. of the Navy, Washington, D.C. PB 111 607 May 13-14 1954 view details
  • Gorn, S. "An Experiment in Universal Coding". Ballistic Research Laboratory Report No. 953, August 1955. Aberdeen Proving Ground. view details External link: Archived copy at CBI in Government Box 11
          in Symposium on Automatic Programming For Digital Computers, Office of Naval Research, Dept. of the Navy, Washington, D.C. PB 111 607 May 13-14 1954 view details
  • Gorn, Saul "A Computation with Algebraic Numbers" Department of the Army, Ordnance Corps, Ballistic Research Laboratories, Aberdeen Proving Ground October 1955. view details External link: Archived copy at CBI in Government Box 11
          in Symposium on Automatic Programming For Digital Computers, Office of Naval Research, Dept. of the Navy, Washington, D.C. PB 111 607 May 13-14 1954 view details
  • Gorn, Saul "Standardized Programming Methods and Universal Coding" view details Extract: Introduction
    Introduction
    It is possible so to standardize programming and coding for general purpose, automatic, high-speed, digital computing machines that most of the process becomes mechanical and, to a great degree, independent of the machine. To the extent that the programming and coding process is mechanical a machine may be made to carry it out, for the procedure is just another data processing one.
    If the machine has a common storage for its instructions along with any other data, it can even carry out each instruction immediately after having coded it. This mode of operation in automatic coding is known as 'interpretive'. There have been a number of interpretive automatic coding procedures on various machines, notably MIT's Summer Session and Comprehensive systems for Whirlwind, Michigan's Magic System for MIDAC, and IBM's Speedcode; in addition there have been some interpretive systems beginning essentially with mathematical formulae as the pseudocode, such as MIT's Algebraic Coding, one for the SEAC, and others.
    We will be interested, however, in considering the coding of a routine as a separate problem, whose result is the final code. Automatic coding which imitates such a process is, in the main, non-interpretive. Notable examples are the A-2 and B-O compiler systems, and the G-P (general purpose) system, all for UNIVAC, and IBM's FORTRAN, of the algebraic coding type.
    Although, unlike interpretive systems, compilers do not absolutely require their machines to possess common storage of instructions and the data they process, they are considerably simpler when their machines do have this property. Much more necessary for the purpose is that the machines possess a reasonable amount of internal erasable storage, and the ability to exercise discrimination among alternatives by simple comparison instructions. I t will be assumed that the machines under discussion, whether we talk about standardized or about automatic coding, possess these three properties, namely, common storage, erasable storage, and discrimination. Such machines are said to possess "loop control".
    We will be interested in that part of the coding process which all machines having loop control and a sufficiently large storage can carry out in essentially the same manner; it is this part of coding that is universal and capable of standardization by a universal pseudo-code.
    The choice of such a pseudo-code is, of course, a matter of convention, and is to that extent arbitrary, provided it is
    (1) a language rich enough to permit the description of anything these machines can do, and
    (2) a language whose basic vocabulary is not too microscopically detailed.
    The first requirement is needed for universality of application; the second is necessary if we want to be sure that the job of hand coding with the pseudo-code is considerably less detailed than the job of hand coding directly in machine code. Automatic coding is pointless practically if this second condition is not fulfilled.
    In connection with the first condition we should remark on what the class of machines can produce; in connection with the second we should give some analysis of the coding process. In either case we should say a few things about the logical concept of computability and the syntax of machine codes.
          in [ACM] JACM 4(3) July 1957 view details
  • Gorn, Saul "Specification languages for mechanical languages and their processors a baker's dozen: a set of examples presented to ASA x3.4 subcommittee" view details
          in [ACM] CACM 4(12) (December 1961) view details
  • Gorn, Saul "Theory of mechanical languages" view details Extract: Theoretics
    A formal language is defined as the set of strings of symbols from an "alphabet" which is obtained by application of a "language function".

    The language function is composed of basic processors, dependent only upon some abstract structural feature of the alphabet; these processors may each be chosen to be either machines, or instructions for appropriate machines, or programs on such machines; they have such names as generators, collators, recognizers, stratifiers, syntactic analyzers, comparators, scope analyzers, depth analyzers, scanners, translators, etc. By recursion, an "alphabet" can be any "decidable" language, i.e. one in which the language function possesses a processor called a "recognizer"; the alphabets may, therefore, be infinite. The processors are specified in a suitable "universal" mechanical language, and their specification may be either descriptive declarations, in a logical sublanguage, or programs of commands in a "command" sublanguage.

    Any language containing both a "descriptive" sublanguage and a "command" sublanguage, with a strong interrelation between the two, is called a mixed language. The basic study is, then, the design of a universal formal mixed language within which any mechanical language may be specified.

    The basic theory presents a fusion of concepts from logic design, programming, mathematical logic, linguistics, philosophy (semantics and epistemology), psychology (thinking) management science (decision making) and electrical engineering with   applications to problems of information retrieval, language translation system design, artificial intelligence, and automatic programming.

    The theory makes use of logic and abstract algebra. An example of a formal language function already studied is a "tree language function" for different alphabets, which yields:
    (a) a language of propositions,
    (b) an algebraic language,
    (c) a language of proofs of logical propositions,
    (d) a language of "tree names" which is also a generalization of natural numbers and a language of "syntactic types",
    (e) a language of generalized Dewey Codes, whose processors are retrieval devices. Included are "optimal codes" of the Shannon-Fano type.

    The research includes standard extension processes for languages, and combination and translation processes of languages.
    More specificaIly, the research is to develop an algebra of operators producing language functions from language functions, investigate "uniquely deconcatenable" languages (codes) and standard processors by which languages may be extended by
    (a) definition,
    (b) set theoretic operators on alphabets,
    (c) importation into object alphabets of characters previously defined in the syntax,

    The project has also included research into the relationship between Chomsky's phrase structure languages and languages specified with Backus normal form. The addition of the intersection and negation operators has produced a lattice of language types as compared with Chomsky's simple scale. This result leads to research on compiling techniques which require an addition to the (customary) input of the source language additional inputs which describe the syntax of the source language and the (target language) semantics of the output.. In short, the compiler will require a description of the language to be translated as an input; this allows a single compiler to be written which will translate any one of a large class of languages. As extended, this work generalizes the work of Glennie, of E. Irons, and of Brooker & Morris.

    Work has been done on the design of an ALGOL compiler, which will be a specific application of the very general compilation technique mentioned above.
          in [ACM] CACM 5(01) January 1962 "Design, Implementation and Application of IR-Oriented Languages," ACM Computer Language Committee on Information Retrieval on 20-21 October 1961 in Princeton, N. J. view details