BCPL

BCPL introduced several features of many modern programming languages, including using curly braces to delimit code blocks.

It was split into two parts: the front end parsed the source and generated O-code, an intermediate language.

The language is unusual in having only one data type: a word, a fixed number of bits, usually chosen to align with the same platform architecture's machine word and of adequate capacity to represent any valid storage address.

One was by providing standard library routines for packing and unpacking words into byte strings.

[4] BCPL handles bindings spanning separate compilation units in a unique way.

[citation needed] The global vector also made it very simple to replace or augment standard library routines.

In practice, on limited keyboards of the day, source programs often used the sequences $( and $) or [ and ] in place of the symbols { and }.

Richards created BCPL by "removing those features of the full language which make compilation difficult".

The first compiler implementation, for the IBM 7094 under Compatible Time-Sharing System, was written while Richards was visiting Project MAC at the Massachusetts Institute of Technology in the spring of 1967.

The language was first described in a paper presented to the 1969 Spring Joint Computer Conference.

Several operating systems were written partially or wholly in BCPL (for example, TRIPOS and the earliest versions of AmigaDOS).

The two machines had different word-lengths (48 vs 24 bits), different character encodings, and different packed string representations—and the successful bootstrapping increased confidence in the practicality of the method.

In 1979, implementations of BCPL existed for at least 25 architectures; the language gradually fell out of favour as C became popular on non-Unix systems.

program for BCPL using a standard system header, 'LIBHDR': If these programs are run using Richards' current version of Cintsys (December 2018), LIBHDR, START and WRITEF must be changed to lower case to avoid errors.