Earlier quoted context omitted.
This quote keeps on showing up out of context. Edsger and I got along quite well. He loved to be the way he was and pushed it. His friend Bob Barton (the great genius of the B5000 design) was very similar in loving to push buttons and being very critical of the not-quite-a-field that we have. When the U of Utah faculty complained to Dave Evans about Barton, Evans said "We don't care if they're prima donnas as long as…
> He loved to be the way he was and pushed it. So are you saying that you said this as a friendly jab, knowing he would probably love it himself? > His comment about OOP (a rather different kind of thing at Xerox PARC than what the term means today) did not bother any of us at all So he did actually say that quote about OOP? Do you happen to know the source?
Letters between Backus and Dijkstra (1979)
121–128 of 128 posts
Re: Letters between Backus and Dijkstra (1979)
#122"I don't know how many of you have ever met Dijkstra, but you probably know that arrogance in computer science is measured in nano-Dijkstras." - Alan Kay
This quote keeps on showing up out of context. Edsger and I got along quite well. He loved to be the way he was and pushed it. His friend Bob Barton (the great genius of the B5000 design) was very similar in loving to push buttons and being very critical of the not-quite-a-field that we have. When the U of Utah faculty complained to Dave Evans about Barton, Evans said "We don't care if they're prima donnas as long as…
Many design choices, of course, involve trading off one virtue against another. But that hardly seems to matter when so many of our current systems are so far from the efficient frontier where tradeoffs are necessary!
Re: Letters between Backus and Dijkstra (1979)
#123Earlier quoted context omitted.
Emotional harm can be violent if it is forcibly inflicted on someone. If they volunteer themselves to be emotionally harmed of their own volition, this is hardly violence. Rational thought is not violent, no matter how much it pains you to hear what it concludes. Disagreeing with someone is not violence, even if they can't bear to suffer it.
And no violence occurs if I ask you to punch me and you do.
Re: Letters between Backus and Dijkstra (1979)
#124Earlier quoted context omitted.
And no violence occurs if I ask you to punch me and you do.
You're really not special, though. Why should I care if you asked me, your family asked me, your culture asked me, or nature itself forced my hand? As long as I have a justifiable reason for doing it, I should do it, whether you think it violent or not.
Is the issue that you think violence only occurs when it's somehow immoral by some code? Hitting someone is violent regardless of the reason why. Applying verbal and emotional force in a way that causes someone distress is violence regardless of the reason why.
Nothing in my posts says that violence itself is inherently wrong. It's a thing, the reason and effect in the situation it occurs determine the rightness or wrongness of the act. Scolding a child can cause temporary distress. This is violence though possibly necessary and right. Telling a child they're worthless repeatedly is violence and also wrong.
Volunteering for violence also doesn't make it not violent. It's still violent. It just changes the calculus on the morality of it.
Re: Letters between Backus and Dijkstra (1979)
#125I'm sad that in this thread and https://news.ycombinator.com/item?id=11786193 , nobody is actually talking about the technical arguments at play. I've only read the EWD692 "opening salvo" but already there are interesting things to point out. EWD1303: > The profound significance of Dekker's solution of 1959, however, was that it showed the role that mathematical proof could play in the process of program design. Now,…
Lamport's TLA (which serves as the basis for TLA+) is simpler than Agda because in Agda, even though you use the same syntax for both types (i.e. propositions) and programs, they are conceptually separate, while in TLA they are the same. Both the program (well, its specification) and its properties are just logical propositions. TLA+, which is untyped (and based on TLA and ZFC) has the added advantage of being far, far (far) easier to learn than any dependently-typed language. TLA was introduced in this paper[1], which begins thus:
> Correctness of the algorithm means that the program satisfies a desired property. We propose a simpler approach in which both the algorithm and the property are specified by formulas in a single logic. Correctness of the algorithm means that the formula specifying the algorithm implies the formula specifying the property, where implies is ordinary logical implication. We are motivated not by an abstract ideal of elegance, but by the practical problem of reasoning about real algorithms. Rigorous reasoning is the only way to avoid subtle errors in concurrent algorithms, and we want to make reasoning as simple as possible by making the underlying formalism simple.
However, there is a debate between the PL approach (championed by Backus, Milner) and the specification approach (championed by Dijkstra, Lamport) over utility. The question is whether proving at the code level is empirically viable (at a reasonable cost) for all but the simplest of programs. Indeed, so far the answer seems to be no. There has been only one program ever written and verified using dependent types (CompCert), it is certainly non-trivial but rather small, yet it required a world-class expert, took a lot of effort, and even then required corner-cutting (Leroy says he gave up on proving termination, simply adding a counter and throwing a runtime exception if it runs out). TLA+, OTOH, is used extensively and regularly by Amazon (and Oracle, Microsoft and others), by "plain" engineers, on real-world large systems (far larger than CompCert), and management loves it because it actually seems to save them time and money. This is only possible because TLA+ is not the programming language.
Lamport doesn't reject the theoretical possibility of a PL that could provide large-scale verification of some sort (end-to-end verification will always be extremely expensive due to simple complexity arguments), only points out that no PL has so far come anywhere close to fulfilling this promise. Of course, TLA+ doesn't provide end-to-end verification, but that is too expensive -- and unnecessary -- for 99% of the industry anyway. I think that the ideas are compatible, but so far in theory only, while in practice they are not (yet?).
[1]: http://research.microsoft.com/pubs/64074/lamport-actions.pdf
Re: Letters between Backus and Dijkstra (1979)
#126I'm sad that in this thread and https://news.ycombinator.com/item?id=11786193 , nobody is actually talking about the technical arguments at play. I've only read the EWD692 "opening salvo" but already there are interesting things to point out. EWD1303: > The profound significance of Dekker's solution of 1959, however, was that it showed the role that mathematical proof could play in the process of program design. Now,…
> separating the program and proof langauges just seems clumsy. Lamport's TLA (which serves as the basis for TLA+) is simpler than Agda because in Agda, even though you use the same syntax for both types (i.e. propositions) and programs, they are conceptually separate, while in TLA they are the same. Both the program (well, its specification) and its properties are just logical propositions. TLA+, which is untyped (a…
Even if I was programming in a separate language, I'd still want a it embedded in a hosting type-theory so I can use it both for proofs and macros.
Re: Letters between Backus and Dijkstra (1979)
#127Earlier quoted context omitted.
> separating the program and proof langauges just seems clumsy. Lamport's TLA (which serves as the basis for TLA+) is simpler than Agda because in Agda, even though you use the same syntax for both types (i.e. propositions) and programs, they are conceptually separate, while in TLA they are the same. Both the program (well, its specification) and its properties are just logical propositions. TLA+, which is untyped (a…
Don't forget all the Adam Chipala stuff in Coq. Didn't know people actually used TLA. Even if I was programming in a separate language, I'd still want a it embedded in a hosting type-theory so I can use it both for proofs and macros.
Has there ever been another non-trivial real-world program written in Coq (or another dependently-typed language for that matter) other than CompCert?
> Didn't know people actually used TLA.
Oh, far more than Coq; possibly more than Isabelle, even. TLA+ was designed for engineers, and evolved along with careful observation of how it is used by them. Coq is mainly used by type theoreticians to explore proving various mathematical theorems using ITT, and by PL people exploring various PL theories. TLA+ is used by engineers for large-scale software[1][2][3].
> I'd still want a it embedded in a hosting type-theory so I can use it both for proofs and macros.
I'm not sure what you mean by macros (I'm not a type-theory person in the least), but what does it matter if it's a type theory or a set theory? Lamport's thesis was that just as virtually all math proofs don't require type theory, neither do program proofs; indeed virtually none of the algorithm proofs in computer science employ type theory at all. TLA+ is a formalization of such proofs.
The main advantage of TLA+ is that it's as powerful as Coq for verifying algorithms (though it is not designed for proving general mathematical theorems), yet it any engineer can master it in weeks, without learning any new (not to speak of rather exotic) math. Also, it is amenable (and indeed supports) to model-checking, which alone is enough to make it practical. Deductive machine-checked proofs (which TLA+ also supports) are just too time consuming, and have ever been used on full programs only a handful of times. Their main use in industry is to tie together model-checked programs[4].
TLA+'s disadvantage is that it's very hard to extract a program from a TLA+ spec. Translations going the other way (from code to TLA+) have been done a number of times (for C and Java) but only in academia AFAIK. But this is unsurprising as Lamport's (and Dijkstra's) thesis is that effective, practical, program verification can only be done at a level higher than program code (unless it's a small program, specifically written in a simplified matter for the sake of verification, and the very large effort is acceptable -- all three conditions that have been met in the few cases where deductive, whole-program verification has ever been used).
[1]: http://research.microsoft.com/en-us/um/people/lamport/tla/fo...
[2]: http://tla2012.loria.fr/contributed/newcombe-slides.pdf
[3]: http://research.microsoft.com/en-us/um/people/lamport/pubs/h...
[4]: http://events.inf.ed.ac.uk/Milner2012/J_Harrison-html5-mp4.h...
Re: Letters between Backus and Dijkstra (1979)
#128"I don't know how many of you have ever met Dijkstra, but you probably know that arrogance in computer science is measured in nano-Dijkstras." - Alan Kay
Funny thing is that Alan Kay himself often comes across just as arrogant these days. "Comes across", because more often than not I think it's more likely that people who are too pleased with themselves don't like to be told that, really, what they've achieved isn't good enough, or even misguided. Even if, or perhaps especially if, the person who tells them that (Dijkstra when it comes to programming, Kay when it come…
indeed! no tumblr posts. no videos on YouTube. no SnapChats. no downloadable apps on Steam, and no Kickstarters. no accepted PR's on GH. no certs. and a pretty low Influencer (TM) rating on FooBlamWooBlah.io. therefore, he's obviously a slacker! or a sock puppet. prob yet-another-teen-in-his-mothers-basement. guy probably needs to discover things like "Khan Academy" and Bitcoin and Node.js
(/s)