12 ms·
Edsger Dijkstra carried computer science on his shoulders (2020)
- sspiff 3y agoI read this title and automatically assumed this was going to be about Dijkstra. While perhaps less directly impactful on the industry, in computer science teaching and academia, there are few names who loom as large as his. He has touched so many aspects of computer science that we now consider fundamental.
- hiAndrewQuinn 3y agoSame here. He's probably the closest thing this field has to a Euler, or maybe an Erdös.
- KuriousCat 3y agoI too thought about EWD!
- NhanH 3y agoThe whole structured programming practically birthed the industry, so it’s hard to say he has less direct impact in the industry though.
- Animats 3y agoIt was controversial at the time. Dijkstra advocated "single entry, single exit" for each control block. Programs should be composed of such blocks. Makes for very neat flowcharts. Good for entry and exit conditions. Single entry wasn't that controversial. Single exit, though, means no "break", or "continue" for loops, and no early returns from functions. This forces a rather convoluted style. Try writing a loop of the form "get thing, if done quit, process thing, put thing" in that style. You have to have two calls to "get thing", or extra flags. Turns out you don't need that for program proofs, once you have machine assistance to make sure all the cases were covered. It makes for cleaner hand proofs, though. (I never met Dijkstra. Knew people who worked with him.)
- Munksgaard 3y ago> Single exit, though, means no "break", or "continue" for loops, and no early returns from functions. Sounds like pretty standard functional programming a la Standard ML or Haskell, or am I missing something?
- amiga386 3y ago> a rather convoluted style It may be standard for them, but it's why functional languages are niche while C, C++, C#, Java, JavaScript and Python dominate.
- Munksgaard 3y agoThat's a bold claim, do you have any evidence to back that up with? To be clear, I agree that it could be a reason, along with a multitude of others. I think that discerning which is the most substantial reason (if any such exist) is hard if not impossible.
- amiga386 3y agoI don't, I just have the feelings and impressions of various programmers, which is anecdata. I think the pattern that emerges is that the popular languages I listed are multi-discipline, they can be adapted to whichever paradigm you prefer, even if it's a little cumbersome, and over time they adopt the key features of other languages, while retaining their existing benefits. In other words... you can get the best features of Haskell in Python, but you can't get the best features of Python in Haskell?
- nyssos 3y ago> you can get the best features of Haskell in Python Haskell's best features relative to more mainstream languages are HM-style type inference, higher-kinded types, and typeclasses - none of which are possible in a language without real static types.
- 3y ago
- photonthug 3y agoLots of interesting threads to chase down but this biographical piece was cool: > together with his wife, he purchased a Volkswagen bus, dubbed the Touring Machine, which they used to explore national parks Maybe not so surprising for a guy who would not indulge in a vcr, cinema, smartphone or even a computer :) more info would be neat if anyone knows from a longer biographic. Photographer? Bird watcher? Hiker? Camper?
- Hendrikto 3y agoSmartphones were not even a thing during his lifetime.
- photonthug 3y agoOP does say mobile phone. But you're wrong according to Wikipedia.. some 5-10 years of overlap depending on what qualifies as smart
- meiraleal 3y agoOP said smartphone tho
- arjonagelhout 3y agoOP in this case was referring to the author of the article, where the term mobile phone was used.
- eesmith 3y agoYou can see the vehicle at https://youtu.be/mLEOZO1GwVc?t=1220 https://youtu.be/mLEOZO1GwVc?t=1220 . He and his wife are driving to some sort of camping area. It's part of a longer interview with him. He also does crossword puzzles.
- mcguire 3y agoAs well as extensively investigating the longevity of fountain pen inks. He used vintage Montblanc 149s, if it's important.
- psychoslave 3y agoOk, the first thought reading the title was "ah, surely this is about Dijkstras." The immediate second thought that came was the famous quote “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”, from Alan Kay should I believe https://www.goodreads.com/quotes/69528-i-don-t-know-how-many-of-you-have-ever-met https://www.goodreads.com/quotes/69528-i-don-t-know-how-many...
- photonthug 3y agoHmm, time will tell on this rivalry. OOP may not be as harmful as GOTO, but it does seem to be falling out of favor. Dijkstras point of view may be as vindicated with one as with the other.
- rfrey 3y agoBeing correct or incorrect is orthogonal to arrogance.
- photonthug 3y agoI agree, but this can also be tactical since for whatever reason it's rare in certain cultures that quiet humility is listened to. Also confidence or bluntness may be easily mistaken for arrogance. IDK about Kay but lots of Americans who think they like a "straight shooter" are still unprepared for a Dutch-style discussion
- akira2501 3y ago> it's rare in certain cultures that quiet humility is listened to. There's the old adage that you "can lead a horse to water but you can't make him drink." I wonder what those who give up on humility think they're actually gaining?
- tialaramex 3y agoNote that Dijkstra's letter is about the "go-to statement" a then common but now very rare language feature which is akin to the machine code absolute jump - whatever you were doing, now you're doing this with no context. BASICs are perhaps the language HN readers are most likely to have seen which (in some cases) have the GOTO feature Dijkstra wrote the letter about, if you've seen goto in C for example, or C++, that resembles the go-to statement superficially, but in practice it's not very dangerous because it's constrained. Suppose my C++ f() recursive function adds a "goto" - it's not allowed to jump into a different function g(), it's not even allowed to jump into a different iteration of the same function f(), it's only allowed to change which part of the current iteration of the current function happens next, and it can't skip the destruction or initialization of variables, or other book keeping.
- Almondsetat 3y agoI recently realized, after talking to a friend of mine who studied Dijkstra's works, that for as much as he was interested in writing correct programs his "Structured Programming" approach makes absolutely zero guarantees on correctess or even verifiability. A program written in a structured way is not inherently more correct nor easier to automatically check for bugs.
- rstuart4133 3y ago> his "Structured Programming" approach makes absolutely zero guarantees on correctess or even verifiability That was never the claim. The claim was humans using "Structured programming" produced code with less bugs than humans using other methods. "Humans" being the key word here, a compiler will happily produce perfect programs every time just using goto's (because there is no choice in assembler). But when humans use goto's it's usually a disaster. History has vindicated him big time. Many modern languages don't have goto's, precisely for this reason.
- throwawaaarrgh 3y agoTo add to that: a "correct and verifiable" program isn't necessarily better. If I decided to make food using chemistry which is "correct and verifiable" as being the healthiest food in the world, it would probably taste terrible.
- mcguire 3y agoOn the other hand, a program written without structured programming is insanely hard to check for bugs, modify, or get anywhere near right in the first place.
- sambalbadjak 3y agoI like Dijkstra's quote: "The question of whether machines can think is about as relevant as the question of whether submarines can swim."
- litenboll 3y agoMaybe I'm stupid, but does he mean that as long as the task at hand is solved it doesn't matter how we categorize it. In the submarine case it would be "move through water", for example. Or is it deeper than that?
- Uehreka 3y ago> does he mean that as long as the task at hand is solved it doesn't matter how we categorize it. Yes
- deleted 3y ago[deleted]
- chongli 3y agoYes. He was interested in problem-solving, not philosophizing. The debates about AI going on right now are the kind he’d prefer to avoid.
- deltaburnt 3y agoTo be fair, 10+ years ago this conversation definitely would have been pretty silly. Maybe about as interesting as asking "is there other life in the universe". No one knows the answer, it's an incredibly over discussed topic, and we won't know for sure for many years. I think those points still apply to AI intelligence today. However, the power of today's AI greatly outstrips anything Djikstra would have seen in his day.
- DrScientist 3y agoThe point isn't about whether it is unknowable or not - rather does having the answer have any practical value - ie does the attribution of 'thinking' add any value to understanding a program?
- derelicta 3y agoI will always be impressed by folks who dare become academicians. It requires a lot of self-sacrifice
- deleted 3y ago[deleted]
- rcbdev 3y agoDijkstra is a wonderful source of memorable quotes and hot takes from the early days of software. A sampling: > “The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.” (Dijkstra, 1972) > “The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.” (Dijkstra, 1982) > “Object-oriented programming is an exceptionally bad idea which could only have originated in California.” (Dijkstra, 1989)
- Poliorcetes 3y agowhats wrong with object oriented programming?
- zwnow 3y agoToo many distractions. Software architecture not transparent enough. Design pattern hell where it's not necessary. Too many devs who do not know what they are doing.
- adrian_b 3y agoOOP is great for some applications, e.g. for GUIs, but very bad for other applications, e.g. for scientific computing (where abstract types are very useful, but dynamic polymorphism and inheritance are harmful; moreover, the view that functions belong to data, instead of thinking about data as the things on which functions operate, is prone to inefficiencies whenever the amount of data is huge; one of the reasons why inheritance is harmful in scientific computing is that most operations with physical quantities have 2 or more arguments, and more often than not they are of different types; therefore any attempt to define those operations as member functions of some class that belongs to a hierarchy of classes makes no sense, even if all such operations are best defined as overloaded functions where a specific implementation is selected at compile time, based on the types of the arguments). Unfortunately, when OOP has become fashionable, its proponents have tried to convince everybody that OOP is the best paradigm for absolutely all programming problems, not only for those where OOP is indeed the best, and they have been rather successful for some time, which was bad for the software industry in general, resulting in many sub-optimal programs.
- make3 3y agohttps://archive.ph/GIM85 https://archive.ph/GIM85
- archixe 3y ago> "Whether written using a fountain pen or typewriter, Dijkstra’s technical reports were composed at a speed of around three words per minute. “The rest of the time,” he remarked, “is taken up by thinking.”9 For Dijkstra, writing and thinking blended into one activity. When preparing a new EWD, he always sought to produce the final version from the outset." > "He also never purchased a computer. Eventually, in the late 1980s, he was given one as a gift by a computer company, but never used it for word processing. Dijkstra did not own a TV, a VCR, or even a mobile phone. He preferred to avoid the cinema, citing an oversensitivity to visual input. By contrast, he enjoyed attending classical music concerts." This is very fascinating to me, as a generally unsure person, I can't imagine writing anything this way let alone scientific papers. It certainly requires a deep focus and great knowledge on what you are writing about. I will try to give it a go next time I write out my thoughts. There is interesting interview where he goes deeper into this. https://www.youtube.com/watch?v=P0w1MJHxStg https://www.youtube.com/watch?v=P0w1MJHxStg
- hardasspunk 3y ago3 WPM really shook me as well. Today we complain about not having enough time to work on our projects, but back in the good old days, as successful as Dijkstra was, got time to spend 3 WPM and still produced close to 7k articles! Astonishing.
- leereeves 3y agoI'm sure not owning a TV, let alone social media or YouTube, gave him a lot more time to work.
- anonzzzies 3y agoAt least as I see my colleagues who buy special keyboards to type code faster and still being hellishly unproductive, deleting and rewriting while I prefer to think before typing and have a solution that works when I type it in instead of iterating over solutions that cannot work in the first place. When I type it's fast, I just don't do it so much compared to my peers, but I am more productive delivering working code. Writing with a pen I tried, but no-one, including me, can read it after...
- throwawaaarrgh 3y agoWhere does one go today to find cutting edge research, outside of joining a corporation?
- hardasspunk 3y agoJust read a few of these EWDs. Some of my favorite quotes I read came from the end of these reports. > The question of whether a machine can think is the same as the question of whether a submarine can swim. > In this respect the programmer does not differ from any other craftsman: unless he loves his tools it is highly improbable that he will ever create something of superior quality. The article is very well written and is full of insights into Dijkstra's thought process. Looking forward to reading more EWDs.
- ChrisMarshallNY 3y agoComputer Science's H. L. Mencken. https://en.wikipedia.org/wiki/H._L._Mencken https://en.wikipedia.org/wiki/H._L._Mencken
- DijkstrasPath 3y agoThis is why I chose my username
- User23 3y agoEWD is one of my intellectual heroes. His reasoning exemplifies the philosophical goal of making ideas both clear and distinct. His equational proof is a standout example of the tools he used to do so. About a decade ago, over the course of a few months I skimmed through the archive of his notes[1] and at least perused the majority and dug deeper into the more tantalizing ones. I dare say that it was one of the most educational periods of my professional life. Also, I find his more acerbic observations amusing, but they’re mostly confined to non-technical notes and easily skipped. And who among us hasn’t shared frustration against this or that unfortunate fad in our field? [1] https://www.cs.utexas.edu/users/EWD/transcriptions/transcriptions.htmlhttps://www.cs.utexas.edu/users/EWD/transcriptions/transcriptions.html https://www.cs.utexas.edu/users/EWD/transcriptions/transcrip...
- rpigab 3y agoHow could I spend 3 months in an internship at the Math&CS building of the TU of Eindhoven without knowing he had been so close to this place, after having studied CS including of course Dijkstra's algorithm for finding shortest paths in graphs? Beautiful place btw, of course there are many buildings that didn't exist in his time, I remember the huge and old Atlas building, construction started in 1958. You can go anywhere by bicycle from residential areas of Eindhoven to the TU/e, the city centre, supermarkets, train station, Philips Stadium, even neighbooring towns like Nuenen or Oirschot can be reached on roads dedicated to bikes.
- AnimalMuppet 3y agoThat title is a bit much. Did Dijkstra do so more than Wirth? Hoare? Backus? Knuth? von Neumann? Maybe, maybe, maybe, no, and definitely no. Dijkstra had some real achievements. He was one of the giants, no doubt. But he wasn't the giant. He was highly opinionated. He had his way of working, and anybody who did it any other way was wrong (and probably either stupid or lazy). That's not the optimal route to improving a field, especially when you aren't 100% right.
- borlanco 3y agoThere are more anecdotes about Dijkstra in this collection of testimonials written by his friends, colleagues, and students: https://arxiv.org/abs/2104.03392 https://arxiv.org/abs/2104.03392. These are some of my favorites: From Tony Hoare: They removed recursion from Algol 60, on the grounds of its alleged inefficiency. Edsger's answer was that recursion was a useful programming tool, and every workman should be allowed to fall in love with their tools. From J.R. Rao: He would repeatedly stress the importance of choosing words carefully: "If you have to use your hands, then there is something wrong with your words", he would say, adding "imagine there is a blind man in your audience, how would you speak?" Over time, I came to learn and appreciate that Prof. Dijkstra's class was operating at two different planes. There was the lesson and then, the lesson within the lesson. At one level, the goal was to solve the presented problem. At the second and more richer meta-level was the approach for arriving at the solution. Prof. Dijkstra taught us that in computing science, complexity comes for free; one has to work hard for simplicity. From Alain J. Martin: In his technical writing, he used language like a precision tool. For him, precision did not necessarily imply ease of reading, and he stated that the reader also had to make an effort to understand. From Christian Lengauer: Professionally, Edsger's impact on me is best summarized by his ATAC Rule 0: "Don't make a mess of it." It made me strive for simplicity in notation and modelling throughout my working life and take unpleasant complexity as an indication of a possible lack of comprehension. I decided against writing with a fountain pen. He never took issue with this, except in a letter that he posted seven weeks before his death: "I hope you will overcome your resistance and learn how to fill a pen without soiling your fingers, or otherwise you are denying yourself one of the joys of life." These were his last written words to me. From Lex Bijlsma: A famous quote of EWD is the following: 'I mean, if 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say to yourself "Dijkstra would not have liked this", well, that would be enough immortality for me' (EWD1213). I can testify that this actually works. From K. Mani Chandy: When I write papers, even now, I still see Edsger over my shoulder going "Tsk! Tsk!" [...] I found that being less sloppy not only helped my readers understand what I had written, but most importantly, helped me from confusing myself. From David Turner: I have an invisible Edsger inside my head which looks over my shoulder when I am writing and quietly goes "Tut tut" if I write something that is muddled or not accurate. I don't always listen to that voice but know I should. From J Strother Moore: At faculty meetings when Edsger was not present it was common for someone to say "If Edsger were here he'd say such-and-such." He came to work in the summer wearing a big Texas cowboy hat - they are made to keep you cool in the Texas sun. Often he would have on a cowboy's string tie. So from the waist up, he looked more Texan than I did. But he almost always wore shorts and sandals, which ruined the cowboy image completely. From David Gries: Edsger critiqued not the person but only what they said, and later one could drink a beer and laugh as if nothing happened. Technical differences and shortcomings should be treated this way. From Maarten van Emden, edited for brevity: Douglas Engelbart aroused Dijkstra's ire so much that he needed a whole page of vituperative prose to offload his emotions (EWD387). What has Engelbart done to provoke this outburst? One only has to refer to "Engelbart's Law", see Wikipedia. Its reasoning seems to run as follows: look at what mere printing has done as a tool for thought; the system demonstrated is so much more powerful than printing that it must quickly lead to Intellect Augmentation. This way Engelbart showed no appreciation for the rich culture developed over centuries. What makes printing a powerful tool for thought is mostly due to other things than technology. Much of the power of this culture comes from publishers and editors, who sniff out what is worth printing and hold back what is not. Another important component of this culture is provided by libraries and librarians. Much is due to scholarly societies, which started printing their proceedings and to commercial publishers, which created journals, each with their editorial board and unseen bevy of reviewers. Most of all it is due to the idea of a university.
- bgribble 3y agoI was a grad student in Austin in the 1990s. If Dijkstra showed up for one of the regular department-wide "lunch and learn" type talks, there was a bit of a buzz among the grad students in the room... you knew he was going to pop off with a total left-field question and the results would be pretty entertaining. Free cookies AND comic humiliation from a giant in the field! It was standing-room-only.
- pradn 3y agoDid they have samosas from Ken’s at grad tea time back then? :)
- syndicatedjelly 3y agoAny stories that stand out/are worth sharing?
- mcguire 3y ago1. Asking prospective faculty if the colors (i.e. some of the phrases or expressions were highlighted in different colors) in their slides meant anything. I seem to remember him doing this to several new PhDs the dept. was thinking about hiring and none had a good answer. Apparently nobody warned them, either. 2. Asking a networking guy about the use of the term "stack" in his talk. A little unfair, given that the two uses (push/pop stack vs. network protocol stack) are unrelated, but still a bit funny.
- cpeterso 3y agoMy favorite Dijkstra quote: > The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
- math_dandy 3y agoDijkstra wasn’t IO-bound.
- throw1234651234 3y agoHe carried the Witcher spy network too.
- huskywall 3y agoMy favorite quote of his: "Computer science is no more about computers than astronomy is about telescopes"
- krunck 3y agoI just found this. First paragraph says it all. https://www.cs.utexas.edu/users/EWD/ewd13xx/EWD1316.PDF https://www.cs.utexas.edu/users/EWD/ewd13xx/EWD1316.PDF
- CaffeinatedDev 3y agoHaha just a genuinely humorous guy. It's refreshing to see this side of researchers
- Jtsummers 3y agoDiscussed at the time: https://news.ycombinator.com/item?id=24942671 https://news.ycombinator.com/item?id=24942671 - Oct 30, 2020 with 196 comments A lot of good discussion in there.
- cushpush 3y agoOne of the greatest, I love that he would have his e-mails printed out to read on physical parchment. I believe he said that CS is as much about actual computers as Astronomy is about telescopes. Very cool.
- neves 3y agoWhat a delicious text and personality. I always like to read about Dijkstra, but this is top notch.
- richrichie 3y agoIf one man carried CS on his shoulders, is it proof that CS is much hyped as a scientific field of its own? It may be big because of industrial applications, but as a discipline does it deserve to be bigger than a section in an applied math dept or elec engg dept in universities?