Path: utzoo!utgpu!water!watmath!clyde!rutgers!lll-lcc!ames!ucbcad!zodiac!sri-spam!sri-unix!quintus!ok From: ok@quintus.UUCP (Richard A. O'Keefe) Newsgroups: comp.lang.c Subject: Re: Correction Summary: What BCPL really means Message-ID: <511@cresswell.quintus.UUCP> Date: 8 Jan 88 01:46:59 GMT References: <11075@brl-adm.ARPA> <145@snark.UUCP> <146@snark.UUCP> Organization: Quintus Computer Systems, Mountain View, CA Lines: 63 In article <146@snark.UUCP>, eric@snark.UUCP (Eric S. Raymond) writes: > In <145@snark.UUCP> I wrote: > Also, I expanded 'BCPL' to 'British Common Programming Language'. Mr. Robbins > thinks the correct name is '*Basic* Common Programming Language' and may well > be right -- I once knew the exact name, when I was doing the research for > the history section in _Portable_C_And_Unix_Systems_Programming_, but may > have misremembered it. Let's get this right once and for all. According to the book BCPL - the language and its compiler Martin Richards & Colin Whitby-Strevens Cambridge University Press 1980 ISBN 0 521 28681 6 Price: five pounds sterling "BCPL was designed by .. Richards .. in 1967. It underwent substantial development over the next five years, but since then has remained relatively stable. ... The language BCPL (Basic CPL) was originally developed as a compiler-writing tool and, as its name suggests, is closely related to CPL (Combined Programming Language) which was jointly developed at Cambridge and London Universities." Much of the flavour of BCPL has been retained in C. For example, the first program in the book is (with one change) GET "LIBHDR" LET START() BE WRITES("Hello, World*N") which is the exact analogue of #include main() { printf("Hello, World\n"); } BCPL has end-of-line comments introduced by "//". I wonder whether the reintroduction of this into C++ is a coincidence? Even the idea of having a separate "lint" program was first reported for BCPL. The book includes source code for the first pass of a BCPL compiler. It used to be quite easy to get a tape with a BCPL->OCODE compiler in source form, an OCODE->INTCODE translator, and an INTCODE interpreter. There was also a "ed"-like editor called CHEF. The biggest difference between BCPL and C was that BCPL was designed before byte-addressing became popular, so Array!Subscript adds a word offset to the array address, which meant lots of multiplication by 4. (Array%ByteOffset was added for the /370.) If you are interested in operating systems, there was a small operating system called OS6 written in BCPL. The source code and commentary are available as The Text of OSPub Christopher Strachey & Joseph Stoy Technical Monographs PRG-9 (t) and PRG-9 (c) July 1972 Oxford University Computing Laboratory Programming Research Group 45 Banbury Road, Oxford, Englang. I wonder whether there has ever been another operating system without any 'goto's?