Live data from Hacker News

Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

inference-review.com

161–170 of 206 posts

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#161
post #58
post #45

Earlier quoted context omitted.

I genuinely wonder what gave you this impression. Dijkstra made seminal contributions to at least three subfields of computer science: algorithms (his optimal shortest path algorithm), programming languages (ALGOL -with others, but still- and his "goto considered harmful" paper), and concurrency theory (semaphores), just to state the most well-known ones...

I agree. I get the impression that he formalized several problems and provided a solution to them, e.g. the Dining Philosophers Problem: https://en.wikipedia.org/wiki/Dining_philosophers_problem I think he is actually underrated. I'd have liked to be introduced to his proof notations during some formal courses on my CS formation, which was never mentioned.

His proof format is amazing. I've used it ever since I discovered it in one of the last EWDs.

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#162

Earlier quoted context omitted.

This is the difference between computer science and software engineering. And the vast majority of people who graduate with a CS degree are going to work as software engineers, not as computer scientists. They are therefore being mis-educated to the degree that their CS program agrees with Dijkstra's philosophy. (Which doesn't mean that Dijkstra is wrong about CS. It just means that a CS degree shouldn't be the passp…

What's more confusing is that Software Engineering, Computer Engineering and Computer science overlap quite a bit, but are distinct fields. Furthermore, there really is two kinds of CS departments: the ones that were spun out of a Math department and those that emerged out of an Electrical Engineering one.

Secret third option: spun out of the Business School!

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#163

Backus literally inspired functional programming with his Turing acceptance and Dijkstra attacked him for it. Dijkstra attacked the paper that inspired Haskell and everything else that currently exists in FP. He tried to destroy it. He should be a footnote in history.

I wouldn’t say he tried to destroy functional programming. If you read his response he pretty clearly says that he just thinks that FP as a solution to all problems is “overselling” the solution. And I 100% agree. Thinking that functional programming solves all problems is a fundamental misunderstanding of computation. The first thing that opened my eyes to the overselling of FP as a panacea was reading Leslie Lampor…

Lamport is a giant and one of the greatest living computing scientists. He's also getting more and more Dijkstra-like. I say that with full admiration.

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#164
post #61

A well written portrait of a truly great and original "Scientist" in the true sense of the term. I have always wondered why his approach of constructing correctness proof along with the implementation never really caught on. I think it was what allowed him to come up with his novel algorithms. Have we lost something of the real essence of logical thinking here? Perhaps the paper mentioned in the article; Social Proce…

Probably because the cost associated with constructing such proofs for the vast majority of modern software use cases (like showing ads on 8 different browsers) is too high (cheaper to just hire QA teams), and most programmers are not simultaneously software engineers, computer scientists, and mathematicians.

Addendum to my previous reply from the end of EWD288 - "Concern for Correctness as a Guiding Principle for Program Composition";

My thesis is, that a helpful programming methodology should be closely tied to correctness concerns. I am perfectly willing to admit that I myself may be the most complete victim of my own propaganda, but that will not prevent me from preaching my gospel, which is as follows. When correctness concerns come as an afterthought and correctness proofs have to be given once the program is already completed, the programmer can indeed expect severe troubles. If, however, he adheres to the discipline to produce the correctness proofs as he programs along, he will produce program and proof with less effort than programming alone would have taken.

The framework of this contribution does not allow the inclusion of a worked-out example. Instead I shall try to sketch how the hand-in-hand construction of a program and its correctness proof guides the programming process.

I found what I regard as the quintessence of this methodology in the summer of 1968, when my attitude towards flowcharts changed radically. Up till that moment, I had regarded a flowchart as something incomplete, as a plan, as a (half-pictorial, but that is not essential) representation of my intentions, something that as a description would only make sense if all further details, down to the bottom, had indeed been supplied. But it was then that I saw that such a sketch of a program still to be made, could be regarded as an abstract version of the final program, or even, that it could be regarded as "the program", be it for a —in all probability hypothetical— machine with the proper repertoire of primitive actions operating on variables of the proper types. If such a machine were available, the "rough sketch" would solve the problem; usually it is not available, and actions and data types assumed have to be further detailed in the next levels of refinement. It is the function of these next levels to build the machine that has been assumed to be available at the top level, i.e. at the highest level of abstraction. This most abstract version is now no longer a draft of the final program, it is an essential part of the total program; its correctness is independent of the lower level refinements and can be established beforehand. To give this correctness proof before proceding with the lower level refinements serves many purposes. It establishes the correctness of the top level. Fine, but what is more important is that we do this by applying well-established theorems applicable to well-known sequencing clauses, and as a result it becomes most natural to avoid clever constructions like the plague. But the most important consequence is that the proof for one level ensures that the interface between itself and the lower levels has been given completely, as far as is relevant for that level; and also, by fixing in the interface only what the correctness proof really needs, the interface can be kept free from overspecification.

