1. 13
  1.  

  2. 6

    Some fun points:

    • We’ve all heard of BCPL, but I never knew what it stood for. CPL was Cambridge Programming Language.
    • It’s not stated directly, but Christopher Strachey was the nephew of Lytton Strachey, eminent Bloomsbury bohemian, painter and author of “Eminent Victorians”.
    • Strachey seems also to have invented bike-shedding: “David Barron noted of Strachey, ‘It was characteristic of him to insist on minor points of difference with the same force that he insisted on major points.’”
    1. 1

      Very interesting and made me discover more about what happened before C.

      My understanding after reading this article:

      CPL [1]       -> BCPL [3] -----\
      ALGOL 60 [2]  -> SMALGOL [4] --|
                                     \-> B [5] -> NB [6] -> C [7]
      

      The text in references are quotes extracted from the article:

      [1]: Born because Cambridge Univeristy got a new computer, a stripped-down
      version of the Ferranti Atlas, dubbed “Titan”, and the trio of David Wheeler,
      David Barron and Hartley convinced that it is necessary to develop a new
      language. This new programming language was dubbed CPL for Cambridge
      Programming Language, later revised to Combined Programming Language and
      later, after Christopher Strachey was overseeing the project, came to mean
      “Christopher’s Programming Language” for those associated with it.
      The specifications of the language were largely finished, but there was no
      compiler available. The working group had made CPL so complicated that early
      attempts at writing a compiler resulted in machine code tha was incredibly
      inefficient. The CPL reference manual 8.

      [2]: Excerpts from Wikipedia about ALGOL 60 9: It followed ALGOL 58 [..]
      introduced code blocks [..] nested function definitions with lexical scope.
      [..] ALGOL 60 was used mostly by research computer sicentiests [..]. Its use
      in commercial applications was hindered by the absence of standard
      input/output facilities in its description and the lack of interest in the
      language by large computer vendors.

      [3]: BCPL: Martin Richards has joined the CPL project. He set to work
      developing a limited version of CPL that could be made available to users.
      This “BCPL”, the ‘B’ standing for “Basic” would need to have an effective
      compiler. [..] in 1996, Richards brought BCPL [..] to Massachusetts [..]. BCPL
      is a “bootstrap” language because its compiler is capable of self-compiling.
      [..] a small chunk of the BCPL compiler was written in assmebly or machine
      code, and the rest of the compiler would be written in a corresponding subset
      of BCPL. The section of the compiler written in BCPL would be fed into the
      section written in assembly code, and the resultant compiler program could be
      used to compile any program written in BCPL. [..] Bootstrapping compilers
      dramatically simplifies the process of porting a language from one computer
      [..] to another. [..] While Richards was working on the BCPL compiler at MIT,
      the institute was engaged in the Multics project with Bell Labs and GE. [..]
      He (Ken Thompson from Bell Labs) downloaded it (BCPL) to a Bell Labs mainframe
      and began working with it. [..] The PDP-7 had 8192 “words” of memory [..].
      Unix took up the first 4k, leaving 4k free for running programs. Thompson took
      his copy of BCPL [..] and further compressed it so that it would fit into the
      available 4k of memory on the PDP-7.

      [4]: SMALGOL: [..] Thompson took his copy of BCPL [..] and further compressed
      it so that it would fit into the available 4k of memory on the PDP-7. In the
      course of doing this, he borrowed from a language he had encountered while a
      student at the University of California, Berkeley. That language, “SMALGOL”,
      was a subset of ALGOL 60 designed to run on less powerful computers.

      [5]: B: The language that Thompson eventually ended up using on the PdP-7 was,
      as he described it to Ars, “BCPL semantics with a lot of SMALGOL syntax”,
      meaning that it looked like SMALGOL and worked like BCPL. Because this new
      language consisted only of aspects of BCPL that Thompson found most useful and
      that could be fit into the rather cramped PDP-7, he decided to shorten the
      name “BCPL” to just “B”.

      [6]: NB: [..] when Bell Labs purchased a PDP-11 for the department in 1971,
      Thompson decided it was time to rewrite Unix in a high-level programming
      language [..] At the same time, Dennis Ritchie had adopted B and was adapting
      it to run on more powerful computers. One of the first things that he added
      back into B was the ability to “type” variables. [..] Ritchie dubbed this
      modified language NB for “New B” [..] It was installed on the mainframes in
      the computing center at Murray Hill, which made it available to users
      throughout Bell Labs.

      [7]: C: [..] when Bell Labs purchased a PDP-11 for the department in 1971,
      Thompson decided it was time to rewrite Unix in a high-level programming
      language [..] he started with NB. His first tries ended in failure and, “being
      an egoist, I blamed it on the language”, Thompson recalled at VCF with a
      chuckle. With each failure, Ritchie added features back into NB in a manner
      that made sense to him and Ken, and once he added structures [..] Thompson was
      able to write Unix in this new language. Ritchie and Thompson saw the addition
      of structures, which could be found nowhere in B, SMALGAL, BCPL or CPL, as a
      change significant enough to warrant renaming the programming language, and B
      became C.