Basic Combined Programming Language (BCPL) is a computer language created by Martin Richards at the University of Cambridge in 1966. The language was built on its predecessor the Combined Programming Language, developed earlier in the 1960s.
Basic Combined Programming Language was built for small compiling size, down to 16 kB, and portability. One data type serves as an integer, character, floating-point number or other variable.
One of the main points of notoriety about the Basic Combined Programming Language is that it is alleged to be the first language in which the famous “hello world” program was written, by Brian Kernighan in the 1970s.
Eventually, the C suite of languages arose from earlier and more primitive languages like Basic Combined Programming Language. BCPL still stands as a program with simple syntax and straightforward design, to show some of the ways that modern languages evolved in terms of syntax and use.
BCPL has a simple underlying semantic structure which is built around an idealised object machine. This method of design was chosen in order to make BCPL easy to define accurately and to facilitate machine independence which is one of the fundamental aims of the language.
* The work was started while the author was employed by Massachusetts Institute of Technology. It was supported, in part, by Project MAC, an M.I.T. research program sponsored by the Advanced Research Projects Agency, Department of Defense, under Office of Naval Research Contract Number Nonr-1102.
The most important feature of the object machine is its store and this is represented diagrammatically . It consists of a set of numbered boxes (or storage cells) arranged so that the numbers labelling adjacent cells differ by one. As will be seen later, this property is important. Each storage cell holds a binary bit pattern called an Rvalue (or Right hand value). All storage cells are of the same size and the length of Rvalues is a constant of the implementation which is usually between 24 and 36 bits. An Rvalue is the only kind of object which can be manipulated directly in BCPL and the value of every variable and expression in the language will always be an Rvalue. Rvalues are used by the programmer to model abstract objects of many different kinds such as truth values, strings and functions, and there are a large number of basic operations on Rvalues which have been provided in order to help the programmer model the transformation of his abstract objects. In particular, there are the usual arithmetic operations which operate on Rvalues in such a way that they closely model integers. One can either think of these operations a* ones which interpret their operands as integers, perform the integer arithmetic and convert the result back into the Rvalue form, alternatively one may think of them as operations which work directly on bit patterns and just happen to be useful for representing integers.