Finally, a word or two about a wide-spread superstition, viz. that correctness proofs can only be given if you know exactly what your program has to do, that in real life it is often not completely known what the program has to do and that, therefore, in real life correctness proofs are impractical. The fallacy in this argument is to be found in the confusion between "exact" and "complete": although the program requirements may still be "incomplete", a certain number of broad characteristics will be "exactly" known. The abstract program can see to it that these broad specifications are exactly met, while more detailed aspects of the problem specification are catered for in the lower levels. In the step-wise approach it is suggested that even in the case of a well-defined task, certain aspects of the given problem statement are ignored at the beginning. This means that the programmer does not regard the given task as an isolated thing to be done, but is invited to view the task as a member of a whole family; he is invited to make the suitable generalizations of the given problem statement. By successively adding more detail in the lower levels he eventually pins his program down to a solution for the given problem.

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#165
post #94

Good read. For anyone interested in seeing the human side of Dijkstra, I recommend this documentary: https://www.youtube.com/watch?v=RCCigccBzIU When I watched it I was both studying Computer Science and learning Dutch, so it was twice as interesting. The version I linked provides English subtitles.

Neat video! Thanks for posting it.

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#166
post #157

Earlier quoted context omitted.

That is good stuff (well he was Dijkstra). I think we've all seen such hubris play out. When you want to prove that you are intellectually superior you will demonstrate that you can master the most difficult tools (say category theory?) without understanding that your real goal should be to find simple solutions to difficult problems. A simple solution does not look like much because it is so simple, but it can take…

Bear in mind though that spending hours upon hours to find a simple solution to a hard problem will tank your professional career. Why? Because your manager will look at your simple solution that you took such pains to derive and then ask why it took you so long to produce such a small amount of such obvious code.

That is the case no doubt in most organizations. And I can see their point if it works it works even if it may be very difficult to maintain it. But that should be a conscious decision, not a point of pride how complicated the code is to understand.

Just because a person can write code that only they can understand does not mean they are more intelligent than others, nor that the quality of such code would be "good". :-)

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#167

It is remarkable how much he contravened modern academic norms: no work to bring in external funding, relatively few papers, very little collaboration, almost no PhD students. It's not an exaggeration to say that a young researcher with these characteristics today would likely get fired from any high-ranked American research university before even coming up for tenure review. Perhaps our modern academic metrics of me…

They sure do. Here is Freeman Dyson; the Physicist without a PhD ( https://www.quantamagazine.org/a-math-puzzle-worthy-of-freem... ); Oh, yes. I’m very proud of not having a Ph.D. I think the Ph.D. system is an abomination. It was invented as a system for educating German professors in the 19th century, and it works well under those conditions. It’s good for a very small number of people who are going to spend their…

I don't get it. Isn't it well-known that PhD makes only sense for people who want career in research? In this case, why "wasting years and years" doing research would be a waste of time?

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#168

Earlier quoted context omitted.

They sure do. Here is Freeman Dyson; the Physicist without a PhD ( https://www.quantamagazine.org/a-math-puzzle-worthy-of-freem... ); Oh, yes. I’m very proud of not having a Ph.D. I think the Ph.D. system is an abomination. It was invented as a system for educating German professors in the 19th century, and it works well under those conditions. It’s good for a very small number of people who are going to spend their…

I don't get it. Isn't it well-known that PhD makes only sense for people who want career in research? In this case, why "wasting years and years" doing research would be a waste of time?

My wife is an organic chemist by education and for every R&D job she applied to, there were tens to hundreds of applicants with PhDs. Having "only" a Master's degree, she had no chance. Pretty much all her college friends went to do a PhD, just so they could get a job.

She's a happy software tester now :-)

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#169

Earlier quoted context omitted.

I don't get it. Isn't it well-known that PhD makes only sense for people who want career in research? In this case, why "wasting years and years" doing research would be a waste of time?

My wife is an organic chemist by education and for every R&D job she applied to, there were tens to hundreds of applicants with PhDs. Having "only" a Master's degree, she had no chance. Pretty much all her college friends went to do a PhD, just so they could get a job. She's a happy software tester now :-)

Is there something wrong in this? Better qualified candidates were preferred for a research job. Of course, if you argue that the job didn't actually require PhD-level knowledge/experience, then the problem is in oversaturated job market of the field, not in the PhD system.

Re: Edsger Dijkstra – The Man Who Carried Computer Science on His Shoulders

#170

Earlier quoted context omitted.

They sure do. Here is Freeman Dyson; the Physicist without a PhD ( https://www.quantamagazine.org/a-math-puzzle-worthy-of-freem... ); Oh, yes. I’m very proud of not having a Ph.D. I think the Ph.D. system is an abomination. It was invented as a system for educating German professors in the 19th century, and it works well under those conditions. It’s good for a very small number of people who are going to spend their…

I don't get it. Isn't it well-known that PhD makes only sense for people who want career in research? In this case, why "wasting years and years" doing research would be a waste of time?

You don't always get to work on what you want. Especially if it's outside what's expected in your field.
Post reply on HN