Live data from Hacker News

Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

cs.utexas.edu

41–50 of 64 posts

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#41
post #14

Interestingly, I found the handwriting to more readable than most computer fonts; that is, very visually consumable.

That was the fist thing that jumped out at me. Amazing handwriting!

His handwriting looks beautiful!

I loved it and emailed Prof. Dijkstra during the brief time that he finally had email (I got a graduate degree from his department and attended some of his classes). I asked him for permission to one day create a font from his handwriting, not really expecting a response.

However, he did eventually reply, granting me the permission to do so.

I commissioned the font and it worked nice. It was distributed briefly and it may still be out there (I see one or two are found out there).

My original copy may be in old backups. One day I will find it and update it!

Edit: found the email reply! He retired in 11/1999 and passed away in 8/2002

  Austin, Tuesday 11 April 2000

  Dear Dr. Puchol,

        If a competent designer can use my handwriting as a source of
  inspiration, that is fine with me. Thank you for asking my permission,
  which is granted with pleasure.

        With my greetings and best wishes,
                        yours ever,          Edsger W.Dijkstra

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#42
post #7

I think people are attracted more to the form of the EWDs and to it's melancholic tone, rather than to the content itself, which is confirmed by the huge popularity of the EWDs as compared to "The discipline of programming", which is the technical exposition of what Dijkstra really is proposing in the EWDs. As almost all of Dijkstra's writing, this piece here is a plea for teaching formal methods. It's nicely written…

Can't recommend "The Sleepwalkers" enough.

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#43
post #7

I think people are attracted more to the form of the EWDs and to it's melancholic tone, rather than to the content itself, which is confirmed by the huge popularity of the EWDs as compared to "The discipline of programming", which is the technical exposition of what Dijkstra really is proposing in the EWDs. As almost all of Dijkstra's writing, this piece here is a plea for teaching formal methods. It's nicely written…

I got the impression that we both read completely different articles, because nowhere in it I see EWD saying that mathematicians or scientists should think by means of formal methods... That doesn't even make sense, since formal methods are a way not to think.

What he states is that computers are a "formal method applying machine" (a conclusion you seem to share), and that for competently using it, one must know formal methods. And, honestly, I can't imagine how one can disagree with that. (And that was the fate of EWD, he saw all the patently obvious problems of computing science that somehow everybody was ignoring, and communicated them, just to be called a crazy radical at first, and "duh, of course it's right, tell me something not obvious next time" later.)

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#44
post #17

I know Dijkstra's genius and all, but his papers are just so unpleasant. First, I hate his verbose style and second, I hate his attitude. "The effort of using machines to mimic the human mind has always struck me as rather silly. I would rather use them to mimic something better." Jesus, could he be any more smug?

> Jesus, could he be any more smug?

Funny that I think that statement is extremely humble.

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#45
post #7

I think people are attracted more to the form of the EWDs and to it's melancholic tone, rather than to the content itself, which is confirmed by the huge popularity of the EWDs as compared to "The discipline of programming", which is the technical exposition of what Dijkstra really is proposing in the EWDs. As almost all of Dijkstra's writing, this piece here is a plea for teaching formal methods. It's nicely written…

You are confused about the manner of "formal methods" Dijkstra was proposing. His examples given are all using "informal proofs." That is to say, non mechanically verified proofs.

If you create a program in such a way that the properties you claim it has cannot be, even informally, proved. Then you have no reason to believe it works as advertised what-so-ever.

He did also propose a research program in to more formalised transformations and so on to help the programmer - which is a separate thing. But we all know about the difficulty of this and it's failure to materialise in any significant way (yet) for the average programmer.

The reason that that is, or was, a tantalising prospect is that when humans construct correct programs using informal proofs, they are using the same very simple abstractions over and over again. Therefore a system to automatically transform specifications to programs or whatever need not have all the troublesome properties of completeness and such like and may, in fact, be quite tractable. It's debatable whether anyone still think's that that's likely.

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#46
post #7

