In computer programming, a compile and go system; compile, load, and go system; assemble and go system; or load and go system
is a programming language processor in which the
compilation,
assembly, or
link steps are not separated from
program execution. The intermediate forms of the program are generally kept in
primary memory
Computer data storage or digital data storage is a technology consisting of computer components and recording media that are used to retain digital data. It is a core function and fundamental component of computers.
The central processin ...
, and not saved to the
file system.
Examples of compile-and-go systems are
WATFOR,
PL/C
PL/C is an instructional dialect of the programming language PL/I, developed at the Department of Computer Science of Cornell University in the early 1970s in an effort headed by Professor Richard W. Conway and graduate student Thomas R. Wilcox. ...
, and
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 ...
. An example of load-and-go systems is the loader
Anthony J. Barr wrote for the University Computing Corporation in 1968 that was replaced in the market by the IBM OS/360 loader in 1972. These
OS/360
OS/360, officially known as IBM System/360 Operating System, is a discontinued batch processing operating system developed by IBM for their then-new System/360 mainframe computer, announced in 1964; it was influenced by the earlier IBSYS/IBJOB a ...
loaders performed many of the functions of the
Linkage Editor
A linker or link editor is a computer program that combines intermediate software build files such as object and library files into a single executable file such as a program or library. A linker is often part of a toolchain that includes a comp ...
but placed the linked program in memory rather than creating an executable on disk.
Compile and go systems differ from
interpreters
Interpreting is translation from a spoken or signed language into another language, usually in real time to facilitate live communication. It is distinguished from the translation of a written text, which can be more deliberative and make use o ...
, which either directly execute
source code
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
or execute an
intermediate representation
An intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code. An IR is designed to be conducive to further processing, such as optimization and translation. A "good" ...
.
Analysis
Advantages of compile-and-go systems are:
* The user need not be concerned with the separate steps of compilation, assembling, linking, loading, and executing.
* Execution speed is generally much superior to interpreted systems.
* They are simple and easier to implement.
Disadvantages of compile-and-go loaders are:
* There is wastage in memory space due to the presence of the assembler or compiler.
* The code must be reprocessed every time it is run.
* Systems with multiple modules, possibly in different languages, cannot be handled naturally within this framework.
Compile-and-go systems were popular in academic environments, where student programs were small, compiled many times, usually executed quickly and, once debugged, seldom needed to be re-executed.
See also
*
Ahead-of-time compilation
In computer science, ahead-of-time compilation (AOT compilation) is the act of compiling an (often) higher-level programming language into an (often) lower-level language before execution of a program, usually at build-time, to reduce the amount ...
References
Cross-reference
Sources used
*
*
*
*
*
*
*
*
{{refend
External links
Dave Yost’s “compileAndGo” for any compiled language
Computer programming