In the earlier threads there are two main voices: "Where can I learn more about this," and "It's useful to see the different perspective." Both say that there are many nuggets of wisdom to be mined, even when they don't agree. There are also a few who dissent and say it's irrelevant, impractical, and inapplicable.
Even in 3553983 where the top comment says it's largely irrelevant there is a useful dialogue discussing the ideas, and how they can be made to work, or at least how we can learn from them in today's context.
In contrast, in this thread so far we've mostly had comments about the hand-writing, and complete dismissal of the ideas. So far there's very little attempt to say: "OK, times have changed, but can we learn something from this?"
So I ask - Can we? Are there nuggets to be mined? Or are you convinced that you really do know better, and have nothing to learn from it.
I'm still learning.
========
For reference, other submissions, mostly without comments:
The audience is self-selected. The ones that don't know any better see only a condescend tone instead of the material. They don't get the difference between "lines spent" and "lines produced" and they don't know that computers were used to "compute" and thus the formalism was absolutely necessary to trust the result.
What we write today is WoW and stuff we don't need formalism to prove they don't crash - because, you know, who cares about that?
Dijkstra comes from a time were you could reuse a piece of software and build upon it because you could understand it. Today nobody does it because the software is "disposable". Who cares about proving a piece of future garbage?
Agreed. In a way, it's like the "Blub paradox", only applied to formal methods instead of programming languages. Those who aren't familiar with them don't see the point and think it's merely "mathy" nonsense.
People learn differently and formalism in one approach to teaching it. It has it's purposes but complex systems require more than one way of representing it. Formalism shouldn't be the only way to represent and teach the concepts of computation and CS.
You are right in saying that formalism is required to trust the result; however, I would argue that it isn't the only way. Looking at something from a strictly mathematical approach would ignore some of the more black arts component of CS and Software development. You should be viewing a system from various angles to help convince you of it's reliability.
I think these two talks might help explain things.
His proposal from this EWD was actually realized, when people trying to reduce mathematics to mathematical logic and purely formal manipulation introduced the "New Math" movement, and it was a disaster. Even mathematicians don't typically do mathematics via purely formal methods, and software engineering is much more an ... engineering discipline. In fact, his is a very mediocre philosophically voice in a debate about formalism (the stream in philosophy of mathematics) that has been ongoing for centuries, in which people like Leibniz, Turing, Poincare, Hilbert etc. participated, and from this perspective there is nothing to admire about this essay, except maybe some peculiar form of elegance of writing style.
Comments
It's interesting to see how attitudes to this EWD have changed over the years. Here are some of the previous submissions with comments:
https://news.ycombinator.com/item?id=43978 : A few comments
https://news.ycombinator.com/item?id=1666445 : Many comments
https://news.ycombinator.com/item?id=3553983 : Many comments
In the earlier threads there are two main voices: "Where can I learn more about this," and "It's useful to see the different perspective." Both say that there are many nuggets of wisdom to be mined, even when they don't agree. There are also a few who dissent and say it's irrelevant, impractical, and inapplicable.
Even in 3553983 where the top comment says it's largely irrelevant there is a useful dialogue discussing the ideas, and how they can be made to work, or at least how we can learn from them in today's context.
In contrast, in this thread so far we've mostly had comments about the hand-writing, and complete dismissal of the ideas. So far there's very little attempt to say: "OK, times have changed, but can we learn something from this?"
So I ask - Can we? Are there nuggets to be mined? Or are you convinced that you really do know better, and have nothing to learn from it.
I'm still learning.
========
For reference, other submissions, mostly without comments:
https://news.ycombinator.com/item?id=6701607
https://news.ycombinator.com/item?id=2122826
https://news.ycombinator.com/item?id=2090256
https://news.ycombinator.com/item?id=1989473
https://news.ycombinator.com/item?id=383210
The audience is self-selected. The ones that don't know any better see only a condescend tone instead of the material. They don't get the difference between "lines spent" and "lines produced" and they don't know that computers were used to "compute" and thus the formalism was absolutely necessary to trust the result.
What we write today is WoW and stuff we don't need formalism to prove they don't crash - because, you know, who cares about that?
Dijkstra comes from a time were you could reuse a piece of software and build upon it because you could understand it. Today nobody does it because the software is "disposable". Who cares about proving a piece of future garbage?
Agreed. In a way, it's like the "Blub paradox", only applied to formal methods instead of programming languages. Those who aren't familiar with them don't see the point and think it's merely "mathy" nonsense.
I think you are confusing what Stiff was saying.
People learn differently and formalism in one approach to teaching it. It has it's purposes but complex systems require more than one way of representing it. Formalism shouldn't be the only way to represent and teach the concepts of computation and CS.
You are right in saying that formalism is required to trust the result; however, I would argue that it isn't the only way. Looking at something from a strictly mathematical approach would ignore some of the more black arts component of CS and Software development. You should be viewing a system from various angles to help convince you of it's reliability.
I think these two talks might help explain things.
http://worrydream.com/MediaForThinkingTheUnthinkable/ http://www.confreaks.com/videos/282-lsrc2010-real-software-e...
His proposal from this EWD was actually realized, when people trying to reduce mathematics to mathematical logic and purely formal manipulation introduced the "New Math" movement, and it was a disaster. Even mathematicians don't typically do mathematics via purely formal methods, and software engineering is much more an ... engineering discipline. In fact, his is a very mediocre philosophically voice in a debate about formalism (the stream in philosophy of mathematics) that has been ongoing for centuries, in which people like Leibniz, Turing, Poincare, Hilbert etc. participated, and from this perspective there is nothing to admire about this essay, except maybe some peculiar form of elegance of writing style.