BCPL
Description
BCPL or "Basic Combined Programming Language" is a typeless programming language in the Algol family, a direct descendant 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.
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 the Amiga operating system in the 80's (Actually based on the earlier BCPL OS, TripOS), the highly influential but by now largely forgotten CDOS networked operating system a decade earlier, but 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 90's when highly optimising C compilers started to arrive on the market that it caught up.
A list of OS/2 implementations of BCPL
- Martin Richards BCPL - Open source - Current
Libraries
Editors with BCPL support
A list of DOS implementations of BCPL
- Martin Richards BCPL - Open source - Current status unknown, older versions compiled under DOS but the current one has not been tested
A list of BCPL implementations that run under WinOS/2
A list of BCPL implementations that run under Java
A list of BCPL implementations in JavaScript
Publications
- Clive Feather: A brief description of BCPL
- BCPL reference manual - 1979 - From Xerox.
Local articles
Tutorials and other learning material
Standards
- BCPL Reference Manual - 1967