Dartmouth ALGOL 30 | |
Paradigms: | Multi-paradigm |
Family: | ALGOL |
Designers: | Stephen J. Garland Robert F. Hargraves Anthony W. Knapp Thomas E. Kurtz |
Developer: | Dartmouth College |
Programming Language: | Assembly |
Discontinued: | Yes |
Platform: | LGP-30 |
Operating System: | None |
File Formats: | --> |
Influenced By: | ALGOL 58, ALGOL 60 |
Influenced: | SCALP for the LGP-30 Algol 60 for the Dartmouth Time Sharing System |
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, 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]