[HN Gopher] Tony Hoare has died
       ___________________________________________________________________
        
       Tony Hoare has died
        
       Author : speckx
       Score  : 1978 points
       Date   : 2026-03-10 14:50 UTC (1 days ago)
        
 (HTM) web link (blog.computationalcomplexity.org)
 (TXT) w3m dump (blog.computationalcomplexity.org)
        
       | ontouchstart wrote:
       | RIP: https://youtu.be/tAl6wzDTrJA
        
       | riazrizvi wrote:
       | "The null reference was my billion dollar mistake responsible for
       | innumerable errors, vulnerabilities and system crashes"
       | (paraphrasing). I don't know. This design choice exposed the
       | developer to system realities, and modern language approaches are
       | based on decades of attempts to improve on it, and they are not
       | necessarily better. Safer yes, but more weighty.
       | 
       | Can anyone suggest a better approach for a situation like this in
       | the future? What's better than exposing addressing the problem
       | with a light solution?
        
         | cyberax wrote:
         | Some kind of an optional/variant type, enforced by the type
         | system.
        
           | p1necone wrote:
           | Or if even that feels too verbose, just a 'nullable' modifier
           | on the variable or field definition, with the default being
           | not nullable.
           | 
           | (Although Optional/Maybe types are definitely my preference
           | based on the languages I've used)
        
         | magarnicle wrote:
         | "The problem isn't the concept of 'null', but rather that
         | everything can be null, which makes it impossible to
         | distinguish between the cases where null is an appropriate and
         | expected value, from the cases where null is a defect."
         | 
         | https://blog.ploeh.dk/2015/04/13/less-is-more-language-featu...
        
         | pezezin wrote:
         | Which system reality? Plenty of architectures don't have a
         | concept of a null pointer at the hardware level. Other
         | architectures provide multiple address spaces, or segmented
         | memory addressing. Even when a null pointer exists at the
         | hardware level, it doesn't have to be the zero address.
         | 
         | Null pointers are a software abstraction, and nowadays we have
         | better abstractions.
        
       | briane80 wrote:
       | He was a professor at my old alma mater, Queen's University of
       | Belfast. I remember hearing a story about him going to Harvard to
       | give a lecture and, as he was presented, one of their professors
       | referred to himself as the "Hoare of Harvard"
        
       | hinkley wrote:
       | One of Billy Crystal's later standup bits was talking about how
       | his parents have hit an age where their favorite game with their
       | friends is called, "Guess Who Died". I've been thinking about
       | that bit an awful lot the last couple of years.
        
       | tombert wrote:
       | Damn.
       | 
       | Tony Hoare was on my bucket list of people I wanted to meet
       | before I or they die. My grad school advisor always talked of him
       | extremely highly, and while I cannot seem to confirm it, I
       | believe Hoare might have been his PhD advisor.
       | 
       | It's hard to overstate how important Hoare was. CSP and Hoare
       | Logic and UTP are all basically entire fields in their own right.
       | It makes me sad he's gone.
        
         | dboreham wrote:
         | When I met him unfortunately I didn't realize how important he
         | was (1987). The place where I worked used formal methods to
         | verify the design of an FPU, in collaboration with the PRG.
         | iirc the project was a success. I never heard of formal methods
         | being successfully used again until TLA+ a few years ago.
        
           | fanf2 wrote:
           | Inmos? Transputers were inspired by Hoare's CSP.
        
             | EdNutting wrote:
             | "Inspired by" is an understatement of the century lol.
             | David May and Sir Tony worked very closely together to
             | enable the architecture to be as pure a runtime for CSP as
             | you could get - at least in early versions of the
             | architecture and accompanying Occam language. It expanded
             | and deviated a bit later on iirc.
             | 
             | Source: David loved to tell some of these stories to us as
             | students at Bristol.
        
               | EdNutting wrote:
               | It's also worth highlighting that the mathematical purity
               | of the designs were also partly the problem with them. As
               | a field, we're still developing the maths of Effects and
               | Effectful Algebras that are needed to make these systems
               | both mathematically 'pure' (or at least sound to within
               | some boundary) and ALSO capable of interfacing to the
               | real world.
               | 
               | Transputer and Occam were, in this sense, too early. A
               | rebuild now combining more recent developments from
               | Effect Algebras would be very interesting technically.
               | (Commercially there are all sorts of barriers).
        
               | EdNutting wrote:
               | Further Reading for the curious:
               | 
               | On specifically the relationship between Occam and
               | Transputer architecture:
               | http://people.cs.bris.ac.uk/~dave/transputer1984.pdf
               | 
               | Wider reading: http://people.cs.bris.ac.uk/~dave
        
             | dboreham wrote:
             | Yes.
        
           | EdNutting wrote:
           | Inmos' Occam-based verification of their FPU in collaboration
           | with researchers at Bristol and Oxford iirc? Citation:
           | http://people.cs.bris.ac.uk/~dave/formalmethods.pdf
           | 
           | David May was my PhD supervisor and always spoke very highly
           | of Sir Tony Hoare.
           | 
           | Edit: I'm also lucky enough to have worked with Geoff
           | Barrett, the guy that completed that formal verification (and
           | went on to do numerous other interesting things). Some people
           | may be interested to learn that this work was the very first
           | formal verification of an FPU - and the famous Intel FPU bug
           | could have been avoided had Intel been using the verification
           | methods that the Inmos and University teams pioneered.
        
             | tombert wrote:
             | I actually had two PhD advisors [1]; Jim Woodcock and Simon
             | Foster.
             | 
             | Both of them are legitimately wonderful and intelligent
             | humans that I can only use positive adjectives to describe,
             | but the one I was referring to in this was Jim Woodcock
             | [2]. He had many, many nice things to say about Tony Hoare.
             | 
             | [1] Just so I'm not misleading people, I didn't finish my
             | PhD. No fault at all of the advisor or the school.
             | 
             | [2] https://en.wikipedia.org/wiki/Jim_Woodcock
        
               | paddybyers wrote:
               | I remember Jim Woodcock as really inspirational - he was
               | working with my PhD supervisor in 1987. We were working
               | on a variant of Z for specifying what, today, we would
               | call CRDTs. I was also lucky enough to meet Tony Hoare
               | the same year and discuss those concepts.
        
               | tombert wrote:
               | Jim is an amazing guy. One of the rare people who are
               | absolutely brilliant in their respective field, and are
               | equally good at teaching the subject. He's also just a
               | really kind, nice person who is delightful to chat with,
               | though that's true of pretty much anyone in York [1].
               | 
               | I also think his book "Software Engineering Mathematics"
               | [2] is an extremely approachable book for any engineer
               | who wants to learn a bit more theory.
               | 
               | As I said, my dropped PhD is not a failure in any
               | capacity from my advisors or the school, mostly just life
               | juggling stuff.
               | 
               | [1] I don't know why exactly, but of all the places I've
               | been, York has the highest percentage of "genuinely nice"
               | people. It's one of my favorite spots in the UK as a
               | result.
               | 
               | [2] https://a.co/d/02M25LcY, not a referral link.
        
         | jballanc wrote:
         | You can always check his entry on the Mathematics Genealogy
         | Project: https://mathgenealogy.org/id.php?id=45760
        
           | tombert wrote:
           | I actually knew about that, but it says "advisor unknown".
           | 
           | Regardless, he certainly knew Tony Hoare, and spoke extremely
           | highly of him.
        
             | gjm11 wrote:
             | You've probably tried this already, but just in case: If
             | you can find a copy of his PhD thesis it's likely (or at
             | least would be likely without the information that you've
             | had trouble tracking down his advisor) to have some mention
             | of his advisor's name in it.
        
       | fidotron wrote:
       | The confusion is possibly almost appropriate, given so much of
       | his work was on creating systems which avoid confusion through
       | using proper synchronized communication channels. The null
       | pointer stuff is famous, but it's occam and the Communicating
       | Sequential Processes work that were brilliant. Maybe it's also
       | brilliantly wrong, as I think Actor model people could argue, but
       | it is brilliant.
       | 
       | My favourite quote of his is "There are two ways of constructing
       | a piece of software: One is to make it so simple that there are
       | obviously no errors, and the other is to make it so complicated
       | that there are no obvious errors."
       | 
       | While we hope it's not true, if it is a very deserved RIP.
        
         | nextos wrote:
         | CSP and Hoare logic were brilliant. He was a huge proponent of
         | formal methods.
         | 
         | He famously gave up on making formal methods mainstream, but I
         | believe there will be a comeback quite soon.
         | 
         | On generated code, verification is the bottleneck. He was
         | right, just too early.
        
         | jacquesm wrote:
         | And here we are throwing all that brilliance away with Async
         | abominations. Software can be _so_ simple and elegant.
        
         | eru wrote:
         | Actor model would also be brilliantly wrong: it doesn't compose
         | smaller correct systems into larger correct systems.
         | 
         | (Software) Transactional Memory and other ideas inspired by
         | databases have a much better shot at this.
        
           | YorickPeterse wrote:
           | Is this why software transactional memory is so prevalent
           | today and the actor model is barely used?
        
             | eru wrote:
             | Locks are even more prevalent today. And so was leaded
             | gasoline.
             | 
             | (To be less snarky, locks are one way you can implement
             | both actor model and Transactional Memory. But just like
             | JMP instructions in your CPU, it's probably better to
             | provide programmers with a higher level of abstraction.)
        
         | dang wrote:
         | (btw the "confusion" here was confusion about whether he had
         | actually died. this comment was originally posted to
         | https://news.ycombinator.com/item?id=47316880, which was the
         | thread we merged hither)
        
       | muyuu wrote:
       | always knew him as C.A.R. Hoare, takes me way back to freshman
       | college years
       | 
       | RIP good sir
        
       | csb6 wrote:
       | Sad that his (and many others') dream of widespread formal
       | verification of software never came true. He made really
       | fundamental contributions to computer science but will probably
       | be mostly known for quicksort and the quote about his "billion
       | dollar mistake", not his decades-long program to make formal
       | methods more tractable.
       | 
       | Makes me think of an anecdote where Dijkstra said that he feared
       | he would only be remembered for his shortest path algorithm.
        
         | hinkley wrote:
         | Almost all of the earliest cited works on concurrency
         | management in software were authored by C A R 'Tony' Hoare.
         | 
         | I genuinely forget he authored quicksort on the regular.
        
         | yodsanklai wrote:
         | Actually, thanks to AI, this may change soon! we may be in a
         | place where widespread formal verification is finally possible.
        
         | alphaglosined wrote:
         | It is more widespread than you may realise.
         | 
         | That work contributes to static analysers' data flow analysis
         | algorithms and is very widespread, even if it's in a limited
         | capacity.
         | 
         | C#, gcc, clang, and even dmd, with my fast DFA engine, utilise
         | it.
         | 
         | We can't all be using Astree, far too expensive ;)
        
       | mynegation wrote:
       | Sir Tony Hoare visited Institute for System Programming in Moscow
       | and gave a lecture quarter of the century ago. It was
       | unforgettable experience to see the living legend of your field.
       | He was a senior person then already and today I am going to
       | celebrate his long and wonderful life.
        
       | laurieg wrote:
       | I saw a casual lecture given by Tony Hoare as a teenager. The
       | atmosphere was warm and welcoming, even if I didn't fully
       | understand all of the content. I remember he was very kind and
       | answered my simple questions politely.
        
       | susam wrote:
       | I first came across Tony Hoare about 24 years ago while learning
       | C from _The C Programming Language_ by Kernighan and Richie. I
       | knew him only as C. A. R. Hoare for a long time. When I got on
       | the Internet, it took me a while to realise that when people said
       | Tony Hoare, it was the same person I knew as C. A. R. Hoare.
       | Quoting the relevant text from the book:
       | 
       | > Another good example of recursion is quicksort, a sorting
       | algorithm developed by C.A.R. Hoare in 1962. Given an array, one
       | element is chosen and the others partitioned in two subsets -
       | those less than the partition element and those greater than or
       | equal to it. The same process is then applied recursively to the
       | two subsets. When a subset has fewer than two elements, it
       | doesn't need any sorting; this stops the recursion.
       | 
       | > Our version of quicksort is not the fastest possible, but it's
       | one of the simplest. We use the middle element of each subarray
       | for partitioning. [...]
       | 
       | It was one of the first few 'serious' algorithms I learnt to
       | implement on my own. More generally, the book had a profound
       | impact on my life. It made me fall in love with computer
       | programming and ultimately choose it as my career. Thanks to K&R,
       | Tony Hoare and the many other giants on whose shoulders I stand.
        
       | semessier wrote:
       | unless its greatly exagerated - he was quite mind sharp in his
       | 80s
       | 
       | SIR_TONY_HOARE = mX * (think - create - give - X)
       | 
       | -- process ran from 1934 to 2026 -- terminated with SKIP -- no
       | deadlock detected -- all assertions satisfied -- trace: <
       | quicksort, hoare_logic, csp, monitors, -- dining_philosophers,
       | knighthood, turing_award, -- billion_dollar_apology,
       | structured_programming, -- unifying_theories, ... >  -- trace
       | length: [?] The channel is closed. The process has terminated.
       | The algebra endures.
        
       | pjmorris wrote:
       | I lucked in to meeting him once, in Cambridge. A gentle
       | intellectual giant.
       | 
       | I repeatedly borrow this quote from his 1980 Turing Award speech,
       | 'The Emperor's Old Clothes'... "At last, there breezed into my
       | office the most senior manager of all, a general manager of our
       | parent company, Andrew St. Johnston. I was surprised that he had
       | even heard of me. "You know what went wrong?" he shouted--he
       | always shouted-- "You let your programmers do things which you
       | yourself do not understand." I stared in astonishment. He was
       | obviously out of touch with present day realities. How could one
       | person ever understand the whole of a modern software product
       | like the Elliott 503 Mark II software system? I realized later
       | that he was absolutely right; he had diagnosed the true cause of
       | the problem and he had planted the seed of its later solution."
       | 
       | My interpretation is that whether shifting from delegation to
       | programmers, or to compilers, or to LLMs, the invariant is that
       | we will always have to understand the consequences of our
       | choices, or suffer the consequences.
        
         | layer8 wrote:
         | > I realized later that he was absolutely right
         | 
         | It would have been fun if he'd directly said "You're absolutely
         | right!"
        
       | arch_deluxe wrote:
       | One of the greats. Invented quicksort and concurrent sequential
       | processes. I always looked up to him because he also seemed very
       | humble.
        
         | baruchel wrote:
         | Yes, but don't forget his formal work also (Hoare logic).
        
           | rramadass wrote:
           | To me, this is his most important contribution; Everybody
           | else built on top of this.
           | 
           |  _Hoare Logic_ - https://en.wikipedia.org/wiki/Hoare_logic
        
             | lkuty wrote:
             | Rediscovering it through the Dafny programming language.
             | Brings back memories of a 1994 University course.
        
               | rramadass wrote:
               | I think it is even more relevant today.
               | 
               |  _Hoare Logic + Dijkstra 's weakest precondition +
               | Meyer's Design-by-Contract_ is what should be used to get
               | LLMs to generate proof with code in a correctness-by-
               | construction approach to implementation.
               | 
               | References:
               | 
               |  _Correctness-by-Construction (CbC)_ - https://www.tu-
               | braunschweig.de/en/isf/research/cbc
               | 
               |  _A Course on Correctness by Construction_ -
               | https://wp.software.imdea.org/cbc/
        
               | rramadass wrote:
               | You might find this paper interesting (uses examples in
               | Dafny) - https://news.ycombinator.com/item?id=47334375
        
         | wood_spirit wrote:
         | And regretful inventor of the null reference!
         | 
         | His "billion dollar mistake":
         | 
         | https://www.infoq.com/presentations/Null-References-The-Bill...
        
           | adrian_b wrote:
           | The null reference was invented by Hoare as a means to
           | implement optional types, which works regardless of their
           | binary representation.
           | 
           | Optional types were a very valuable invention and the fact
           | that null values have been handled incorrectly in many
           | programming languages or environments is not Hoare's fault.
        
             | tialaramex wrote:
             | Having "Optional types" only makes sense if your type
             | system is powerful enough.
             | 
             | There are two ways this might happen, both will solve the
             | Billion Dollar Problem but I think one is the clear winner.
             | The first way is explicit optionality, often retro-fitted
             | to languages for example in C# the difference between the
             | types Goose and Goose? are that (in a suitable C# project
             | enabling this rule) the first one is always a Goose and the
             | second might be null instead.
             | 
             | The second way is if you have Sum types you can just add
             | "or it's null" to the type.
             | 
             | I think sum types are better because they pass my "three
             | purposes" rule where I can think of not one (Option<T>
             | replaces optionality) or two (Result<T,E> for error
             | handling) but at least three (ControlFlow<B, C> reifies
             | control flow) distinct problems I don't need separate
             | solutions for any more if I have this feature.
             | 
             | If your type system is too weak you suffer the Billion
             | Dollar problem with Hoare's idea and perhaps if this
             | "feature" had never been invented we'd have all migrated to
             | languages with a better type system decades ago.
        
               | adrian_b wrote:
               | I agree that for the correct use of both Optional types
               | and Sum types (a.k.a. Union types) a type system that is
               | powerful enough is essential. Moreover, a convenient
               | syntax is also important.
               | 
               | In my opinion, besides being passed as arguments of
               | functions whose parameters are declared as having the
               | corresponding Optional or Sum type, there is only one
               | other permissible use of values of such types.
               | 
               | Variables of an Optional type shall be allowed in the
               | Boolean expression of an "if" or equivalent conditional
               | statement/expression, while variables of a Sum type shall
               | be allowed in an expression that tests which is the
               | current type in a select/case/switch or whatever is the
               | name used for a conditional statement or expression with
               | multiple branches.
               | 
               | Then in the statements or expressions that are guarded by
               | testing the Optional- or Sum-type variable, that variable
               | shall be used as having the corresponding non-optional
               | type or the type among those possible for a Sum type that
               | has been determined by the test.
               | 
               | This syntax ensures that such variables will not be
               | misused, while also avoiding the excessive and unhelpful
               | verbosity that exists in some languages.
        
               | tialaramex wrote:
               | I disagree. Only true is true and only false is false,
               | Some(1234) isn't true and None isn't false, for the same
               | reason the string "A" isn't the ASCII byte 'A' and the
               | 8-bit unsigned integer 10 isn't the 64-bit floating point
               | number 10.0
               | 
               | When you muddle these things it makes life very slightly
               | easier, very briefly and then you introduce impossible to
               | find bugs and ruin your life. People tend to imagine that
               | OK, maybe C went too far with coercions, but I can handle
               | smaller things, that'll be fine, and in my experience
               | they're wrong.
               | 
               | I _like_ the fact that in Rust I 'm expected to write if
               | opt.is_none() rather than just treat it as if it was a
               | boolean when it isn't. The resulting machine code isn't
               | different, so we're talking about communicating our
               | intent to human programmers, such as our future selves or
               | our colleagues and I'm certain opt.is_none() communicates
               | that intent better than coercing it to a boolean.
               | 
               | I don't like the other idea you propose, but it's less of
               | a footgun and so I don't mind that e.g. C# programmers
               | often write this way. I wouldn't choose it myself in many
               | cases, but I don't write "No, fix this" in reviews of
               | such code.
        
           | Milpotel wrote:
           | I'm pretty sure that this is not true. I talked to Bud Lawson
           | (the inventor of the pointer) and he claimed that they had
           | implemented special behaviour for null pointers earlier. When
           | I talked to Tony later about it, he said he had never heard
           | of Bud Lawson. So probably both invented them independently,
           | but Bud came first.
        
             | elch wrote:
             | If we start playing the "who was first" game, then for the
             | Soviet machine Kiev (Kyiv), an "address language" with a
             | "prime operation" was created in 1957-59.
             | 
             |  _The prime operation and address mapping.
             | 
             | The prime operation defines a certain single-argument
             | function. Its symbol (a prime mark) is written above and to
             | the left of the argument: 'a = b where a is the argument
             | and b is the result of the operation. This is read as:
             | "prime a equals b" (or "b is the contents of a"). The
             | argument a is called an address, and the function value b
             | is called the contents of the address. The prime function '
             | defines a mapping from the set of addresses A to the set of
             | contents B, which we will call an address mapping._
             | 
             | Page 36, chapter III
             | https://torba.infoua.net/files/kateryna-
             | yushchenko/Vychislit...
        
               | Milpotel wrote:
               | Nice, and that was implemented and qualifies as high-
               | level language?
        
               | adrian_b wrote:
               | Pointers and indirect addressing were used in assembly
               | languages and machine languages much earlier than that,
               | perhaps even in some relay-based computers.
               | 
               | In any case, by 1954 already most or all electronic
               | computers used this.
               | 
               | The only priority questions can refer to which are the
               | first high-level programming languages that have used
               | pointers.
               | 
               | In my opinion the first language having pointers with
               | implicit dereferencing was CPL, published in 1963-08, and
               | the first language having pointers with explicit
               | dereferencing was Euler, published completely in 1966-01,
               | but this feature had already been published in 1965-11.
               | The first mainstream programming language, with a large
               | installed base, which had pointers, was the revised IBM
               | PL/I, starting with its version from 1966-07.
               | 
               | Thanks for the link to the book describing the "Kiev"
               | computer. It seems an interesting computer for the year
               | 1957, but it does not have anything to do with the use of
               | pointers in high-level programming languages.
               | 
               | At the page indicated by you there is a description of
               | what appears to be a symbolic assembler. The use of a
               | symbolic assembly language was a great progress at that
               | early date, because many of the first computer programs
               | had been written directly in machine language, or just
               | with a minimal translation, e.g. by using mnemonics
               | instead of numeric opcodes.
               | 
               | However this does not have anything to do with HLL
               | pointers and means to indicate indirect addressing in an
               | assembly language have existed earlier, because they were
               | strictly necessary for any computed that provided
               | indirect addressing in hardware.
               | 
               | In the very first computers, the instructions were also
               | used as pointers, so a program would modify the address
               | field of an instruction, which was equivalent to
               | assigning a new value to a pointer, before re-executing
               | the instruction.
               | 
               | Later, to avoid the re-writing of instructions, both
               | index registers and indirect addressing were introduced.
               | Indirect addressing typically reserved one bit of an
               | address to mark indirection. So when the CPU loaded a
               | word from the memory, if the indirect addressing bit was
               | set, it would interpret the remainder of the word as a
               | new address, from which a new word would be loaded. This
               | would be repeated if the new word also had the
               | indirection bit set.
               | 
               | The assembly languages just had to use some symbol to
               | indicate that the indirection bit must be set, which
               | appears to have been "prime" for "Kiev".
        
               | Milpotel wrote:
               | > the first language having pointers with explicit
               | dereferencing was Euler, published completely in 1966-01
               | 
               | I could only find a manual for PDP-10 Euler with
               | references. Do you have a source for an Euler with
               | pointers?
        
               | adrian_b wrote:
               | "Reference" was the original term used in the languages
               | derived from ALGOL for what is now called "pointer".
               | 
               | The distinction that exists in C++ between "reference"
               | and "pointer" is something very recent. In the past the 2
               | terms were synonymous.
               | 
               | The term "pointer" was introduced by IBM PL/I in July
               | 1966, where it replaced "reference".
               | 
               | PL/I has introduced many terms that have replaced
               | previously used terms. For example:
               | 
               | reference => pointer
               | 
               | record => structure
               | 
               | process => task
               | 
               | and a few others that I do not remember right now.
               | 
               | "Pointer" and "structure" have become dominant after they
               | have been taken by the C language from PL/I and then C
               | has become extremely popular. Previously "reference" and
               | "record" were more frequently used.
        
               | Milpotel wrote:
               | But the "references" in Euler seem to be close to
               | references nowadays. There is no access to the address,
               | no pointer arithmetic etc. such as in PL/I.
        
               | adrian_b wrote:
               | Euler had both an address-of operator, which was prefix
               | "@" and an indirect addressing a.k.a. pointer
               | dereferencing operator, which was a postfix middle dot.
               | 
               | So it had everything that C has, except pointer
               | arithmetic.
               | 
               | Only a subset of the programming languages that have
               | pointers also allow pointer arithmetic, because many
               | believe that whenever address arithmetic is needed only
               | indices shall be used, not pointers, because with indices
               | it is much easier for the compiler to determine the range
               | of addresses that may be accessed.
        
               | elch wrote:
               | Pity you didn't look a little further, where there was
               | more syntax and semantics... The concept of a high-level
               | language is, of course, relative, but if, for example,
               | someone considers Forth to be an HLL, then imho, the
               | language/formalism from the book about the Kiev machine
               | was definitely one, and it was described in more detail
               | by its chief architect, Katherine Yushchenko, in a book
               | from 1963: https://it-history.lib.ru/TEXTS/Adresnoe-
               | programmirovanie_EY...
               | 
               | If you are still interested, you can look at page 35,
               | where there are several examples, including finding the
               | GCD.
        
             | adrian_b wrote:
             | You should provide a citation for where Bud Lawson has
             | published his invention.
             | 
             | The use of pointers in assembly language does not count as
             | an invention, as it was used since the earliest automatic
             | computers. The use of implicit reference variables, which
             | cannot be manipulated by the programmer, like in FORTRAN IV
             | (1962) does not count as pointers.
             | 
             | The method for forcing another level of evaluation of a
             | variable by using a "$" prefix, which was introduced in
             | SNOBOL in January 1964, and which has been inherited by the
             | UNIX shell and its derivatives does not count as a pointer.
             | 
             | The term "pointer" was introduced in a revision of the IBM
             | PL/I language, which was published in July 1966. In all
             | earlier publications that I have ever seen the term used
             | was "reference", not "pointer".
             | 
             | There are 2 high-level programming languages that were the
             | first to introduce explicit references (i.e. pointers). One
             | language was Euler, published in January 1966 by Niklaus
             | Wirth and Helmut Weber. However Hoare knew about this
             | language before the publication, so he mentioned it in his
             | paper from November 1965, where he discussed the use of
             | references (i.e. pointers).
             | 
             | The other language was the language CPL, which had
             | references already in August 1963. The difference between
             | how CPL used references and how Euler used references is
             | that in Euler pointer dereferencing was explicit, like
             | later in Pascal or in C. On the other hand, in CPL (the
             | ancestor of BCPL), dereferencing a pointer was implicit, so
             | you had to use a special kind of assignment to assign a new
             | value to a pointer, instead of assigning to the variable
             | pointed by the pointer.
             | 
             | Looking now in Wikipedia, I see a claim that Bud Lawson has
             | invented pointers in 1964, but there is no information
             | about where he has published this and about which is the
             | high-level programming language where the pointers of Bud
             | Lawson had been used.
             | 
             | If the pointers of Bud Lawson were of the kind with
             | explicit dereferencing, they would precede by a year the
             | Euler language.
             | 
             | On the other hand, if his pointers were with implicit
             | dereferencing, then they came a year after the British
             | programming language CPL.
             | 
             | Therefore, in the best case for Bud Lawson, he could have
             | invented an explicit dereferencing operator, like the "*"
             | of C, though this would not have been a great invention,
             | because dereferencing operators were already used in
             | assembly languages, they were missing only in high-level
             | languages.
             | 
             | However, the use of references a.k.a. pointers in a high-
             | level programming language has already been published in
             | August 1963, in the article "The main features of CPL", by
             | Barron, Buxton, Hartley, Nixon and Strachey.
             | 
             | Until I see any evidence for this, I consider that any
             | claim about Bud Lawson inventing pointers is wrong. He
             | might have invented pointers in his head, but if he did not
             | publish this and it was not used in a real high-level
             | programming language, whatever he invented is irrelevant.
             | 
             | I see on the Internet a claim that he might have been
             | connected with the pointers of IBM PL/I.
             | 
             | This claim appears to be contradicted by the evidence. If
             | Bud Lawson had invented pointers in 1964, then the
             | preliminary version of PL/I would have had them.
             | 
             | In reality, the December 1964 version of PL/I did not have
             | pointers. Moreover, the first PL/I version used in
             | production, from the middle of 1965 also did not have
             | pointers.
             | 
             | The first PL/I version that has added pointers was
             | introduced only in July 1966, long enough after the widely-
             | known publications of Hoare and of Wirth about pointers.
             | That PL/I version also added other features proposed by
             | Hoare, so there is no doubt that the changes in the
             | language were prompted by the prior publications.
             | 
             | So I think that the claim that Bud Lawson has invented
             | pointers is certainly wrong. He might have invented
             | something related to pointers, but not in 1964.
             | 
             | PL/I had one original element, the fact that pointer
             | dereferencing was indicated by replacing "." with "->".
             | This has later been incorporated in the language C, to
             | compensate its mistake of making "*" a prefix operator.
             | 
             | The "->" operator is the only invention of PL/I related to
             | pointers, so that is a thing that has been invented by an
             | IBM employee, but I am not aware of any information about
             | who that may be. In any case, this was not invented in
             | 1964, but in 1966.
        
               | elch wrote:
               | He (Lawson) can only point to his paper from 1967 and the
               | fact that in 1964 he was asked to join PL/I team due to
               | his earlier published works on linked lists.
               | 
               | https://dl.acm.org/doi/epdf/10.1145/363332.363344
               | 
               | PS He didn't mention it in his recollections [1], but
               | 1978 paper _The Early History and Characteristics of PL
               | /I_ [2] claims that a paper was produced in October 1965.
               | 
               | [1] https://archive.computerhistory.org/resources/access/
               | text/20... [2]
               | https://dl.acm.org/doi/pdf/10.1145/960118.808389
        
               | adrian_b wrote:
               | Thanks for the link to his paper.
               | 
               | Like I have said, PL/I did not have pointers in the
               | beginning, i.e. since 1964 until July 1966.
               | 
               | So I think that this claim about Lawson having invented
               | pointers comes from a misunderstanding. It is likely that
               | Lawson has been the lead developer for adding pointers to
               | PL/I.
               | 
               | Someone has heard this and because the first version of
               | PL/I was developed during 1964, a false conclusion was
               | inferred, i.e. that Lawson had invented pointers in 1964,
               | before Euler.
               | 
               | That conclusion was wrong, because pointers have been
               | added to PL/I much later, not during the initial
               | development.
               | 
               | The paper written by Lawson about using pointers was sent
               | for publication in August 1966, i.e. one month after the
               | official introduction of a new PL/I version with
               | pointers.
               | 
               | Due to the timing of the implementation of a PL/I
               | extension with pointers, a short time after a public
               | debate about how programming languages such as ALGOL must
               | be improved, with most proposals integrated and analyzed
               | in the papers published by Hoare, Wirth and a few others,
               | I believe that it is rather certain that the impulse to
               | add pointers to PL/I was not internal to IBM, but it was
               | caused directly or indirectly by watching this debate.
               | 
               | The paper written by Radin, linked by you, confirms that
               | IBM has added pointers to PL/I after an important
               | customer, General Motors, has requested this, presumably
               | in Q4 1965.
               | 
               | Because Lawson was the one who reported the end result of
               | this work of extending PL/I with pointers, I assume that
               | he was the lead developer of this project, which must
               | have happened mostly during the first half of 1966.
               | 
               | As I have said, the only original element of the PL/I
               | pointers was the "->" indirect addressing operator.
               | Unlike in C, no other operator was needed, because PL/I
               | followed the recommendation of Hoare, which was to use
               | pointers only as structure members, where they are useful
               | for implementing linked data structures, and not also as
               | independent variables.
               | 
               | Therefore it seems likely that Harald Lawson was the one
               | who invented the "->" operator.
               | 
               | However, he clearly had not invented pointers, as those
               | (under the alternative name of "references") had been
               | used earlier in the languages CPL and Euler and the
               | implementation of pointers in PL/I done by Lawson
               | followed closely the recommendations made by Hoare in his
               | "Record Handling" paper.
        
           | bazoom42 wrote:
           | The mistake was not null references per se. The mistake was
           | having _all_ references be implicitly nullable.
           | 
           | He states around minute 25 the solution to the problem is to
           | explicitly represent null in the type system, so nullable
           | pointers are explicitly declared as such. But it can be
           | complex to ensure that non-nullable references are always
           | initialized to a non-null value, which is why he chose the
           | easy solution to just let every reference be nullable.
        
             | deathanatos wrote:
             | I think even having references that aren't necessarily null
             | is only part of it. Image that your language supports two
             | forms of references, one nullable, one not. Let's just
             | borrow C++ here:                 &ref_that_cannot_be_null
             | *ref_that_can_be_null
             | 
             | The latter is _still_ a bad idea, even if it isn 't the
             | only reference form, and even if it isn't the default, if
             | it lets you do this:
             | ref_that_can_be_null->thing()
             | 
             | Where only things that are, e.g., type T have a `thing`
             | attribute. Nulls are "obviously" not T, but a good number
             | of languages' type system which permit nullable reference,
             | or some form of it, permit treating what is _in actuality_
             | T|null in the type system _as if_ it were just T, usually
             | leading to some form of runtime failure if null is actually
             | used, ranging from UB (in C, C++) to panics /exceptions
             | (Go, Java, C#, TS).
             | 
             | It's an error that can be caught by the type system (any
             | number of other languages demonstrate that), and null
             | pointer derefs are one of those bugs that just plague the
             | languages that have it.
        
               | bazoom42 wrote:
               | TypeScript actually supports nulls through type unions,
               | exactly as Hoare suggests. It will not let you derefence
               | a possibly-null value without a check.
               | 
               | C# also supports null-safety, although less elegantly and
               | as opt-in. If enabled, it won't let you deference a
               | possibly-null reference.
        
               | tialaramex wrote:
               | > If enabled, it won't let you deference a possibly-null
               | reference.
               | 
               | It will moan, it doesn't stop you from doing it, our C#
               | software is littered with intentional "Eh, take my word
               | for it this isn't null" and even more annoying, "Eh, it's
               | null but I swear it doesn't matter" code that the
               | compiler moans about but will compile.
               | 
               | The C# ecosystem pre-dates nullable reference types and
               | so does much of our codebase, and the result is that you
               | can't reap all the benefits without disproportionate
               | effort. Entity Framework, the .NET ORM is an example.
        
               | bazoom42 wrote:
               | You can certainly set unsafe null dereferencs to be a
               | compiler error in C#. It is just not the default for
               | reasons of backwards compatibility.
        
               | mrsmrtss wrote:
               | Add WarningsAsErrors for prject and you are done.
        
         | embit wrote:
         | Talking about Quicksort, John Bentley's deep dive in Quicksort
         | is quite illuminating.
         | https://m.youtube.com/watch?v=QvgYAQzg1z8
        
           | znpy wrote:
           | oh man, google tech talks. what a throwback.
           | 
           | there was a time, 10-15 years ago, when they were super cool.
           | at some point they """diluted""" the technicality content and
           | the nature of guests and they vanished into irrelevance.
        
             | senderista wrote:
             | much like google doodle
        
         | madsohm wrote:
         | They were never concurrent, they were communicating.
         | https://en.wikipedia.org/wiki/Communicating_sequential_proce...
        
           | adrian_b wrote:
           | That is indeed the correct title, but the processes were
           | concurrent.
           | 
           | However, they were not just concurrent, but also
           | communicating.
        
         | adrian_b wrote:
         | He also invented many other things, like enumeration types,
         | optional types, constructors. He popularized the "unions"
         | introduced by McCarthy, which were later implemented in ALGOL
         | 68, from where a crippled form of them was added to the C
         | language.
         | 
         | Several keywords used in many programming languages come from
         | Hoare, who either coined them himself, or he took them from
         | another source, but all later programming language designers
         | took them from Hoare. For example "case", but here only the
         | keyword comes from Hoare, because a better form of the "case"
         | statement had been proposed first by McCarthy many years
         | earlier, under the name "select".
         | 
         | Another example is "class" which Simula 67, then all object-
         | oriented languages took from Hoare, However, in this case the
         | keyword has not been used first by Hoare, because he took
         | "class", together with "record", from COBOL.
         | 
         | Another keyword popularized by Hoare is "new" (which Hoare took
         | from Wirth, but everybody else took from Hoare), later used by
         | many languages, including C++. At Hoare, the counterpart of
         | "new" was "destroy", hence the name "destructor", used first in
         | C++.
         | 
         | The paper "Record Handling", published by C.A.R. Hoare in
         | 1965-11 was a major influence on many programming languages. It
         | determined significant changes in the IBM PL/I programming
         | language, including the introduction of pointers . It also was
         | the source of many features of the SIMULA 67 and ALGOL 68
         | languages, from where they spread in many later programming
         | languages.
         | 
         | The programming language "Occam" has been designed mainly as an
         | implementation of the ideas described by Hoare in the
         | "Communicating Sequential Processes" paper published in
         | 1978-08. OpenMP also inherits many of those concepts, and some
         | of them are also in CUDA.
        
           | EdNutting wrote:
           | And, of course, the Go programming language.
        
             | linhns wrote:
             | I would not say he invented Go, although Go is probably the
             | only relevant implementation of CSP nowadays.
        
               | EdNutting wrote:
               | I was adding Go to the list at the very end of the
               | comment:
               | 
               | >OpenMP also inherits many of those concepts, and some of
               | them are also in CUDA.
        
       | sourcegrift wrote:
       | Assert early, assert often!
        
       | john_strinlai wrote:
       | https://news.ycombinator.com/item?id=47316880
       | 
       | 249 points by nextos 16 hours ago | 61 comments
        
         | dang wrote:
         | Thanks! We'll merge those comments hither.
        
       | brian_herman wrote:
       | Needs a black bar!
        
         | srean wrote:
         | Seconded.
        
         | als0 wrote:
         | Finally. The black bar is there.
        
       | criddell wrote:
       | Tony's _An Axiomatic Basis for Computer Programming_ [1] is the
       | first academic paper that I read that I was able to understand
       | when I was an undergrad. I think it unlocked something in me
       | because before that I never believed that I would be able to read
       | and understand scientific papers.
       | 
       | That was 35ish years ago. I just pulled up the paper now and I
       | can't read the notation anymore... This might be something that I
       | try applying an AI to. Get it to walk me through a paper
       | paragraph-by-paragraph until I get back up to speed.
       | 
       | [1]:https://dl.acm.org/doi/10.1145/363235.363259
        
         | rramadass wrote:
         | Followup on the above with these two classics;
         | 
         |  _Retrospective: An Axiomatic Basis For Computer Programming._
         | This was written 30 years after _An Axiomatic Basis for
         | Computer Programming_ to take stock on what was proven right
         | and what was proven wrong -
         | https://cacm.acm.org/opinion/retrospective-an-axiomatic-basi...
         | 
         |  _How Did Software Get So Reliable Without Proof?_ More
         | detailed paper on the above theme (pdf) -
         | https://6826.csail.mit.edu/2020/papers/noproof.pdf
        
           | ontouchstart wrote:
           | Thanks for the recommendation. I downloaded both social.pdf
           | and noproof.pdf on my Kindle Scribe to read them carefully
           | and revisited the discussions on EWD638 and EWD692.
           | 
           | It is very interesting to see how Sir Tony diverged from EDW:
           | one is right in theoretical sense but cynical about human
           | fallacies and how the society is heading towards more
           | wasteful complexity, one is to live with it and stay
           | optimistic.
           | 
           | There is a proverb in Chinese Taoism:
           | 
           | Xiao Yin Yin Yu Ye ,Da Yin Yin Yu Shi
           | 
           | A small recluse hides in the wild, while a great recluse
           | hides in the city
        
             | rramadass wrote:
             | Nice comparison of Hoare vs. Dijkstra.
             | 
             | Hoare was more focused and diplomatic while Dijkstra was
             | more of a free-ranging philosopher.
             | 
             | I still remember the first time i came across Hoare
             | Logic/Triple and Dijkstra's GCL/Weakest precondition,
             | understanding nothing and feeling like a complete dolt.
             | 
             | As a young'un i thought knowing the syntax of a language
             | and learning some idioms/patterns was all you needed for
             | programming. Reading Hoare/Dijkstra showed me where
             | mathematical theory met programming practice.
        
         | aembleton wrote:
         | I can recommend NotebookLM [1] for reading through scientific
         | papers. You can then ask it questions and even get a podcast
         | generated.
         | 
         | 1. https://notebooklm.google/
        
           | vermilingua wrote:
           | Please don't, can't we just have _one_ thread without this
           | shit
        
       | Plasmoid wrote:
       | Fun story - at Oxford they like to name buildings after important
       | people. Dr Hoare was nominated to have a house named after him.
       | This presented the university with a dilemma of having a literal
       | `Hoare house` (pronounced whore).
       | 
       | I can't remember what Oxford did to resolve this, but I think
       | they settled on `C.A.R. Hoare Residence`.
        
         | petesergeant wrote:
         | I was awarded the CAR Hoare prize from university, which is
         | marginally better than the hoare prize I suppose
        
         | davidhunter wrote:
         | There's the Tony Hoare Room [1] in the Robert Hooke Building.
         | We held our Reinforcement Learning reading group there.
         | 
         | [1]
         | https://www.cs.ox.ac.uk/people/jennifer.watson/tonyhoare.htm...
        
           | 2001zhaozhao wrote:
           | I had countless lectures and classes there
        
           | pbhjpbhj wrote:
           | >our Reinforcement Learning reading group there //
           | 
           | Anyone else, like me, imagining ML models embodied as
           | Androids attending what amounts to a book club? (I can't
           | quite shake the image of them being little CodeBullets with
           | CRT monitors for heads either.)
        
             | mghackerlady wrote:
             | The CB reference is appreciated, he isn't talked about
             | enough here
        
         | riazrizvi wrote:
         | Cowards.
        
         | cucumber3732842 wrote:
         | Shame the university takes itself so seriously. The
         | illustrative example of overloading would have been pertinent
         | to his subject of expertise.
        
           | skybrian wrote:
           | I mean, I like puns but they're a flash in the pan. Jokes get
           | old after a while and you don't want to embed them in
           | something fairly permanent like a building name.
        
             | cucumber3732842 wrote:
             | "Surely you've all heard of the Hoare house on campus?"
             | seems like a pretty timeless way to a) keep people from
             | dozing off during that bit of lecture b) cause a whole
             | bunch of people to remember who this guy was and what he
             | did.
        
             | yborg wrote:
             | This particular word for the oldest profession goes back to
             | Old English. I am fairly sure it would outlive the
             | building.
        
               | skybrian wrote:
               | If the problem is when the joke lives on amusing
               | undergrads long after you've tired of it, that just makes
               | it worse.
        
               | Lio wrote:
               | Wait until they hear about what Magpie Lane in Oxford
               | used to be called.
               | 
               | https://en.wikipedia.org/wiki/Magpie_Lane,_Oxford
        
               | windward wrote:
               | A historical bawdy pun is one of the most Oxfordian
               | things I can think of. If we can incorporate a man in
               | drag, we're in real business.
        
           | bell-cot wrote:
           | "Hoare House" would trigger millions of idiots, from rude
           | little children to pontifying alpha ideologues. In
           | perpetuity.
           | 
           | The University was correct in saying "nope" to the endless
           | distractions, misery, and overhead of having to deal with
           | that.
        
         | jgrahamc wrote:
         | Imagine being a world-famous computer scientist and dying and
         | one of the top threads in a discussion of your life is juvenile
         | crap about how your name sounds like "whore".
        
           | fuzzylightbulb wrote:
           | Imagine being an adult human but not being able to extract a
           | tiny chuckle from such a silly thing.
        
             | jgrahamc wrote:
             | Well, I do have a rather special last name which makes me
             | susceptible.
        
           | mghackerlady wrote:
           | Chill out, I doubt he would've minded and humorous anecdotes
           | are great ways to grieve
        
         | jdswain wrote:
         | Our Graphics Lab at University used to be in an old house
         | opposite a fish and chip shop. The people at the fish and chip
         | shop were suspicious of our lab as all they saw was young men
         | (mostly) entering and leaving at all hours of the night. We
         | really missed an opportunity to name it "Hoare House" after one
         | of our favourite computer scientists.
        
       | groos wrote:
       | I've had the good fortune to attend two of his lectures in
       | person. Each time, he effortlessly derived provably correct code
       | from the conditions of the problem and made it seem all too easy.
       | 10 minutes after leaving the lecture, my thought was "Wait, how
       | did he do it again?".
       | 
       | RIP Sir Tony.
        
       | ziyao_w wrote:
       | Random anecdote and Mr. Hoare (yep not a Dr.) has always been one
       | of my computing heroes.
       | 
       | Mr. Hoare did a talk back during my undergrad and for some reason
       | despite totally checked out of school I attended, and it is one
       | of my formative experiences. AFAICR it was about proving program
       | correctness.
       | 
       | After it finished during the Q&A segment, one student asked him
       | about his opinions about the famous Brooks essay No Silver Bullet
       | and Mr. Hoare's answer was... total confusion. Apparently he had
       | not heard of the concept at all! It could be a lost in
       | translation thing but I don't think so since I remember
       | understanding the phrase "silver bullet" which did not make any
       | sense to me. And now Mr. Hoare and Dr. Brooks are two of my all
       | time computing heroes.
        
         | EdNutting wrote:
         | "Sir", not "Mr." if you're going to be pedantic about titles ;)
         | 
         | Edit: Oh and he has multiple honorary doctorates (at least 6!),
         | so would be just as much "Dr." too!
        
           | tialaramex wrote:
           | It is _not_ usual to call people with an honorary doctorate
           | "Doctor" except in the context of the awarding institution.
           | Most likely the awarding institutions will have actually
           | specified that the recipient should not give anybody the
           | false impression and I can't imagine Tony is the type to do
           | otherwise.
        
             | robotresearcher wrote:
             | His title at Oxford was 'Professor', and he was addressed
             | as 'Tony'.
             | 
             | He made incoming DPhil (PhD) students a cup of tea
             | individually in his office at the Computing Laboratory. It
             | was a small group, but still I appreciated this personal
             | touch.
        
               | tialaramex wrote:
               | I never met Tony, but I liked his work. I'm not much of a
               | one for tea, but I don't think either of my PhD
               | supervisors ever bought me a drink - I didn't finish (got
               | cancer, I'm fine now+, some cancers are very curable, but
               | frankly I was struggling anyway so it was a good excuse
               | to quit) and I'm sure it's traditional to buy something a
               | bit harder than a cup of tea if you pass, but I didn't
               | get that far.
               | 
               | Anyway my point here was just a PSA that honorary degrees
               | "don't count". If somebody only has an honorary doctorate
               | but insists on being called "Doctor" they're an asshole.
               | In fact, even outside University I know a lot of MDs and
               | PhDs and in most contexts if they insist on the title
               | "Doctor" they're an asshole even though they're entitled.
               | 
               | + Well not _fine_ , I'm old but I think that's an
               | inevitable side effect of surviving so the alternative
               | was worse.
        
               | EdNutting wrote:
               | There's having An honorary degree... and then there's
               | having 6 of them plus numerous other awards, and all the
               | achievements to back them up :)
               | 
               | Regardless, I've met people with only honorary
               | doctorates, and it's a mixed bag when it comes to
               | preferred titles. Often, though, the ones that really
               | care, soon acquire a 'superior' title anyway, so it ends
               | up becoming a moot point.
        
               | robotresearcher wrote:
               | You're right. And 'Professor' comes and goes with the
               | job, independent of degrees held.
        
           | ziyao_w wrote:
           | Lol you are totally right! ;-)
           | 
           | I am normally a casual guy but for a giant being a bit more
           | formal (pun intended) seems appropriate. Or maybe I am a nerd
           | through and through :-)
        
       | jgrahamc wrote:
       | He was the professor in the Programming Research Group (known
       | universally as the PRG) at Oxford when I was doing my DPhil and
       | interviewed me for the DPhil. I spent quite a bit of time with
       | him and, of course, spent a lot of time doing stuff with CSP
       | including my entire DPhil.
       | 
       | Sad to think that the TonyHoare process has reached STOP.
       | 
       | RIP.
        
         | tombert wrote:
         | I think I and most people had hoped that he would DIV instead.
        
       | carterschonwald wrote:
       | this is black bar grade great. give us black bar
        
       | rvz wrote:
       | RIP Sir Tony Hoare
       | 
       | Turing Award Legend.
        
       | pjmlp wrote:
       | Rest in peace, he hasn't seen the industry change.
       | 
       | "A consequence of this principle is that every occurrence of
       | every subscript of every subscripted variable was on every
       | occasion checked at run time against both the upper and the lower
       | declared bounds of the array. Many years later we asked our
       | customers whether they wished us to provide an option to switch
       | off these checks in the interests of efficiency on production
       | runs. Unanimously, they urged us not to they already knew how
       | frequently subscript errors occur on production runs where
       | failure to detect them could be disastrous. I note with fear and
       | horror that even in 1980 language designers and users have not
       | learned this lesson. In any respectable branch of engineering,
       | failure to observe such elementary precautions would have long
       | been against the law."
       | 
       | -- C.A.R Hoare's "The 1980 ACM Turing Award Lecture"
        
       | brchr wrote:
       | "I never had a doctorate, so I had to make do with Quicksort."
       | --Sir Tony Hoare (unpublished interview for Algorithms to Live
       | By)
        
       | madsohm wrote:
       | I wrote both my master thesis and PhD on Hoare's Communicating
       | Sequential Processes. I really enjoyed it's simplicity,
       | expandability, and was always amazed that it inspired and
       | influenced language constructs in Go, Erlang, occam and the
       | likes.
        
       | krylon wrote:
       | Rest in peace.
        
       | shaunxcode wrote:
       | Absolutely the GOAT of concurrency. May his ring never die.
        
       | pradn wrote:
       | He came to give a lecture at UT Austin, where I did my undergrad.
       | I had a chance to ask him a question: "what's the story behind
       | inventing QuickSort?". He said something simple, like "first I
       | thought of MergeSort, and then I thought of QuickSort" - as if it
       | were just natural thought. He came across as a kind and humble
       | person. Glad to have met one of the greats of the field!
        
         | srean wrote:
         | Happy to meet you. I was there and I remember that question
         | being asked. I think it was 2010.
         | 
         | If I remember correctly he had two immediate ideas, his first
         | was bubble sort, the second turned out to be quicksort.
         | 
         | He was already very frail by then. Yet clarity of mind was
         | undiminished. What came across in that talk, in addition to his
         | technical material, was his humor and warmth.
        
           | pradn wrote:
           | That's right - it was bubble sort first. Absolutely - frail,
           | yet sharp. I'm happy to hear several of us didn't forget this
           | encounter with him.
        
         | gsanghani wrote:
         | I remember this vividly! I believe he said that he thought of
         | _Bubble Sort_ first, but that it was too slow, so he came up
         | with QuickSort next
        
           | pradn wrote:
           | Good to hear from you after a while, Gaurav (I think?!).
        
         | mceachen wrote:
         | He discusses this and his sixpence wager here:
         | https://youtu.be/pJgKYn0lcno
         | 
         | (Source: TFA)
        
         | asimpletune wrote:
         | Haha I was there too. I remember he made thinking clearly seem
         | so simple. What a humble man.
         | 
         | If I remember correctly, his talk was about how the world of
         | science-the pure pursuit of truth-and the world of engineering-
         | the practical application of solutions under constraints-had to
         | learn from each other.
        
           | pradn wrote:
           | I'm glad you remember it as well! I didn't think to see if
           | there was a recording or something of this talk, until now.
           | It looks like the text of the talk was published here: https:
           | //www.cs.utexas.edu/~EWD/DijkstraMemorialLectures/Tony...
           | 
           | And the talk wasn't a random talk, but a memorial talk for
           | Dijkstra: "The 2010 Edsger W. Dijkstra Memorial Lecture". I
           | forgot this aspect as well!
        
       | paul wrote:
       | One of my favorite quotes: "There are two ways of constructing a
       | software design: One way is to make it so simple that there are
       | obviously no deficiencies, and the other way is to make it so
       | complicated that there are no obvious deficiencies."
       | 
       | I think about this a lot because it's true of any complex system
       | or argument, not just software.
        
         | withoutboats3 wrote:
         | This is indeed a great quote (one of many gems from Sir Tony)
         | but I think the context that follows it is also an essential
         | insight:
         | 
         | > The first method is far more difficult. It demands the same
         | skill, devotion, insight, and even inspiration as the discovery
         | of the simple physical laws which underlie the complex
         | phenomena of nature. It also requires a willingness to accept
         | objectives which are limited by physical, logical, and
         | technological constraints, and to accept a compromise when
         | conflicting objectives cannot be met. No committee will ever do
         | this until it is too late.
         | 
         | (All from his Turing Award lecture, "The Emperor's Old
         | Clothes":
         | https://www.labouseur.com/projects/codeReckon/papers/The-
         | Emp...)
        
           | 1vuio0pswjnm7 wrote:
           | "No committee will ever do this until it is too late."
           | 
           | The software I like best was not written by "teams"
           | 
           | I prefer small programs written by individuals that generally
           | violate memes like "software is never finished" and "all
           | software has bugs"
           | 
           | (End user perspective, not a developer)
        
             | hinkley wrote:
             | One of my biggest accomplishments was shipping a suite of 5
             | apps from four divisions where three of them resented each
             | other's existence and seemed bound and determined to build
             | rules in the system that made sure the other two couldn't
             | function. Which made no goddamn sense because it was a
             | pipeline and you can't get anything out one end if it gets
             | jammed in the middle.
             | 
             | I was brought in to finish building the interchange format.
             | The previous guy was not up to snuff. The architect I
             | worked for was (with love) a sarcastic bastard who
             | eventually abdicated about 2 rings of the circus to me. He
             | basically took some of the high level meetings and tapped
             | in when one of us thought I might strangle someone.
             | 
             | Their initial impression was that I was a prize to be
             | fought over like a child in a divorce. But the guy who
             | gives you your data has you by the balls, if he is smart
             | enough to realize it, so it went my way nine times out of
             | ten. It was a lot of work threading that needle, (I've
             | never changed the semantics of a library so hard without
             | changing the syntax), but it worked out for everyone. By
             | the time we were done the way things worked vs the way they
             | each wanted it to work was on the order of twenty lines of
             | code on their end, which I essentially spoonfed them so
             | they didn't have a lot of standing to complain. And our
             | three teams always delivered within 15% of estimates, which
             | was about half of anyone else's error bar so we lowly
             | accreted responsibilities.
             | 
             | I ended up as principal on that project (during a
             | hiring/promotional freeze on that title. I felt bad for
             | leaving within a year because someone pulled strings for
             | that, but I stayed until I was sure the house wouldn't burn
             | down after I left, and I didn't have to do that). I must
             | have said, "compromise means nobody gets their way." About
             | twenty times in or between meetings.
        
               | mathattack wrote:
               | These are the projects that give us confidence.
        
             | awesome_dude wrote:
             | It's the committee vs the dictator issue - a small driven
             | individual (or group) can achieve a lot, but they can also
             | turn into tyrants.
             | 
             | A committee forms when there's widespread disagreement on
             | goals or priorities - representing stakeholders who can't
             | agree. The cost is slower decisions and compromise
             | solutions. The benefit is avoiding tyranny of a single
             | vision that ignores real needs.
        
             | 1vuio0pswjnm7 wrote:
             | Also, this software is free. Generally the authors were not
             | paid to write it
        
           | jdironman wrote:
           | From the linked lecture, which I printed out to read as part
           | of a new less is more screen time management regime (where I
           | print out longer form writing for reading) I found this very
           | interesting tidbit in the context of Tony having made a
           | delivery miscalculation and his team failing to deliver on
           | one of their products; which is where I think a lot people
           | are today with LLMs:
           | 
           | "Each of my managers explained carefully his own theory of
           | what had gone wrong and all the theories were different. At
           | last, there breezed into my office the most senior manager of
           | all, a general manager of our parent company, Andrew St.
           | Johnston. I was surprised that he had even heard of me.
           | 
           | "You know what went wrong?" he shouted--he always shouted --
           | "You let your programmers do things which you yourself do not
           | understand." I stared in astonishment. "
        
           | dilawar wrote:
           | "At first I hoped that such a technically unsound project
           | would collapse but I soon realized it was doomed to success.
           | Almost anything in software can be implemented, sold, and
           | even used given enough determination. There is nothing a mere
           | scientist can say that will stand against the flood of a
           | hundred million dollars. But there is one quality that cannot
           | be purchased in this way-- and that is reliability. The price
           | of reliability is the pursuit of the utmost simplicity. It is
           | a price which the very rich find most hard to pay."
           | 
           | This explain quite a lot actually!
        
             | kakacik wrote:
             | Very poignant, thank you. I can see my absolute core
             | principle - KISS reflected in this. I still struggle to
             | find a single use in my career where it wouldn't be the
             | best approach, especially long term.
        
         | tosh wrote:
         | aged very well
        
         | eitally wrote:
         | Reminds me of this Pascal quote: "I would have written a
         | shorter letter, but I did not have the time."
         | 
         | https://www.npr.org/sections/13.7/2014/02/03/270680304/this-...
        
           | Paracompact wrote:
           | "Perfection is achieved, not when there is nothing more to
           | add, but when there is nothing left to take away."
           | 
           | Antoine de Saint-Exupery
        
             | ultratalk wrote:
             | "The greatest ideas are the simplest."
             | 
             | - William Golding
        
         | draygonia wrote:
         | Reminds me of this quote... "A complex system that works is
         | invariably found to have evolved from a simple system that
         | worked. A complex system designed from scratch never works and
         | cannot be patched up to make it work."
        
           | dang wrote:
           | https://en.wikipedia.org/wiki/John_Gall_(author)#Gall's_law
           | 
           | The book is well worth reading.
           | 
           | https://news.ycombinator.com/item?id=9948767
        
             | andyjohnson0 wrote:
             | Seconded.
             | 
             | Someone once described Systemantics as the book that systwm
             | designers read under the covers at night with a torch.
        
               | dang wrote:
               | or should do!
        
               | ontouchstart wrote:
               | Reading it now on Kindle Scribe without the help of AI
               | ;-).
               | 
               | When I am done, I might simply replace SOUL.md with it
               | and move on.
        
             | toomuchtodo wrote:
             | https://openlibrary.org/books/OL4904457M/Systemantics
             | 
             | (Systemantics is available for borrowing, Systems Bible is
             | not yet, a copy has been sent for digitizing)
        
         | hinkley wrote:
         | We are poorer for him having waited to drop that sentence at
         | his Turing Award acceptance speech. I use it all the time.
         | 
         | Tony might be my favorite computer scientist.
        
         | Pxtl wrote:
         | Good thing we now have technology that allows us to crank out
         | complex software at rates never-before seen.
        
           | rockinghigh wrote:
           | It can also be used to simplify existing code bases.
        
           | pocksuppet wrote:
           | Complex software full of very obvious deficiencies that
           | nobody bothered to look for.
        
         | HerbManic wrote:
         | One of the policies of The Rhinoceros Party in Canada was to
         | increase the complexity of the taxation system so much that
         | nobody could find the loopholes to exploit.
        
           | gerdesj wrote:
           | Had to look them up (WP), wasn't disappointed. We have the
           | Monster Raving Loony Party in the UK.
           | 
           | One of the Rhino's Party policies stands out - are you sure
           | Trump wasn't born a Cannuck and was stolen at birth by
           | racoons and smuggled down south?
           | 
           | "Annexing the United States, which would take its place as
           | the third territory in Canada's backyard (after the Yukon and
           | the Northwest Territories--Nunavut did not yet exist), in
           | order to eliminate foreign control of Canada's natural
           | resources"
        
             | mghackerlady wrote:
             | I like them
        
         | marxisttemp wrote:
         | It seems that with vibe coding our industry has finally,
         | permanently embraced the latter approach. RIP Tony.
        
           | jcgrillo wrote:
           | > permanently
           | 
           | don't bet on it
        
         | squirrellous wrote:
         | Can't argue with the quote. However my current boss has been
         | pushing this to the extreme without much respect for real-world
         | complexities (or perhaps I'm too obtuse to think of a simple
         | solution for all our problems), which regrettably gives me a
         | bit of pause when hearing this quote.
        
           | a96 wrote:
           | Reminds me of another good one: Make everything as simple as
           | possible, but not simpler. (-- probably not Einstein)
        
         | biscuits1 wrote:
         | There was an article posted here a few weeks ago titled "Nobody
         | Gets Promoted for Simplicity."
         | 
         | I've been thinking about it a lot, and now, in turn, the memory
         | of Mr. Hoare.
        
       | srean wrote:
       | As Dijkstra was preparing for his end of life, organizing his
       | documents and correspondence became an important task. Cancer had
       | snuck up on him and there was not much time.
       | 
       | One senior professor, who was helping out with this, asked
       | Dijkstra what is to be done with his correspondences. The
       | professor, quite renowned himself, relates a story where Dijsktra
       | tells him from his hospital bed, to keep the ones with "Tony" and
       | throw the rest.
       | 
       | The professor adds with a dry wit, that his own correspondence
       | with Dijsktra were in the pile too.
        
         | jonstewart wrote:
         | John Backus had some correspondence with Dijkstra that's worth
         | a read: https://medium.com/@acidflask/this-guys-arrogance-
         | takes-your...
        
           | fidotron wrote:
           | There's that immortal Alan Kay line "arrogance in computer
           | science is measured in nano Dijkstras".
        
             | srean wrote:
             | That's a famous quote and age might have mellowed him. But
             | he was not like that at all in person with his students. He
             | did insist that one be precise with ones words.
             | 
             | The origin of the quote may have more to do with cultural
             | differences between the Dutch and Americans.
        
               | blast wrote:
               | That's a great point which never occurred to me about
               | Dijkstra, even though I knew where he came from. My
               | father in law used to like this joke: "He was Dutch and
               | behaved as such."
        
               | Gibbon1 wrote:
               | I feel there is a tension between computer science is
               | math and computer science is plumbing.
        
               | bittercynic wrote:
               | Why not the both?
               | 
               | Some seem to think that math is somehow above plumbing,
               | but modern society couldn't exist without both, and I'd
               | argue that modern plumbing is more critical to our health
               | and well being than modern math.
        
               | throaskjdsakn wrote:
               | plumbing is one of those inventions that's so old we
               | forget its importance
        
               | tharkun__ wrote:
               | The plumber knows how many inches per foot the pipe has
               | to drop in order for the poop to flow away and not get
               | stuck in the pipe. It's easy enough to either not drop it
               | enough and everything gets stuck or for it to drop too
               | much and the water flows away but the poop stays in
               | place. And they're the ones that actually make it happen
               | and their clients really do care about that in the end.
               | Without knowing this the plumber is nothing. They don't
               | necessarily need to know they why and especially don't
               | need to calculate it out!
               | 
               | Some mathematician can probably calculate that properly.
               | Some mathematician probably first did calculate that out
               | to prove it. I'm not entirely certain that a
               | mathematician was the reason that we know what drop we
               | need. A lot of things in "real life" were "empirically
               | discovered" and used and done for centuries before a
               | mathematician proved it.
               | 
               | Exceptions prove the rule, like when we calculate(d)
               | things out for space travel before ever attempting it ;)
        
               | antonvs wrote:
               | I'd want to see an example of Dijkstra's "arrogance" that
               | wasn't justified.
               | 
               | The "truths that might hurt" essay is a great example.
               | Yeah, the truth hurts for many people. People don't like
               | being called out on their folly, particularly if it's
               | something they don't personally control. That Durant make
               | it "arrogant" to point it out.
               | 
               | Also, Alan Kaye is overrated. Object orientation is one
               | of those painful truths.
        
               | strken wrote:
               | I'm less concerned about "justified" and more about
               | "useful". If you behave offensively to everyone around
               | you, then you have become your own worst enemy in the war
               | of ideas.
               | 
               | Ignaz Semmelweis was right. He also died in an asylum,
               | having utterly failed to convince doctors to wash their
               | hands between patients.
        
               | ninalanyon wrote:
               | Object orientation is a great tool and I wouldn't be
               | without it. But like all tools it has to be applied in
               | the right way in the appropriate situation and is not
               | universally useful.
        
             | rramadass wrote:
             | Alan Kay himself said this quote is taken out-of-context
             | and so people need to stop repeating it -
             | https://news.ycombinator.com/item?id=11799963
        
               | justin66 wrote:
               | > and so people need to stop repeating it
               | 
               | That would seem to be your sentiment, not his, based on
               | the link you shared. Rather than being censorious he
               | shared a nice story on the matter.
        
               | rramadass wrote:
               | No, it is not my sentiment nor am i being censorious.
               | 
               | It can be inferred from Kay's own words. He probably was
               | just poking fun in a tongue-in-cheek manner often seen
               | amongst larger-than-life figures.
               | 
               | John Backus called Edsger Dijkstra arrogant since the
               | latter was highly critical of the former's research in
               | functional programming (not the substance but the
               | hyping). Kay was probably riffing off of that.
               | 
               | The problem is that a lot of noobs/kids/oldies-who-
               | should-know-better often dismiss(!) Dijkstra's work
               | because of this silly quote. Thus in this case, a "nice
               | story" is actually an obstacle to people reading
               | Dijkstra.
        
               | justin66 wrote:
               | > Kay was probably riffing off of that.
               | 
               | You don't need to hypothesize about all this, to put
               | things in their proper context you could listen to the
               | speech where he famously said it.
               | 
               | https://youtu.be/aYT2se94eU0?t=324
        
               | rramadass wrote:
               | Yeah, i knew of the video. That somewhat proves the point
               | i make here -
               | https://news.ycombinator.com/item?id=47331352
               | 
               | People only focus on that phrase since it makes a nice
               | "talking point" and ignore all the other interesting
               | things from Kay's talk. For example; i never knew that
               | most of Euler's proofs were wrong w.r.t. rigorous
               | approach as defined today!
        
               | messe wrote:
               | > It can be inferred from Kay's own words. He probably
               | was just poking fun in a tongue-in-cheek manner often
               | seen amongst larger-than-life figures.
               | 
               | ...is that not obvious from the original quote? Maybe
               | it's a cultural difference (I'm from Ireland), but that's
               | how I've _always_ interpreted and it 's never occurred to
               | me that people took it seriously or as anything other
               | than tongue in cheek.
        
               | rramadass wrote:
               | The problem is with folks who don't know/have never read
               | (seriously that is) Dijkstra.
               | 
               | For example, every time somebody posts something about
               | Dijkstra on HN/etc. somebody will trot out this silly
               | quote and then others pile on (since it requires no
               | effort) and derail any interesting conversation.
               | 
               | It is human nature to have an opinion on everything and
               | mediocrity often takes great pleasure in tearing down the
               | greats (i mean the true ones) in order to soothe their
               | own egos (since they know they don't measure up) i.e.
               | "see? the great one is as flawed/mundane as us and i am
               | showing him up".
               | 
               | And Dijkstra was Dutch who are famously known to be blunt
               | which is often perceived as arrogance by others :-)
        
               | masfuerte wrote:
               | Weirdly, that ten-year-old Alan Kay comment is shown as
               | "1 day ago" by HN.
        
               | dang wrote:
               | Oof - not sure what happened there but it was probably a
               | fat-fingered thing from me merging today's threads. Fixed
               | now. Thanks for the heads-up!
        
               | vanderZwan wrote:
               | The quote makes much more sense as an in-joke between two
               | like-minded people, because Alan Kay isn't exactly humble
               | himself nor does he avoid provocative statements.
               | 
               | And speaking as a Dutch man, given the kind of humor we
               | have I'm pretty certain Dijkstra appreciated a good roast
               | like that too.
        
               | rramadass wrote:
               | The actual context is in this video where Kay makes the
               | comment - https://news.ycombinator.com/item?id=47328782
        
               | vanderZwan wrote:
               | Have seen that presentation, but that still does not give
               | the full context. At least, I don't think it is obvious
               | from the video alone whether this remark was a friendly
               | jab between friends, or whether it was a stereotypical
               | vicious academic back-and-forth between to big names in a
               | field.
        
               | rramadass wrote:
               | I think this is the sequence that led to the quote.
               | 
               | 1) People are miffed with Dijkstra due to his abrasive
               | style.
               | 
               | 2) John Backus has a back-and-forth with Dijkstra where
               | he calls him arrogant.
               | 
               | 3) The community knows of the above.
               | 
               | 4) Dijkstra writes paper comparing Computer Science
               | approaches in Europe vs. USA in his usual sharp style.
               | 
               | 5) American Scientists perceive the above as dissing them
               | and take umbrage.
               | 
               | 6) Alan Kay writes a paper rebutting Dijkstra's paper
               | pointing out that most of the Software is written on the
               | American side.
               | 
               | 7) Alan Kay then disses Dijkstra with this quote half-in-
               | annoyance/half-tongue-in-cheek.
        
           | coffeemug wrote:
           | Incredible letters, thanks for sharing. I wish some of this
           | correspondence was published in physical books. What a joy it
           | would be to read.
        
           | PaulRobinson wrote:
           | That's a wild ride of passive aggressive academia in a field
           | I know something about. A rare treat. Thanks for sharing!
        
         | jcattle wrote:
         | What is the equivalent of correspondence today?
         | 
         | I guess back then each letter had a cost, in (delivery) time
         | and money, so you better make it count.
         | 
         | My guess is that these correspondences were often interesting
         | to read because they had to be worthwile to send because of the
         | associated cost.
        
           | augusto-moura wrote:
           | Time of delivery would be the biggest factor. Today we can
           | send multiple quick messages to anyone, at that time people
           | had to batch big discussions in a long articulated text,
           | since it would take days to it arrive.
           | 
           | I guess the closest to that nowadays would be blog articles,
           | RFC discussions or long-form email threads.
        
       | Insanity wrote:
       | RIP.
       | 
       | His presentation on his billion dollar mistake is something I
       | still regularly share as a fervent believer that using null is an
       | anti-pattern in _most_ cases.
       | https://www.infoq.com/presentations/Null-References-The-Bill...
       | 
       | That said, his contributions greatly outweigh this 'mistake'.
        
         | fooker wrote:
         | Anti patterns are great, they act as escape hatches or pressure
         | release valves. Every piece of mechanical equipment has some
         | analogue for good reason.
         | 
         | Without things like null pointers, goto, globals, unsafe modes
         | in modern safe(r) languages you can get yourself into a corner
         | by over designing everything, often leading to complex
         | unmaintainable code.
         | 
         | With judicious use of these anti-patterns you get mostly
         | good/clean design with one or two well documented exceptions.
        
           | tialaramex wrote:
           | The "goto" in languages like C or C++ is de-fanged and not at
           | all similar to the sequence break jump in "Go To Statement
           | Considered Harmful". That doesn't make it a good idea, but in
           | practice today the only place you'll see the unstructured
           | feature complained of is machine code/ assembly language.
           | 
           | You just don't need it but it isn't there as some sort of
           | "escape hatch" it's more out of stubbornness. Languages which
           | don't have it are fine, arguably easier to understand by
           | embracing structure more. I happen to like Rust's "break
           | 'label value" but there are plenty of ways to solve even the
           | trickier parts of this problem (and of course most languages
           | aren't expression based and wouldn't need a value there).
        
           | Insanity wrote:
           | That relies on a programmer doing the right thing and knowing
           | when to use the escape valve. From the codebases I've seen, I
           | don't trust humans in doing the right thing and being
           | judicious with this. But it's a good point, knowing when to
           | deviate from a pattern is a strong plus.
        
             | fooker wrote:
             | That's why code reviews exist, it's good process to make
             | code reviews mandatory.
        
               | mrkeen wrote:
               | It's too much of a stretch to call null an escape hatch,
               | or to pretend that code reviews will somehow strip it
               | out.
               | 
               | The OpenJDK HashMap returns null from get(), put() and
               | remove(), among others. Is this just because it hasn't
               | been reviewed enough yet?
        
               | fooker wrote:
               | > pretend that code reviews will somehow strip it out.
               | 
               | Code reviews 'somehow' strip out poorly thought out _new_
               | uses of escape hatches.
               | 
               | For your example, it would be an use of get, put or
               | remove without checking the result.
        
             | bazoom42 wrote:
             | > I don't trust humans in doing the right thing and being
             | judicious with this.
             | 
             | Language-level safety only protect against trivial mistakes
             | like dereferencing a null-pointer. No language can protect
             | against logical errors. If you have untrusted people
             | comitting unvetted code, you will have much worse problems.
        
         | bazoom42 wrote:
         | You misunderstand the "billion dollar mistake". The mistake is
         | not the use of nulls per se, the mistake is type-systems which
         | does not make them explicit.
        
       | nemo44x wrote:
       | How many jobs were had or not due to the candidates ability to
       | implement his algorithms?
        
         | malfist wrote:
         | As a junior dev, I loved to ask interview candidates to
         | implement merge sort or quick sort on whiteboards.
         | 
         | As a non-junior dev I realize how stupid that was.
        
           | tibbar wrote:
           | I think the first enlightenment is that software engineers
           | should be able to abstract away these algorithms to reliable
           | libraries.
           | 
           | The second enlightenment is that if you don't understand what
           | the libraries are doing, you will probably ship things that
           | assemble the libraries in unreasonably slow/expensive ways,
           | lacking the intuition for how "hard" the overall operation
           | should be.
        
       | rramadass wrote:
       | 1) ACM published this book in 2021; _Theories of Programming: The
       | Life and Works of Tony Hoare_ -
       | https://dl.acm.org/doi/book/10.1145/3477355
       | 
       | See the "preface" for details of the book -
       | https://dl.acm.org/doi/10.1145/3477355.3477356
       | 
       | Review of the above book -
       | https://www.researchgate.net/publication/365933441_Review_on...
       | 
       |  _Somebody needs to contact ACM and have them make the above book
       | freely available now; there can be no better epitaph._
       | 
       | 2) Tony Hoare's lecture in honour of Edsger Dijkstra (2010);
       | _What can we learn from Edsger W. Dijkstra?_ -
       | https://www.cs.utexas.edu/~EWD/DijkstraMemorialLectures/Tony...
       | 
       |  _Somebody needs to now write a similar one for Hoare._
       | 
       | Truly one of the absolute greats in the history of Computer
       | Science.
        
         | rramadass wrote:
         | A collection of Tony Hoare's memorable quotes -
         | https://en.wikiquote.org/wiki/C._A._R._Hoare
        
       | tosh wrote:
       | Tony Hoare on how he came up with Quicksort:
       | 
       | he read the algol 60 report (Naur, McCarthy, Perlis, ...)
       | 
       | and that described "recursion"
       | 
       | => aaah!
       | 
       | https://www.youtube.com/watch?v=pJgKYn0lcno
        
       | phplovesong wrote:
       | RIP Legend
        
       | ontouchstart wrote:
       | I watched this video a few months ago.
       | 
       | Virtual HLF 2020 - Scientific Dialogue: Sir C. Antony R.
       | Hoare/Leslie Lamport
       | 
       | https://www.youtube.com/watch?v=wQbFkAkThGk
        
       | jefffoster wrote:
       | I remember attending a tech event at MSR Cambridge, and a speaker
       | made some disparaging comment about older developers not being
       | able to keep up in this modern world of programming.
       | 
       | An older gentleman stood up and politely mentioned they knew a
       | thing or two.
       | 
       | That was Tony Hoare.
        
       | ibejoeb wrote:
       | From his Oxford bio: "To assist in efficient look-up of words in
       | a dictionary, he discovered the well-known sorting algorithm
       | Quicksort."
       | 
       | I always liked this presentation. I think it's equally fine to
       | say "invented" something, but I think this fits into his ethos
       | (from what I understand of him.) There are natural phenomena, and
       | it just takes noticing.
        
       | astahlx wrote:
       | Tony advised me to make money with the software model checker I
       | have been writing. In contrast to the typical practice to make
       | these tools open source and free for use. Would have loved to
       | learn more from him. He was a great teacher but also a great and
       | sharp listener. Still remember the detour we made on the way to a
       | bar in London, talking too much and deep about refinement
       | relations. RiP.
        
       | samiv wrote:
       | With respect I say that the one can only feel gobsmacked about
       | how much complexity has grown.
       | 
       | In the 60s inventing one single algorithm with 10 lines of code
       | was a thing.
       | 
       | If you did that today nobody would bat an eye.
       | 
       | Today people write game engines, compilers, languages, whole OS
       | and nobody bats an eye cause there are thousands of those.
       | 
       | Quick sort isn't even a thing for leet code interviews anymore
       | because it's not hard enough.
        
       | randomtools wrote:
       | Rest in peace
        
       | jamie_davenport wrote:
       | This is devastating news.
       | 
       | When I started university he gave a talk to all the new CompScis
       | which as you can imagine was incredibly inspirational for an
       | aspiring Software Engineer.
       | 
       | Grateful to have had that experience.
       | 
       | RIP
        
       | adev_ wrote:
       | One of the greatest figure of computing in history and an example
       | of humility as a human.
       | 
       | Thank you for your work on ALGOL, you were multiple decade ahead
       | of your time.
       | 
       | Rest in peace.
        
       | robot wrote:
       | "Communicating Sequential Processes" by Tony Hoare:
       | https://www.cs.cmu.edu/~crary/819-f09/Hoare78.pdf
       | 
       | It had intrigued me due to its promise of designing lock-free
       | concurrent systems, that can (I think) also be proven to be
       | deadlock-free.
       | 
       | You do this by building a simple concurrent block that is proven
       | to work correctly, and then build bigger ones using the smaller,
       | proven blocks, to create more complex systems.
       | 
       | The way it is designed is processes don't share data and don't
       | have locks. They use synchronized IPC for passing and modifying
       | data. It seemed to be a foundational piece for designing reliable
       | systems that incorporate concurrency in them.
        
         | robot wrote:
         | BTW Rob Pike designed the Go language channels inspired by this
         | work: https://go.dev/tour/concurrency/2
        
       | smj-edison wrote:
       | From the article:
       | 
       | > On the topic of films, I wanted to follow up with Tony a quote
       | that I have seen online attributed to him about Hollywood
       | portrayal of geniuses, often especially in relation to Good Will
       | Hunting. A typical example is: "Hollywood's idea of genius is
       | Good Will Hunting: someone who can solve any problem instantly.
       | In reality, geniuses struggle with a single problem for years".
       | Tony agreed with the idea that cinema often misrepresents how
       | ability in abstract fields such as mathematics is learned over
       | countless hours of thought, rather than - as the movies like to
       | make out - imparted, unexplained, to people of 'genius'. However,
       | he was unsure where exactly he had said this or how/why it had
       | gotten onto the internet, and he agreed that online quotes on the
       | subject, attributed to him, may well be erroneous.
       | 
       | Somewhat off-topic, but it's cool hearing this from someone who's
       | contributed so much to the fields of programming and mathematics.
       | It makes me hopeful that my own strugglings with math will pay
       | out over time!
        
       | taint69 wrote:
       | Never made it as a wise man I couldn't cut it as a poor man
       | stealing Tired of livin' like a blind man I'm sick of sight
       | without a sense of feeling And this is how you remind me
       | 
       | This is how you remind me of what I really am This is how you
       | remind me of what I really am
       | 
       | It's not like you to say sorry I was waitin' on a different story
       | This time I'm mistaken For handing you a heart worth breakin' And
       | I've been wrong, I've been down Been to the bottom of every
       | bottle These five words in my head Scream, "Are we havin' fun
       | yet?"
       | 
       | Yet, yet, yet, no, no Yet, yet, yet, no, no
       | 
       | It's not like you didn't know that I said, "I love you," and I
       | swear I still do And it must have been so bad 'Cause livin' with
       | me must have damn near killed you
       | 
       | And this is how you remind me of what I really am This is how you
       | remind me of what I really am
       | 
       | It's not like you to say sorry I was waitin' on a different story
       | This time I'm mistaken For handing you a heart worth breakin' And
       | I've been wrong, I've been down Been to the bottom of every
       | bottle These five words in my head Scream, "Are we havin' fun
       | yet?"
       | 
       | Yet, yet, yet, no, no Yet, yet, yet, no, no Yet, yet, yet, no, no
       | Yet, yet, yet, no, no
       | 
       | Never made it as a wise man I couldn't cut it as a poor man
       | stealin' And this is how you remind me This is how you remind me
       | 
       | This is how you remind me of what I really am This is how you
       | remind me of what I really am
       | 
       | It's not like you to say sorry I was waitin' on a different story
       | This time I'm mistaken For handing you a heart worth breakin' And
       | I've been wrong, I've been down Been to the bottom of every
       | bottle These five words in my head Scream, "Are we havin' fun
       | yet?"
       | 
       | Yet, yet, are we havin' fun yet? Yet, yet, are we havin' fun yet?
       | Yeah, yeah (These five words in my head scream) Are we havin' fun
       | yet? Yeah, yeah (These five words in my head) No, no
        
       | Attummm wrote:
       | Incredibly sad news. His contributions to the foundations of
       | computing will remain relevant for generations to come.
        
       | ghoshbishakh wrote:
       | His paper on communicating processes was a great read when I was
       | new to computer science research.
        
       | racefan76 wrote:
       | Rest in peace, Sir Tony Hoare
        
       | jongjong wrote:
       | The part about 'genius' being slow and about wrestling with
       | difficult problems resonates.
       | 
       | The idea of 'genius' or in fact 'intelligence' being about speed
       | isn't just a Hollywood thing though; it's also been a Silicon
       | Valley thing as well; it's why most big tech interviews are time-
       | constrained.
       | 
       | Over the years, I've also heard many tech CEOs say stuff
       | alongside "There's only one type of intelligence" or "All
       | intelligent people are intelligent in the same way."
       | 
       | These kinds of statements raised my eyebrows but now with LLMs
       | being able to solve most puzzle problems rapidly but struggling
       | with complex problems it's completely obvious that it's not the
       | case.
       | 
       | What it says is frightening. The CEOs of big companies have been
       | giving positions to people who have the same thinking style as
       | them. Quick puzzle-solving tech tests are literal discrimination
       | against the neurodivergent and also against geniuses. They've
       | been embracing wordcels and rejecting shape rotators.
       | 
       | I think a guy like Tony Hoare would struggle to find a job these
       | days.
       | 
       | You could argue that the issue extends beyond Hollywood and
       | Silicon Valley... The whole education system is centered around
       | puzzle-solving speed. It's hilarious that AI is now solving all
       | these tests within minutes with better scores than humans. Crazy
       | to think that LLMs could graduate from university based on
       | current assessment policies! It's very revealing of what kind of
       | education system we have.
        
       | tristramb wrote:
       | "Around Easter 1961, a course on ALGOL 60 was offered in
       | Brighton, England, with Peter Naur, Edsger W. Dijkstra, and Peter
       | Landin as tutors. I attended this course with my colleague in the
       | language project, Jill Pym, our divisional Technical Manager,
       | Roger Cook, and our Sales Manager, Paul King. It was there that I
       | first learned about recursive procedures and saw how to program
       | the sorting method which I had earlier found such difficulty in
       | explaining. It was there that I wrote the procedure, immodestly
       | named Quicksort, on which my career as a computer scientist is
       | founded. Due credit must be paid to the genius of the designers
       | of ALGOL 60 who included recursion in their language and enabled
       | me to describe my invention so elegantly to the world. I have
       | regarded it as the highest goal of programming language design to
       | enable good ideas to be elegantly expressed." - C.A.R Hoare, The
       | Emperor's Old Clothes, Comm. ACM 24(2), 75-83 (February 1981).
        
       | kittikitti wrote:
       | I am greatly saddened by the passing of Tony Hoare. His work has
       | affected me deeply; in personal, academic, and professional life.
       | Without visionaries like him, I would not find the love in
       | computer science as I do now. It would be a great honor to have
       | accomplished a fraction of what he did. My condolences to his
       | close friends and family.
        
       | semessier wrote:
       | SIR_TONY_HOARE = mX * (think - create - give - X)
       | 
       | -- process ran from 1934 to 2026 -- terminated with SKIP -- no
       | deadlock detected -- all assertions satisfied -- trace: <
       | quicksort, hoare_logic, csp, monitors, -- dining_philosophers,
       | knighthood, turing_award, -- billion_dollar_apology,
       | structured_programming, -- unifying_theories, ... >  -- trace
       | length: [?] The channel is closed. The process has terminated.
       | The algebra endures.
        
       | hei-lima wrote:
       | One of the most important papers of all time.
       | 
       | Just one word: Quicksort.
       | 
       | One-of-a-kind genius.
        
       | chr15m wrote:
       | I was lucky enough to see Sir Tony Hoare speak at EuroPython in
       | 2009. This was his last slide:
       | 
       | One Day
       | 
       | - Software will be the most reliable component of every product
       | which contains it.
       | 
       | - Software engineering will be the most dependable of all
       | engineering professions.
       | 
       | -Because of the successful interplay of research:
       | - into the science of programming;            - and the
       | engineering of software.
       | 
       | Come on people we have a lot of work to do.
        
       | bouncycastle wrote:
       | ACEEE IN PRST
        
       | practal wrote:
       | Just two days ago I was curious about the PhD advisor of my PhD
       | advisor and so on, and discovered that I am actually an academic
       | great-grandson of Hoare (shame on me, I should have realised that
       | earlier), and joked, "Wow, they are all still alive!". Then I saw
       | the news yesterday on HN.
        
       | lokelow wrote:
       | I was introduced to him pretty late in the game, in this
       | interview where he and Joe Armstrong and Carl Hewitt talked
       | concurrency! It was interesting hearing them discuss their
       | different thoughts and approaches
       | 
       | https://www.youtube.com/watch?v=37wFVVVZlVU
        
         | dang wrote:
         | How sad that we all missed when Carl Hewitt submitted that
         | video to HN: https://news.ycombinator.com/item?id=19202209.
         | 
         | I had no idea that a discussion between the three of them even
         | existed.
        
           | pdamoc wrote:
           | Also sad that now all three are gone.
        
             | dang wrote:
             | I had the same thought.
        
       | Stratoscope wrote:
       | Here is my favorite visualization of quicksort, by a group of
       | Hungarian dancers:
       | 
       | https://www.youtube.com/watch?v=3San3uKKHgg
        
         | dizhn wrote:
         | Thank you for this!
        
       | Lasang wrote:
       | RIP
        
       | STELLANOVA wrote:
       | I uploaded lecture to Claude and asked to create skill using
       | principles described. I guess we shall see if AI can actually
       | follow them. :)
        
       | mike_kamau wrote:
       | RIP
        
       | matchcase wrote:
       | Hoare's papers were some of my favorite. Rest in peace
        
       | Lio wrote:
       | Sometimes I feel completely separated to mainstream culture.
       | 
       | That the death of Sir Tony Hoare has been completely ignored by
       | mainstream news is one of them.
       | 
       | Not a peep anywhere for a man that put a big dent in reality.
        
         | lionkor wrote:
         | Mainstream news have not been presenting much actual relevant
         | content beyond reporting on wars.
        
       | orthoxerox wrote:
       | TIL his first publication was in Russian, published in the USSR
       | where he spent a year as an exchange student. I wonder if Igor
       | Mel'cuk [0] remembers him.
       | 
       | [0] - https://olst.ling.umontreal.ca/static/melcuk/
        
       | axelfontaine wrote:
       | I had the privilege to attend his "Billion Dollar Mistake" talk
       | in person at QCon London 2009. Little did I know that this talk
       | would go down in software development history! What an honor to
       | have witnessed this live!
       | 
       | https://www.infoq.com/presentations/Null-References-The-Bill...
        
       | casey2 wrote:
       | I didn't know him, but every time I've read one of his papers
       | I've learned something and changed my viewpoint. I'm never
       | worried that my effort will be betrayed reading Hoare (Especially
       | rare in a field that moves so fast like applied CS)
        
       | kevthecoder wrote:
       | A near neighbour described being interviewed by Tony Hoare for
       | his first job after graduating (he got the job!). Sounds like the
       | interview process in those days was a chat over lunch rather than
       | coding exercises. https://news.ycombinator.com/item?id=43592201
        
       | justyy wrote:
       | RIP
        
       | branoco wrote:
       | wow, but lived a full life
        
       | pramodbiligiri wrote:
       | Leslie Lamport hosted a chat with him a few years back:
       | https://www.youtube.com/watch?v=wQbFkAkThGk. They spoke about
       | general CS stuff and some aspects of concurrency.
        
       | mghackerlady wrote:
       | Rest in peace to a real one, we've lost one of the brightest
       | minds of our century
        
       | westurner wrote:
       | Hoare logic: https://en.wikipedia.org/wiki/Hoare_logic
       | 
       | > _The central feature of Hoare logic is the Hoare triple. A
       | triple describes how the execution of a piece of code changes the
       | state of the computation. A Hoare triple is of the form {P}C{Q}
       | where P and Q. are assertions and C is a command._
       | 
       | > _P is named the precondition and Q the postcondition: when the
       | precondition is met, executing the command establishes the
       | postcondition. Assertions are formulae in predicate logic._
       | 
       | > _Hoare logic provides axioms and inference rules for all the
       | constructs of a simple imperative programming language._
       | 
       | [...]
       | 
       | > _Partial and total correctness_
       | 
       | > _Using standard Hoare logic,_ only partial correctness can be
       | proven. _Total correctness additionally requires termination,
       | which can be proven separately or with an extended version of the
       | While rule_
        
       | kgrizzle wrote:
       | RIP to a legend.
        
       ___________________________________________________________________
       (page generated 2026-03-11 23:01 UTC)