BCPL

The Basic Combined Programming Language (BCPL) is a typeless systems programming language in the Algol family, a direct descendant and simplification of CPL and a precursor to C and C++ although its syntax is more in line with other Algol languages than the "keyboard oriented" C (It's not a curly brace language). Other languages descended from BCPL include the now largely forgotten parallel programming language Occam that was popular on Transputer boards. Some Occam cross development tools that targeted them were available for OS/2 v1.x.

BCPL as an OS tool
Although when it was introduced it was presented more as a tool to write compilers for other languages with, BCPL's main claim to fame is that it was used to write the main portions of AmigaOS in the 80s (Actually based on the earlier BCPL OS, TripOS), the highly influential but by now largely forgotten CDOS networked operating system a decade earlier. The latter heavily influenced the development of TCP/IP and the Internet, and the Xerox Alto OS, the first operating system with a windowing system and mouse control. Three out of ten of the most influential operating systems of the 20th century is not a bad batting average for a largely forgotten computer language.

Although many people saw BCPL as outdated and quaint after the introduction of C there were quite valid reasons for using it in preference to C when writing operating systems. Early versions of C were somewhat propriety and although AT&T shared source code with American universities and gave them permission to use their toolchains. Competing businesses and foreign institutions did in general not get such permissions. Early versions of C also lacked some of the system programming concepts that existed in BCPL. People were less than happy with the C syntax not only the inconsistencies and anachronisms, but the fact it is designed to be faster to code on the DEC VAX minicomputers that the original authors used. The problem was that the DEC keyboard layout differed quite a bit from the IBM standard and foreign keyboards more still, so much like Perl the features that were intended to make it faster actually made it slower for everyone except a small subset of the user base.

BCPL is also tiny, there were implementations that ran in 16k and it was for that reason simpler to bootstrap on a new system and in general at the time people were more happy with typeless languages like BLISS and BCPL as system languages than typed or strongly typed languages... And perhaps most surprisingly when people started porting programs from BCPL to C they found that rather than being faster the C code was actually slower, but the compilers simply could more easily take advantage of structures in BCPL source code than in C code and it was not until the 90s when highly optimising C compilers started to arrive on the market that it caught up. Some of the BCPL features that were striped from the language when B and C were introduced show up again in C++.

OS/2 implementations

 * Martin Richards BCPL - Open source

DOS implementations

 * Martin Richards BCPL - Open source - older versions compiled under DOS but the current one has not been tested.

Publications

 * James E. Curry: BCPL Reference Manual - Xerox PARC (Sep 1979)
 * Martin Richards; Colin Whitby-Strevens: BCPL: The Language and Its Compiler - Cambridge University Press 1980, ISBN 0-521-21965-5
 * Robert D. Eager: Improving the Portability of the BCPL Compiler - MSc dissertation

Links

 * Clive D. W. Feather: A brief description of BCPL
 * Clive D. W. Feather: From BCPL to C - Posting

Standards

 * BCPL Reference Manual PDF file - 1967 - Same document in HTML and PS formats with a short intro by Dennis Ritchie. - This version was used when early BCPL and B compilers were developed.
 * Modern implementations reference either the book by Martin Richards and Colin Whitby-Strevens called "BCPL--the language and its compiler," ISBN 0521286816, Cambridge University Press 1981 or even the Martin Richards BCPL interpreter itself and its documentation.