
Dijkstra Archive (1930-2002) - tosh
http://www.cs.utexas.edu/users/EWD/
======
WomanCanCode
A brilliant mind. His thoughts and ideas are extremely relevant to this day.
In his letter 1304, Dijkstra said: “I would therefore like to posit that
computing's central challenge, viz. "How not to make a mess of it", has not
been met. On the contrary, most of our systems are much more complicated than
can be considered healthy, and are too messy and chaotic to be used in comfort
and confidence. The average customer of the computing industry has been served
so poorly that he expects his system to crash all the time, and we witness a
massive worldwide distribution of bug-ridden software for which we should be
deeply ashamed.”

------
User23
Over the course of a year I perused virtually all of the English language EWDs
and read many in depth. They are extremely interesting. I especially like
watching him develop his notation as he learns.

I also find the ones that are basically rants extremely entertaining. Others
may not, but that's fine, skip them then.

And some are a mix, this one being a must-read:
[https://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD103...](https://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html)

~~~
apricot
I find I appreciate EWDs even more in their original, handwritten form:
[https://www.cs.utexas.edu/~EWD/ewd10xx/EWD1036.PDF](https://www.cs.utexas.edu/~EWD/ewd10xx/EWD1036.PDF)

~~~
jdnier
That's remarkable and unique penmanship.

------
carapace
I am a huge Dijkstra fanboy, but even he occasionally had lapses of judgement.
E.g. he panned Dr. Margaret Hamilton's "Higher Order Software"[1] which I feel
is a major innovation in developing correct software[3]. Using a HOS system
normal people developed correct software rapidly. The system makes it
impossible to create incorrect code. (Long story short: if you're typing text
into an editor to make hopefully correct software you're doing it wrong. We're
still playing catch-up decades later.)

Hamilton is the person who coined the term "software engineering"[2]

[1] 'Judging “HOS” from a distance'
[https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/E...](https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD852.html)

[2]
[https://en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)](https://en.wikipedia.org/wiki/Margaret_Hamilton_\(scientist\))
Wikipedia reads 'She is one of the people credited with coining the term
"software engineering".' but doesn't link to anything referencing earlier uses
of the term. Whatever.

[3] "System Design from Provably Correct Constructs: The Beginnings of True
Software Engineering" by James Martin
[https://www.goodreads.com/book/show/3575584-system-design-
fr...](https://www.goodreads.com/book/show/3575584-system-design-from-
provably-correct-constructs)
[https://archive.org/details/systemdesignfrom00mart](https://archive.org/details/systemdesignfrom00mart)
Irritatingly enough, he is presenting Hamilton's work without mentioning her
(expect of a few references in the back) but whatever.

~~~
j88439h84
What's the modern successor to hos?

~~~
carapace
Short answer: nothing. (Even Bret Victor's work doesn't begin to touch it.
[http://worrydream.com/](http://worrydream.com/) Although he is well cool
along other dimensions!)

For the flavor, imagine a type-safe LISP that one edits though something like
Brad Templeton's Alice Pascal
[https://www.templetons.com/brad/alice.html](https://www.templetons.com/brad/alice.html)
or Emacs ParEdit
[https://www.emacswiki.org/emacs/ParEdit](https://www.emacswiki.org/emacs/ParEdit)
so that an incorrect program _cannot_ be described in the system. (You can
make a program that doesn't do what you intended, but whatever it does it will
do so correctly.)

For the underlying technology, I would recommend reading up on Conal Elliott's
"Compiling to categories" [http://conal.net/papers/compiling-to-
categories/](http://conal.net/papers/compiling-to-categories/) The connection
won't be immediately clear. The connective is the Joy programming language:

[https://www.latrobe.edu.au/humanities/research/research-
proj...](https://www.latrobe.edu.au/humanities/research/research-
projects/past-projects/joy-programming-language)

[https://en.wikipedia.org/wiki/Joy_(programming_language)](https://en.wikipedia.org/wiki/Joy_\(programming_language\))

[http://www.kevinalbrecht.com/code/joy-
mirror/joy.html](http://www.kevinalbrecht.com/code/joy-mirror/joy.html)

[http://joypy.osdn.io/](http://joypy.osdn.io/) (full disclosure: this last one
is my own project.)

The key is to see Joy (as opposed to, say, LISP) as the sort-of-AST that HOS
is manipulating. If you restrict Joy to its type-safe subset and squint a
little you have HOS. Then as a kind of bonus, Joy code turns out to be perfect
for the "Compiling to categories" stuff (which is beyond HOS.)

For the UI, AFAIK Jonathan Edwards' Subtext [http://www.subtext-
lang.org/](http://www.subtext-lang.org/) is the closest anyone's gotten.

------
kazinator
Can someone point to any specimens of source code in this archive?

~~~
craigsmansion
[https://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/E...](https://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/EWD123.html)