I think people are attracted more to the form of the EWDs and to it's melancholic tone, rather than to the content itself, which is confirmed by the huge popularity of the EWDs as compared to "The discipline of programming", which is the technical exposition of what Dijkstra really is proposing in the EWDs. As almost all of Dijkstra's writing, this piece here is a plea for teaching formal methods. It's nicely written…

You are confused about the manner of "formal methods" Dijkstra was proposing. His examples given are all using "informal proofs." That is to say, non mechanically verified proofs. If you create a program in such a way that the properties you claim it has cannot be, even informally, proved. Then you have no reason to believe it works as advertised what-so-ever. He did also propose a research program in to more formali…

The example proofs he gives in the article have nothing to do with the way he taught to do programming, they are merely illustration of some of his minor points. Later in the article he says:

On the other hand, we teach a simple, clean, imperative programming language, with a skip and a multiple assignment as basic statements, with a block structure for local variables, the semicolon as operator for statement composition, a nice alternative construct, a nice repetition and, if so desired, a procedure call. To this we add a minimum of data types, say booleans, integers, characters and strings. The essential thing is that, for whatever we introduce, the corresponding semantics is defined by the proof rules that go with it.

This sounds exactly like a description of:

http://en.wikipedia.org/wiki/Predicate_transformer_semantics

And of the approach he uses in "The discipline of programming", so I think you are the one who is confused.

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#47
post #17

I know Dijkstra's genius and all, but his papers are just so unpleasant. First, I hate his verbose style and second, I hate his attitude. "The effort of using machines to mimic the human mind has always struck me as rather silly. I would rather use them to mimic something better." Jesus, could he be any more smug?

> Jesus, could he be any more smug? Funny that I think that statement is extremely humble.

Indeed, the very idea that your fly by the seat of your pants intuition, memory and senses cannot be trusted is the foundational presentiment that brought us science.

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#48
post #4

This EWD is mind blowing in its beauty. It's 30 pages, but 30 pages that you won't regret reading. I love computer science and teaching it is some of the most fun I've ever had. With a lot of practice, you can get across concepts such as computability and turing machines to the non-mathematically initiated within the duration of a party, and it's greatly satisfying. (yes I am a lot of fun to be around) The rest of th…

I use OneNote with a stylus and tablet, both for notes for myself and collaboration. It's like a portable, persistent whiteboard.

I used to mostly take notes with pens on sticky notes, but after a particularly tricky production debugging session I managed to cover most of my cubicle with about 60 hastily scribbled yellow sticky notes. I then proceeded to go on a trip for a week without cleaning up.

After returning I had to dispel a rumor that I had finally "snapped".

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#49
post #7

I think people are attracted more to the form of the EWDs and to it's melancholic tone, rather than to the content itself, which is confirmed by the huge popularity of the EWDs as compared to "The discipline of programming", which is the technical exposition of what Dijkstra really is proposing in the EWDs. As almost all of Dijkstra's writing, this piece here is a plea for teaching formal methods. It's nicely written…

I got the impression that we both read completely different articles, because nowhere in it I see EWD saying that mathematicians or scientists should think by means of formal methods... That doesn't even make sense, since formal methods are a way not to think. What he states is that computers are a "formal method applying machine" (a conclusion you seem to share), and that for competently using it, one must know form…

Dijkstra advocates creating programs by doing formal transformations of specifications written in mathematical logic, and computers just do boolean algebra on strings of bits, so it's not that Dijkstra advocates formal methods because they are somehow essential to how computation is done in the computer - they are not, especially in the form proposed by Dijkstra.

He is proposing formal methods as a way of thinking about developing computer programs, this is clear from reading "A Discipline of Programming". You can not say "formal methods are a way not to think", because the theoretical existence of a sequence of transformations giving you the final program does not tell you how to find those transformations, so some thinking on the part of programmer is still needed. Of course you can come up with a program by a way of thinking completely uninformed by the formal specification, and then formalize it, but this is not what Dijkstra is speaking of in this article. What I am saying in the comment is that I do not believe many people benefit that much from a formal approach to program development, just like not that many new theorems in mathematics, outside of mathematical logic, were discovered using the tools of mathematical logic. Even the proofs themselves in mathematics aren't done in a completely formal way.

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#50

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 usefu…

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…

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...

Post reply on HN