GIER Algol(ID:3487/gie001)

Naur's seminal ALGOL 60 


Implementation of Algol 60 by Peter Naur.

Transistorized electronic computer that was a joint development of the Danish Regnecentralen and the Geodætisk Institut (Danish Geodetic Institute) GIER for Geodætisk Institut Elektronisk Regnemaskine.

It was a design classic amongst early computers, having an exterior like a teak B&O hi-fi (refer Simonyi interview). The interpreter itself was similarily elegant.

Featured "pseudo evaluation" - computing by approximations - and read the source code backwards to make forward referencing efficient!!




Related languages
RegneCentralen ALGOL => GIER Algol   One of series
slip => GIER Algol   Written using
GIER Algol => GIER Algol II   Evolution of

References:
  • Naur, Peter "The design of the Gier Algol Compiler" pp124-140, 145-166 view details External link: At Baur's book site Abstract: The report gives a full description of the design of an ALGOL 60 system for the GIER, a machine having 1024 words of core store and 12800 words on drum. Following the introduction section 2 gives the historical perspective of the design and the principal characteristics of the machine. The third section discusses the problem of the running ALGOL program: storage allocation and addressing of variables, program references, procedure calls, and the automatic administration of transfers of program segments from the drum to the core store. The fourth section discusses the storage problem of the translator and the resulting multipass design. The fifth section describes some of the methods which have been found useful in writing the translator. The last section gives the size of the final system and some notes on its performance.

          in BIT 3 1963 view details
  • Naur, Peter "The design of the Gier Algol Compiler" pp49-85 view details
          in Goodman, Richard (ed) "Annual Review in Automatic Programming" (4) 1964 Pergamon Press, Oxford view details
  • Naur, Peter "Using machine code within an ALGOL system" Bit 4(2) (1964), pp115-117 view details
          in Goodman, Richard (ed) "Annual Review in Automatic Programming" (4) 1964 Pergamon Press, Oxford view details
  • Hartford, D. L. review of Naur BIT 1964 (GEIR Algol) view details Abstract: This paper describes a procedure developed at the Regnecentralen in Copenhagen for mixing the execution of machine coding with ALGOL coding. The procedure, called by gier(Ai), transfers the control of the machine to the instruction held in the variable supplied as parameter of the call.

    Two other procedure names described allow the placing of the appropriate code in the array of variables, and the communication between the machine code and the ALGOL variables in the text.

    The article is clear but brief. For a full description the reader is referred to the Manual of GIER ALGOL III, published by the Regnecentralen, 1964.
          in ACM Computing Reviews 6(03) May-June 1965 view details
  • Ingerman, Peter Z. review of Naur ARIAP 1964 (GEIR Algol) view details Abstract: This article describes an ALGOL compiler written for a small machine but capable of handling full ALGOL (with the exception of integer labels, which are confusing; arrays called by value, which are space- eating; and own arrays). The machine has 1024 words of core and 12,800 words of drum. The translation is done in nine passes, based on the argument that it is better to do a small portion of the job well than to do a great deal poorly.

    The translation approach is essentially classical. The syntactic analysis (which is quite complete) is inherent in the program, rather than in separate tables; although it is not entirely clear from the description, the same seems to be true of the semantic and pragmatic parts of the translator (that is, the generation of the machine instructions). Such an approach is admirably suited to the author's goals (the production of a translator for as much of ALGO1 as possible, with complete error detection, on a small machine, and within a realistic period of time).

    It should be noted that this is the same article that was published in BIT, 3, 2 and 3. The wider dissemination achieved in this book is desirable, but there is no indication of the earlier publication.

          in ACM Computing Reviews 6(04) July-August 1965 view details
  • Jensen, J. "Generation of machine code in ALGOL compilers" BIT 5 (1965), 235-245. view details
          in ACM Computing Reviews 6(04) July-August 1965 view details
  • Naur, P. Checking of operands in ALGOL compilers. BIT 5 (1965), 151-163 view details Abstract: The paper describes the method used in the GIER ALGOL compiler for checking the source program for the compatibility of the kinds and types of identifiers and constants as given in declarations with the use of these entities as operands in the statements and expressions of the program. The basic method is a pseudo-evaluation of the expressions of the program. This proceeds like a run-time evaluation, but works with descriptions of the types and kinds of the operands instead of with values. Several examples of the use of this method are given. A general way of achieving suppression of redundant error messages while still retaining the power to continue the checking process when an error has been detected is also described. Further, a classification of the operands of ALGOL 60 for use in the process is given. The paper ends with a sample error report produced by the GIER ALGOL compiler, illustrating the power of the method.

          in ACM Computing Reviews 6(04) July-August 1965 view details
  • Naur, P. The Performance Of A Systen For Automatic Segmentation Of Programs Within An Algol Compiler. pp89-106 1965 view details Extract: Introduction
    Introduction
    In programming for a machine with an inhomogeneous store, such as a core store and a backing drum, the handling of the transfers of program and data between the two media i s usually a major problem. In designing an Algol compiler for such a machine this problem is added to all the other problems of the compiler. It soon becomes clear that the problems of program and data are essentially different, for two reasons. On the one hand, the programmer knows far more about the most suitable allocation of data than of program, because he knows the volume of the data, while his knowledge of the size of the translated program is usually very crude, On the other hand, an automatic handling of program transfers is much simpler than the corresponding handling of data because the program is unaltered during execution, at least in machines having reasonable addressing facilities.
    In planning the Algol compiler for the GIER, a machine having 1024 words of core store and 12,800 words on drum, it was therefore decided to include an automatic segmentation of the program, while handling of data on the drum is left to the programmer. This decision was based on rather crude estimates as to the structure of actual programs, but has proved very successful. in practice. In fact, the programming for the GIER machines now running is done almost exclusively in Algol. The time is therefore ripe for another discussion of the problem, using the experience of the GIER Algol system as the starting point.
    The present paper contains first a brief description of the logic of the segmentation scheme. This is followed by a report and a discussion of some experiments on the performance of the scheme in a few representative programs.

          in Information Processing Machines: Proceedings of the Symposium held in Prague on September 7th-9th, 1964. Czechislovak Academy of Sciences (Prague) and Iliffe Books, Ltd. (London) 1965 view details
  • Naur, Peter "The performance of a system for automatic segmentation of programs within an ALGOL compiler (Gier ALGOL)" view details
          in [ACM] CACM 8(11) Nov 1965 view details
  • Bathos, A. P. review of Jensen 1965 (GEIR Algol) view details Abstract: This paper describes the techniques used in the GIER ALGOL compiler for generating machine code from the reverse Polish intermediate language. The basic method used is to simulate the run-time behavior of a stack machiae so as to determine the proper code for a conventional machine with a single accumulator. The paper is well-written and easy to follow, especially if the reader is acquainted with the earlier literature on the GIER Compiler. The final section of the paper describes an interDretive scheme for generating the machine code appropriate to a given operator or operand type. Unfortunately, this most interesting topic is glossed over in 18 lines.

    External link: Online copy
          in ACM Computing Reviews 7(04) July-August 1966 view details
  • Ershov, AP review of Naur CACM 1965 (GEIR Algol) view details Abstract: The author describes some results in an experimental inYestigatiOn of the performance of his system for automatic segmentation of object programs within the GIER compiler.

    The basic features of the segmentation scheme are as follows: (1) the compiler formally divided the object program into 40-word relocatable segments (one segment per one track of the drum); (2) all cross references between segments are treated by a fixed administration permanently stored in the core memory at run time; (3) the administration keeps a list of numbers of the segments currently present in the core store, to avoid unnecessary transfers of segments from the drum; (4) the working space for segmeIIts in the core memory is that which is left over when all the variables currently declared have been allocated; and (a) when there is no space for a new segment required, then an oldest segment is cancelled.

    The experiment consisted in varying the working space for segments of two programs (matrix inversion and Romberg double integration) from 2 to 14 and 16 segments, respectively, and in measuring the execution time, which was distributed into three items: drum track transfers, segment transitions, and pure program execution. The main resulting figures are: inversion: program execution -- 6.9 sec.; segment transitions increase very slowly from 0.a sec. to 0.7 sec., track transfers decrease by steps from 2.a sec. through 1 sec. to 0.2 sec. -- this time begins with 6 segments of the working space; integration: execution -- 2.5 sec., transitions increase from 0.3 sec. to 1.3 sec., and transfers decrease very rapidly from 19 sec. through 3 sec. (6 segments) to 0.5 sec. -- beginning with 10 segments of the working space. The 6 and, respectively, 10 segments are the critical spaces which are necessary to store all segments of inner loops of programs. Unfortunately, there are no figures for the complete sizes of both programs, in comparison with the sizes of inner loops. The author stresses that transition times are very sensitive to whether or not there is a segment transition in the innermost loop of the program. Some ways to reduce this time are discussed, with a special instruction in the hardware being preferable.

    The author has discovered that the program storage cleanup, which has been implemented in the scheme (cancelling in every 512 segment transitions the segments which have not been used during the last 256 transitions), does not significantly reduce the segment transition time.

    Though the experiment above is not on a very large scale, the results are quite promising concerning the general effectiveness of the discussed segmentation scheme.

          in ACM Computing Reviews 7(04) July-August 1966 view details
  • Naur, Peter "Program translation viewed as a general data processing problem" pp176-179 view details Abstract: Efficiency dictates that the overall effectiveness of a compiler be increased by all means available. For a compiler to have a substantial useful life it needs a clear logical structure, reliability and sound data processing techniques. A compiler must be based on fixed conventions to preserve efficiency and reliability; empty options and default conventions violate this dictum. Use of structure to associate various parts of a program and economy of features promote clarity and reliability. DOI
          in [ACM] CACM 9(03) March 1966 includes proceedings of the ACM Programming Languages and Pragmatics Conference, San Dimas, California, August 1965 view details
  • Regnecentralen og ALGOL 60. pp. 35-40 in Niels Ivar Bech--en Epoke i Edb-Udviklingen i Danmark. Copenhagen: DATA, 1976. view details External link: ENglish translation at Peter Baur's home page
          in [ACM] CACM 9(03) March 1966 includes proceedings of the ACM Programming Languages and Pragmatics Conference, San Dimas, California, August 1965 view details
  • Unsourced interview with Charles Simonyi view details External link: Online version Abstract: "The Danish computer also had an incredible influence on me. At that time, it had probably the world's best Algol compiler, called Gier Algol. Before I went to Denmark, I had complete listings of the compiler, which I had studied inside and out. It was all written in machine language, so it was both a lesson in machine-language programming and an aesthetically beautiful way of thinking about a compilation process. It was designed by Peter Naur. He is the letter N in BNF, the Backus-Naur Form of syntax equations. I knew that program inside and out and I still know it.

    The SNOBOL compiler I wrote at Berkeley, for example, was just a variation on the same theme. I think the Gier Algol program is still in my mind and influences my programming today. I always ask myself, 'If this were part of the Algol compiler, how would they do it?' It's a very, very clever program.

    One notion that sticks in my mind is how they scanned the source text backwards. It turns out that in some cases, if you do things backwards, problems that previously appeared complex suddenly become very simple. For instance, resolving forward references can be difficult. If you scan backwards, they become backward references, which are easy to resolve. Just by looking at a program in a new way, what formerly might have been rather difficult to solve becomes easy to solve. The Algol compiler was absolutely full of wonderful tricks."

          in [ACM] CACM 9(03) March 1966 includes proceedings of the ACM Programming Languages and Pragmatics Conference, San Dimas, California, August 1965 view details
  • Early Computing in Denmark by Lars Poulsen view details External link: WEb-page
          in [ACM] CACM 9(03) March 1966 includes proceedings of the ACM Programming Languages and Pragmatics Conference, San Dimas, California, August 1965 view details
    Resources
    • GIER ALGOL Tutorial
      This is the tutorial for both the GIER emulator and the GIER ALGOL that it has. Load tapes and watch them run.external link
    • Photo of a GEIR

    • Memories of using GIER Algol
      external link