Live data from Hacker News

The Manuscripts of Edsger W. Dijkstra

cs.utexas.edu

81–90 of 129 posts

Re: The Manuscripts of Edsger W. Dijkstra

#81

Earlier quoted context omitted.

One should always use a single kind of half-open range, i.e. with the start closed and the ending open. The whole point here is to use a single kind of range, without exceptions, in order to avoid the errors caused by using the wrong type of range for the context. For backwards iteration the right range is [-1,-1-n), i.e. none of those listed by you. Like for any such range, the number of accessed elements is the dif…

What would you do if your array is so large that it requires an unsigned int64 index?

The current AMD64 specification only uses 48-bits of pointer space, coming from 40-bits. So we still have 16 bits remaining. I'm sure we can use 1 for a sign.

Re: The Manuscripts of Edsger W. Dijkstra

#82

The most important one in the context of 2025 is this one: On the foolishness of "natural language programming". https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667...

> when judging the relative merits of programming languages, some still seem to equate "the ease of programming" with the ease of making undetected mistakes. This hits so hard. cough dynamic typing enthusiasts and vibe coders cough

I’m not sure that is the focus of most serious dynamic language. For me, it’s the polymorphism and code re-use it enables that the popular static languages generally aren’t close to catching up to.

Re: The Manuscripts of Edsger W. Dijkstra

#83
post #10

I really enjoyed the this one: Some meditations on Advanced Programming https://www.cs.utexas.edu/~EWD/transcriptions/EWD00xx/EWD32.... As I'm currently in a Functional Programming course in Haskell... This resonated. I know that we'll always need to write programs which directly interface with memory. However, when we don't need to do that... Maybe we shouldn't write programs in this style (i.e. imperative). Maybe w…

You should read the correspondence between Dijkstra and John Backus and contrast that with your view of Functional Programming.

https://medium.com/@acidflask/this-guys-arrogance-takes-your...

Re: The Manuscripts of Edsger W. Dijkstra

#84

Earlier quoted context omitted.

The proofs/programs (Howard/Curry) correspondance has been fairly well established I think.

It's the requirements discovery phase that always breaks every pure mathematical treatment of software development. (And also, like DW points, that software is way more complex. But on this case, it's the requirements discovery.)

That’s because it’s not pure math, but applied math. Which also has the requirements discovery phase.

Re: The Manuscripts of Edsger W. Dijkstra

#85

the only meaningful contribution this guy made was his prose. certainly a talented constructor of sentences, i could never write as precisely as him. but as far as meaningful technical contributions, i struggle to find anything. his path search algorithm, no offence, is self-evident. for all the disdain he appears to have had for (what we now call) the 'move fast and break things' style of engineering/science, they w…

The most charitable thing i can say about your comment is;

who had a fashion of calling every thing "odd" that was beyond his comprehension, and thus lived amid an absolute legion of "oddities." -- from "The Purloined Letter" by Edgar Allan Poe.

To dismiss you/your comment;

“Mediocrity knows nothing higher than Itself; but Talent instantly recognizes Genius.” -- from "The Valley of Fear" by Arthur Conan Doyle.

To deflate your claim of Dijkstra's Algorithm being "self-evident";

Students Struggle with Concepts in Dijkstra's Algorithm -- https://dl.acm.org/doi/fullHtml/10.1145/3632620.3671096

Edsger Dijkstra contributed to;

  1) Algol60 language/compiler 
  2) THE Operating System 
  3) Graph Algorithms (shortest-path etc.) 
  4) Concurrent Algorithms (semaphores, CSP etc.) 
  5) Distributed Algorithms (dining philosophers etc.)
  6) Fault-Tolerant Computing (which he called "Self-Stabilizing Systems") 
  7) Programming Language Design (GCL etc.) 
  8) Structured Programming Techniques. 
  9) Program Correctness Methodologies based on Predicate Calculus to derive Programs (weakest-precondition etc.)
  10) Essays giving insights into "How to Think and Reason Systematically" using commonsense and mathematical Tools.

Re: The Manuscripts of Edsger W. Dijkstra

#86
post #82

Earlier quoted context omitted.

> when judging the relative merits of programming languages, some still seem to equate "the ease of programming" with the ease of making undetected mistakes. This hits so hard. cough dynamic typing enthusiasts and vibe coders cough

I’m not sure that is the focus of most serious dynamic language. For me, it’s the polymorphism and code re-use it enables that the popular static languages generally aren’t close to catching up to.

I’m curious, can you give an example that wouldn’t be solved by polymorphism in a modern statically typed OO language? I would generally expect that for most cases the introduction of an interface solves for this.

Most examples I can think of would be things like “this method M expects type X” but I can throw in type Y that happens to implement the same properties/fields/methods/whatever that M will use. And this is a really convenient thing for dynamic languages. A static language proponent would call this an obvious bug waiting to happen in production when the version of M gets updated and breaks the unspecified contract Y was trying to implement, though.

Re: The Manuscripts of Edsger W. Dijkstra

#87
post #59

Earlier quoted context omitted.

If they use letters instead of numbers, note that letter "A" is the first alphabet, not zeroth alphabet.

When I'm counting letters it's more convenient to go "one, two, three." When I'm finding the offset between letters it's more convenient to go "zero, one, two." Neither of these methods is going to displace the other. Definitions are fine, and I agree that "A" is the first letter. But that's no use to people who need to think clearly about the offset between "A" and "C" right now. Should I tell them they're wrong, th…

Offset is an answer to the question "where does Nth memory location start from?". The answer is "after N-1 locations". It's the count of locations that need to be skipped by the reader, to reach the start of Nth memory location.

Book chapters and page numbers are not offsets.

Re: The Manuscripts of Edsger W. Dijkstra

#88

Earlier quoted context omitted.

It is not obviously correct. The unstated premise is that programming is - or should be - similar to writing mathematical proofs.

The proofs/programs (Howard/Curry) correspondance has been fairly well established I think.

It is a bit like architecture is just physics or painting is just chemistry. Technically true in some reductionist sense, but not necessarily the most useful way to think about it.

Re: The Manuscripts of Edsger W. Dijkstra

#89

Completely silly fact: knowing 0 about the guy except that he gave his name to the famous algorithm, I had somehow assumed he was Indian. Weird to see a white Dutchman in the picture.

Dutch is the only language I know that uses the "ij" digraph, where other languages write "ei", "ay", maybe "y".

Re: The Manuscripts of Edsger W. Dijkstra

#90

The most important one in the context of 2025 is this one: On the foolishness of "natural language programming". https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667...

> when judging the relative merits of programming languages, some still seem to equate "the ease of programming" with the ease of making undetected mistakes. This hits so hard. cough dynamic typing enthusiasts and vibe coders cough

It is just a classical Dijkstra strawman - hiding a weak argument behind painting everybody else as idiots. In fact it is much easier to make dangerous undetected mistakes in C than it is in Python.
Post reply on HN