UNCOL
   HOME

TheInfoList



OR:

UNCOL (Universal Computer Oriented Language) is a universal
intermediate language 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" ...
for
compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
s. The idea was introduced in 1958, by a SHARE ad-hoc committee. It was never fully specified or implemented; in many ways it was more a concept than a language. UNCOL was intended to make compilers economically available for each new
instruction set In computer science, an instruction set architecture (ISA) is an abstract model that generally defines how software controls the CPU in a computer or a family of computers. A device or program that executes instructions described by that ISA, s ...
architecture Architecture is the art and technique of designing and building, as distinguished from the skills associated with construction. It is both the process and the product of sketching, conceiving, planning, designing, and construction, constructi ...
and
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
, thereby reducing an N×M problem to N+M. Each machine architecture would require just one compiler back end, and each programming language would require one compiler front end. This was a very ambitious goal because compiler technology was in its infancy, and little was standardized in computer hardware and software.


History

The concept of such a universal intermediate language is old: the SHARE report (1958) already says "
t has T, or t, is the twentieth letter of the Latin alphabet, used in the modern English alphabet, the alphabets of other western European languages and others worldwide. Its name in English is ''tee'' (pronounced ), plural ''tees''. It is d ...
been discussed by many independent persons as long ago as 1954." Macrakis (1993) summarizes its fate: UNCOL is sometimes used as a generic term for the idea of a universal intermediate language. The Architecture Neutral Distribution Format is an example of an UNCOL in this sense, as are various
bytecode Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (normal ...
systems such as
UCSD Pascal UCSD Pascal is a Pascal programming language system that runs on the UCSD p-System, a portable, highly machine-independent operating system. UCSD Pascal was first released in 1977. It was developed at the University of California, San Diego (UC ...
's
p-code Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (normal ...
, and most notably
Java bytecode Java bytecode is the instruction set of the Java virtual machine (JVM), the language to which Java and other JVM-compatible source code is compiled. Each instruction is represented by a single byte, hence the name bytecode, making it a compact ...
.John English, ''Introduction to Operating Systems: Behind the Desktop'', Palgrave MacMillan 2005, , p. 10


See also

*
LLVM LLVM, also called LLVM Core, is a target-independent optimizer and code generator. It can be used to develop a Compiler#Front end, frontend for any programming language and a Compiler#Back end, backend for any instruction set architecture. LLVM i ...
*
GIMPLE The GNU Compiler Collection (GCC) is a collection of compilers from the GNU Project that support various programming languages, hardware architectures, and operating systems. The Free Software Foundation (FSF) distributes GCC as free software ...


Notes


References

*{{cite journal, last1=Conway, first1=Melvin E., title=Proposal for an UNCOL, journal=Communications of the ACM, date=1 October 1958, volume=1, issue=10, pages=5–8, doi=10.1145/368924.368928 , issn=0001-0782, doi-access=free * Jean E. Sammet, ''Programming Languages: History and Fundamentals'', Prentice-Hall, 1969. Chapter X.2: UNCOL (Significant Unimplemented Concepts), p. 708. * SHARE ''Ad-Hoc'' Committee on Universal Languages (J. Strong, J. Olsztyn, J. Wegstein, O. Mock, A. Tritter, T. Steel), "The Problem of Programming Communication with Changing Machines", ''Communications of the ACM'' 1:8:12–18 (August 1958) and 1:9:9–15 (September 1958). * Stavros Macrakis, "From UNCOL to ANDF: Progress in Standard Intermediate Languages", White Paper,
Open Software Foundation The Open Software Foundation, Inc. (OSF), was a not-for-profit industry consortium for creating an open standard for an implementation of the operating system Unix. It was formed in 1988 and merged with X/Open in 1996, to become The Open Group. ...
Research Institute, RI-ANDF-TP2-1, January, 1992. Available a
CiteSeer
* T.B. Steel, Jr., "UNCOL: Universal Computer Oriented Language Revisited", ''Datamation'' (Jan/Feb 1960), p. 18. * T.B. Steel, Jr., "A First Version of UNCOL", ''Proc. Western Joint Computer Conference'' 19:371 (Los Angeles, May 9–11, 1961). * T.B. Steel, Jr., "UNCOL: The Myth and the Fact", ''Annual Review in Automatic Programming'' 2:325 (1961). Compilers