Partial implementation of ALGOL programming language for the LGP-30 computer (1961)
Dartmouth ALGOL 30 was a 1960s-era implementation, first of the ALGOL 58 programming language and then of ALGOL 60. It is named after the computer on which it ran: a Librascope General Precision (LGP-30) desk-size computer acquired by Dartmouth College in 1959.
Since the limited size of the LGP-30 (4K 31-bit words) precluded a full implementation of ALGOL 60, certain features (arrays called by value, own arrays, strings, variable array bounds, and recursion) were omitted; but the implementation did include parameters called by name, using thunks[1][2] and integer labels.[3]
ALGOL 30 was implemented by four undergraduate students. Stephen J. Garland wrote the compiler, discovering as a sophomore that compound statements and blocks could be included in the Samelson and Bauer translation algorithm.[4] This simple fact was not published until some years later by David Gries.[5] Robert F. Hargraves, Jorge Llacer, and Anthony W. Knapp developed the run-time system, which included an interpreter for floating-point arithmetic (not supported by the limited instruction set of the LGP-30).[6]
ALGOL 30 was a two-pass system. The first pass loaded the compiler and processed source code typed by the user; it generated intermediate code, similar to relocatable binary, and punched it onto paper tape. The second pass loaded both the run-time system and the intermediate code. Compilations could be "batched," but the delay between entering the source code tape and executing the compiled program were too great to allow widespread student use.[7]
To enable wider use, Garland and Knapp developed a "load-and-go" system known as SCALP, a Self Contained ALgol Processor, for a smaller subset of ALGOL 60 (which did not allow boolean variables or operators, blocks, procedures, own or dynamic arrays, conditional expressions, and step-until for statements). SCALP devoted a third of the LGP's memory to the compiler, a third to the run-time system (which included a floating-point interpreter and numeric functions), and a third for compiled user code. Students prepared source code off-line and punched it on paper tape with a Friden Flexowriter. Compilation occurred almost as quickly as the tape could be read in. This enabled student jobs to be completed in three minutes. Hundreds of students used SCALP before BASIC became available on the Dartmouth Time-Sharing System in 1965.[8][9]
ALGOL 30 was the basis for an implementation in 1965 of ALGOL 60 on the Dartmouth Time-Sharing System. Several years later, Sidney Marshall produced an implementation of ALGOL 68.[10]
References
- ^ P. Z. Ingerman, "Thunks: a way of compiling procedure statements with some comments on procedure declarations", Communications of the ACM 4:1, January 1961, pages 55–58.
- ^ E. T. Irons and W. Feurzeig, "Comments on the implementation of recursive procedures and blocks in Algol-60", Communications of the ACM 4:11, January 1961, pages 65–69
- ^ Thomas E. Kurtz, "Basic", History of Programming Languages, Association for Computing Machinery, June 1978, page 516.
- ^ K. Samelson and F. L. Bauer, "Sequential formula translation", Communications of the ACM 3:2, February 1960, pages 76–83.
- ^ (David Gries, "The use of transition matrices in compiling",
Communications of the ACM 11:1, January 1968, pages 26–34.
- ^ ALGOL for the LGP-30, A Comparison, Computation Center, Dartmouth College February 16, 1962.
- ^ Kurtz, loc. cit.
- ^ Kurtz, op. cit., page 517.
- ^ A Manual for SCALP, being a Self Contained Algol Processor for the General Precision LGP-30, CCM-7A, Computation Center, Dartmouth College, January 1, 1964.
- ^ Sidney Marshall, Preliminary Report on an ALGOL 68 Implementation, Kiewit Computation Center, Dartmouth College, December 1, 1969.
External links