Hacker News new | past | comments | ask | show | jobs | submit login

Strachey also designed CPL* (officially the Cambridge, or Combined, programming language, but one can think of other denotations for that "C"), which would get simplified into BCPL, simplified even more into B, and then re-expanded slightly to give birth to K&R C.

* https://en.wikipedia.org/wiki/CPL_(programming_language) , which might have been more successful had machines of the time had more memory and faster i/o devices...




Even if the CPL language has not been used for anything else except teaching, it has introduced a large number of important innovations.

For example: "break" for exiting loops without using labels, special symbolic brackets instead of "begin" and "end" (which have become "{" and "}" after the introduction of ASCII), distinct syntax for assignments and for definitions with initialization, an escape character in string literals (which was "*" in CPL through B, but was changed in C to "\"), both new line and semicolon as statement separators instead of only one of them as in earlier languages (this was inherited through BCPL by the UNIX shell), a special type for indices (like a signed size_t) and others.

One of the most important innovations of CPL was that it was one of the first two programming languages that had pointers. The second, slightly later language, was Euler. The term "pointer" itself was introduced later in the language PL/I, by IBM. Both CPL and Euler used the term "reference" (like later Algol 68; while C++ uses both terms with slightly different meanings, in earlier languages the terms were synonymous, with one of them preferred depending on the Algol or PL/I heritage)

CPL and Euler have made different choices for the syntax of the operations with pointers. In Euler indirect addressing through a pointer required an operator (like in C, but in C the operator is prefix instead of postfix due to a design mistake), while in CPL indirect addressing through a pointer was implicit (like with the references of C++). Other syntax differences are determined by this choice, e.g. for assigning the address stored in a pointer to another pointer a distinct assignment operator is needed in CPL (it did not have an address-of operator and normal assignment dereferences both pointers).


He's also the originator of the concept of a continuation, which Scheme exploits ruthlessly (though arguably not enough, except for Guile, Racket, and a few others which support delimited continuations).


According to John Reynolds' history "The discoveries of continuations", Strachey wasn't one of the several significant developers of the concept.

https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/...


According to that history, even if Strachey was not the originator, he played the most important role in explaining them and making them known to a much wider audience, through his influential published papers.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: