Celebrating Tony Hoare's mark on computer science

(bertrandmeyer.com)

53 points | by benhoyt 6 hours ago

6 comments

  • mrkeen 13 minutes ago
    > First, the null pointer is essentially inevitable if you want to model the world, which has references (things containing denotations of other things).

    I took major exception to this. The real world doesn't have non-things, and references do not demand to refer to non-things.

    If your domain does actually have the concept of null, just make a type for it. Then you won't accidentally use a 6 or a "foo" where a null was demanded.

    • zabzonk 8 minutes ago
      And I would just add:

      Do we want to model the "real world"? This seems to hark back to that long-forgotten world of "animal-cat-dog" OO programming.

  • jgrahamc 56 minutes ago
    In the early eighties, for example, he brought to Oxford the creators of two major formal specification languages: Cliff Jones with VDM, Jean-Raymond Abrial with Z. At Oxford, Z actually underwent a systematic rework, reminiscent of the Goethe quip reproduced above, with Frenchmen and mathematicians replaced by English mathematicians (or computer scientists). The new version enjoyed immense success in Britain, won a Queen’s Award and was used not only academically but in many mission-critical applications in industry, leading to a number of startups and work by such researchers (all having gone through Oxford at some point) as Jim Woodcock, Carroll Morgan, Jim Davies, J. Michael Spivey, Ian Hayes and Ib Holm Sørensen.

    This was the world I walked into in 1986 as an undergraduate studying Mathematics and Computation. I was quite quickly indoctrinated in the ways of Z notation [1] and CSP [2] and had to learn to program in ML. I still have all the lecture and class notes and they are quite fascinating to look at so many years later. Funny to read the names of celebrated researchers that I just thought of as "the person who teachers subject X". I do recall Carroll Morgan's teaching being very entertaining and interesting. And I interacted quite a bit with Jim Davies, Jim Woodcock and Mike Spivey.

    Having decided I wanted to stay and do a DPhil I managed to get through the interview with Tony Hoare (hardest question: "Where else have you applied to study?" answer: "Nowhere, I want to stay here") and that led to my DPhil being all CSP and occam [3]. I seem to remember we had an array of 16(?) transputers [4] that the university had managed to get because of a manufacturing problem (I think the dies were incorrecty placed making the pinouts weird, but someone had made a custom PCB for it).

    Imagine my delight when Go came around and I got to see CSP in a new language.

    [1] https://en.wikipedia.org/wiki/Z_notation

    [2] https://en.wikipedia.org/wiki/Communicating_sequential_proce...

    [3] https://en.wikipedia.org/wiki/Occam_(programming_language)

    [4] https://en.wikipedia.org/wiki/Transputer

  • rswail 4 hours ago
    One of CS's heroes lauding another. I feel I know both author and subject better for reading this.

    We are all very lucky to have lived through the foundation of a new science and new engineering over the last 50 years.

    • tialaramex 1 hour ago
      A bit more than 50 years. Grace Hopper retired in 1966. It's true that Grace kept un-retiring, but the most crucial stuff is all before she retired. Invention of what we'd think of as a linker-loader (which Grace called a compiler) and of the broad concept of high level programming languages all happens in the 1950s.
  • 0xWenOkx74 4 minutes ago
    saved for later. exactly the kind of deep dive i was looking for
  • DaleBiagio 1 hour ago
    Meyer makes an important point that often gets lost: the null pointer predates Hoare. NIL existed in McCarthy's Lisp in 1959, six years before Hoare added null references to ALGOL W. The "mistake," if it was one, was already widespread.

    What made Hoare's 2009 confession so impactful wasn't that he was solely responsible — it's that he was the first person with that level of authority to publicly say "this was wrong."

    That's what gave Rust, Swift, and Kotlin permission to design around it.

    • skydhash 2 minutes ago
      I don’t know much about algol, but in Lisp, nil represents the empty list. And because the list is a recursive data structure, it always contains the empty list. It’s not the same as java where null is its own value that is part of every type. In Lisp, an atom can’t be nil because an atom is not a list.
  • hiccup 1 hour ago
    Thank you for sharing this fantastic tribute