[HN Gopher] Edsger Dijkstra carried computer science on his shou...
       ___________________________________________________________________
        
       Edsger Dijkstra carried computer science on his shoulders (2020)
        
       Author : throwup238
       Score  : 327 points
       Date   : 2024-01-24 18:14 UTC (2 days ago)
        
 (HTM) web link (inference-review.com)
 (TXT) w3m dump (inference-review.com)
        
       | sspiff wrote:
       | I 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 wrote:
         | Same here. He's probably the closest thing this field has to a
         | Euler, or maybe an Erdos.
        
           | KuriousCat wrote:
           | I too thought about EWD!
        
         | NhanH wrote:
         | The whole structured programming practically birthed the
         | industry, so it's hard to say he has less direct impact in the
         | industry though.
        
           | Animats wrote:
           | It 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 wrote:
             | > 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 wrote:
               | > 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 wrote:
               | That'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 wrote:
               | I 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 wrote:
               | > 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.
        
               | neonsunset wrote:
               | Rust is a quite functional language, C# has been
               | incorporating (aka stealing from F# :)) functional
               | features for years starting with LINQ and ending with
               | advanced forms like pattern matching on sequences (list
               | patterns).
               | 
               | I believe all kinds of Python frameworks too like to
               | incorporate FP into their APIs, and of course, there are
               | list comprehensions.
        
               | louthy wrote:
               | LINQ is arguably stolen from Haskell, not F#. It is
               | closer to 'do' notation than Computation Expressions
               | (which has more features).
               | 
               | The fact that Eric Meijer was very active in the Haskell
               | community, I think, pretty much confirms that.
        
               | bmicraft wrote:
               | Guard clauses are considered good practice in many
               | languages, as opposed to nested if's.
               | 
               | I'm not saying either approach is generally the right
               | one, but I think it's interesting that best practice can
               | be the polar opposite of his "single exit" recommendation
        
               | drivers99 wrote:
               | Dijkstra came up with "guard". Well, "guarded command" as
               | a formal part of the logic of correct programs:
               | https://en.wikipedia.org/wiki/Guarded_Command_Language
               | 
               | > The guard is a proposition, which must be true before
               | the statement is executed. At the start of that
               | statement's execution, one may assume the guard to be
               | true. Also, if the guard is false, the statement will not
               | be executed. The use of guarded commands makes it easier
               | to prove the program meets the specification. The
               | statement is often another guarded command.
        
             | amiga386 wrote:
             | Was there not the workaround (at least by the time Pascal
             | arrived), of intra-function gotos, and being able to assign
             | the return value from anywhere? In effect, the "return"
             | keyword of other languages.
             | 
             | e.g.                  function Foo (Value : integer) :
             | boolean;        label return;        begin
             | if Value < 0 then           begin               Foo :=
             | false;               goto return;           end;
             | Foo := Bar(Value);        return:        end;
        
             | rprospero wrote:
             | I had always heard that the "single exit" focus on "break"
             | and "continue" was a misunderstanding. When wild GOTOs
             | roamed the earth, with was common for a subroutine to end
             | by jumping to a new part of the code, with the jump
             | location being different depending on conditionals within
             | the code. The "single exit" commandment was that a
             | subroutine should always exit back into the routine that
             | had called it. That makes it less an injunction against a
             | function having early returns and more a rejection of
             | continuation passing style.
        
               | AnimalMuppet wrote:
               | "Break" and "continue" have been (accurately) described
               | as "structured goto". They are, at heart, goto. But they
               | are constrained to operate in ways the make sense within
               | the structured programming approach.
        
             | marcosdumay wrote:
             | Well, anybody that completely redefines an area of
             | knowledge is doomed to get one or two details wrong on the
             | first try.
        
             | norir wrote:
             | The single exit style works great in a language with TCO,
             | nested functions and no looping primitive at all. No such
             | language is widely available. But the style works really
             | well and can be simulated in languages like scala if you
             | ignore the while keyword and express all loops as tail
             | recursive functions. This style does not work well in c
             | (particularly due to the lack of nested functions) and
             | similar languages.
             | 
             | It is a different way of thinking though and it takes a
             | while before your mind stops reaching for while loops.
        
             | mcguire wrote:
             | The key point of structured programming is that you don't
             | need any control structures other than sequential
             | composition, a conditional construct, and a (typically
             | while) loop construct.
        
       | photonthug wrote:
       | Lots 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 wrote:
         | Smartphones were not even a thing during his lifetime.
        
           | photonthug wrote:
           | OP does say mobile phone. But you're wrong according to
           | Wikipedia.. some 5-10 years of overlap depending on what
           | qualifies as smart
        
             | meiraleal wrote:
             | OP said smartphone tho
        
               | arjonagelhout wrote:
               | OP in this case was referring to the author of the
               | article, where the term mobile phone was used.
        
         | eesmith wrote:
         | You can see the vehicle at 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 wrote:
           | As well as extensively investigating the longevity of
           | fountain pen inks. He used vintage Montblanc 149s, if it's
           | important.
        
       | psychoslave wrote:
       | Ok, 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...
        
         | photonthug wrote:
         | Hmm, 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 wrote:
           | Being correct or incorrect is orthogonal to arrogance.
        
             | photonthug wrote:
             | I 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 wrote:
               | > 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 wrote:
           | Note 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.
        
             | kevin_thibedeau wrote:
             | C/C++ has the dangerous goto under the guise of longjmp().
        
         | tristramb wrote:
         | I think Peter Medewar once said of James Watson and Francis
         | Crick that "they have done somthing worth being arrogant
         | about".
         | 
         | The same applies to Dijkstra.
         | 
         | You could start with this account of the Dijkstra-Zonneveld
         | Algol 60 compiler written by Kruseman Aretz:
         | https://ir.cwi.nl/pub/4155.
        
         | marcosdumay wrote:
         | I always wonder if he was so different in person than he was on
         | his essays and interviews.
         | 
         | We are talking about the person that institutionalized the "we
         | people aren't smart enough to do X" line of thinking from
         | software engineering.
         | 
         | Of course, he was also quick to call a spade a spade, but I
         | haven seeing any case of him denouncing something that wasn't
         | obviously bad.
        
         | jhp123 wrote:
         | Did Dijkstra ever write down a personal insult like this
         | against anyone? I haven't come across it...
        
           | LAC-Tech wrote:
           | _Object-oriented programming an exceptionally bad idea which
           | could only have originated in California_
        
         | LAC-Tech wrote:
         | Apparently Alan Kay knew Dijkstra and was meant as a joke
         | rather than some big insult.
        
         | Gibbon1 wrote:
         | I feel like it's not just Dijkstra but the abrasive arrogance
         | computer science inherited from mathematics culture has been a
         | huge negative. It's why the workplaces are toxic and why women
         | have abandoned the field. It's worse where computer science
         | culture and marketing culture intersect.
         | 
         | But Dijkstra is the poster child for that sort of thing.
        
       | Almondsetat wrote:
       | I 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 wrote:
         | > 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 wrote:
           | To 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 wrote:
         | On 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 wrote:
       | I like Dijkstra's quote: "The question of whether machines can
       | think is about as relevant as the question of whether submarines
       | can swim."
        
         | litenboll wrote:
         | Maybe 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 wrote:
           | > does he mean that as long as the task at hand is solved it
           | doesn't matter how we categorize it.
           | 
           | Yes
        
           | chongli wrote:
           | Yes. 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 wrote:
             | To 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 wrote:
               | The 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?
        
               | bmoxb wrote:
               | The improvement of AI lately doesn't invalidate his point
               | though. I'm sure submarine technology has similarly
               | improved but it's still irrelevant whether or not a
               | submarine can be said to 'swim' not.
        
               | eli wrote:
               | He's objecting to the question. How well you feel you can
               | answer it doesn't matter.
        
           | meiraleal wrote:
           | I think it is about the relevance of anthropomorphizing
           | machines, submarines don't swim.
        
           | ThomasBHickey wrote:
           | I think he meant it depends on how you define 'swim'
        
           | cmiles74 wrote:
           | Is there something here about the terms being sloppy and
           | unscientific, making the answer somewhat useless? Whatever
           | "swimming" or "thinking" might be, it's not something clearly
           | defined.
        
         | amelius wrote:
         | Relevant to what exactly?
        
           | namaria wrote:
           | The quote claims it's irrelevant, not relevant (to
           | something).
        
             | amelius wrote:
             | Well, it is relevant to the current discussion.
        
               | Jtsummers wrote:
               | https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08x
               | x/E...
               | 
               | Here's the context since it's been quoted without
               | providing it.
        
           | rstuart4133 wrote:
           | He's a computer scientist speaking to other computer
           | scientists, so I'd say he's talking about relevancy to
           | computer science.
           | 
           | But I think perhaps you've missed his subtle use of language.
           | 
           | Fish swim, obviously. What submarines do in water isn't
           | usually described a swimming.
           | 
           | That's a bit odd in when you think about it as in both cases
           | the objective is to get from A to B, while in the water. In
           | fact if you look at only the outcomes, what fish and
           | submarines do when swimming looks almost identical. They move
           | (or perhaps be stationary in a current), they tend to be
           | efficient about it, they try to not make a lot of noise, they
           | even use very similar mechanisms to move vertically.
           | 
           | Despite that it almost seems that to swim you have to be
           | fish, or a sea snake, or a blue bottle or water bug - but not
           | a submarine. And going by the discussions here to think you
           | have to be a human, or a dog, or just about anything but a
           | computer. And that's true no matter how closely a computer
           | can emulate tasks we say require thinking in a human.
           | 
           | A conclusion you might draw then is whether a submarine swims
           | deciding belongs in the domain of linguistics, not computer
           | science. And he's saying that's true for whether computers
           | "think" too.
        
             | dsco wrote:
             | See what's strange here is that we would call a dancing
             | robot "dancing", and not think twice about it.
        
               | mjburgess wrote:
               | Because robots are built to perform the illusion of being
               | animal-like, and often human-like more specifically.
               | 
               | So there's a theatrical game being played when
               | interacting with these devices that makes them valuable
               | to the people playing that game.
               | 
               | More generally, when the adtech companies selling the
               | current round of AI do the same, without any irony, it's
               | usually a mixture of charlatanism, selling and legal
               | avoidance.
               | 
               | (Eg., that "ChatGPT _wrote_ X " is a kind of theatrical
               | game wherein OpenAI are the material beneficiaries, and
               | most others, are the loosers).
        
               | throwawaaarrgh wrote:
               | We do have a dance called 'the robot'
        
               | User23 wrote:
               | I would call dancing lights "dancing" too. As has already
               | been said, it's a linguistic issue.
               | 
               | And it's perfectly reasonable to say a machine "thinks."
               | It's just good to understand that it's a metaphor and not
               | a literal description of what the machine is doing. I
               | avoid saying machines think because it's confusing, but
               | in principle it's fine.
        
           | _a_a_a_ wrote:
           | Relevant to the question of whether machines can think.
        
         | avgcorrection wrote:
         | > There is also a different approach to the [unification]
         | problem, which is highly influential though it seems to me not
         | only foreign to the sciences but also close to senseless. This
         | approach divorces the cognitive sciences from a biological
         | setting, and seeks tests to determine whether some object
         | "manifests intelligence" ("plays chess," "understands Chinese,"
         | or whatever). [...]
         | 
         | > There is a great deal of often heated debate about these
         | matters in the literature of the cognitive sciences, artificial
         | intelligence, and philosophy of mind, but it is hard to see
         | that any serious question has been posed. The question of
         | whether a computer is playing chess, or doing long division, or
         | translating Chinese, is like the question of whether robots can
         | murder or airplanes can fly -- or people; after all, the
         | "flight" of the Olympic long jump champion is only an order of
         | magnitude short of that of the chicken champion (so I'm told).
         | These are questions of decision, not fact; decision as to
         | whether to adopt a certain metaphoric extension of common
         | usage.
         | 
         | https://chomsky.info/prospects01/
        
       | derelicta wrote:
       | I will always be impressed by folks who dare become academicians.
       | It requires a lot of self-sacrifice
        
       | rcbdev wrote:
       | Dijkstra 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 wrote:
         | whats wrong with object oriented programming?
        
           | zwnow wrote:
           | Too 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 wrote:
           | OOP 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.
        
           | avianlyric wrote:
           | Most real world problems don't fit into neatly into
           | hierarchical structures. OOP pushes you towards trying to
           | model everything in the world an objects with strictly
           | defined operations that can be performed on, where those
           | actions are determined by the data type itself.
           | 
           | You end up being forced to co-mingle your data structure
           | design, with your data processing design. Which tends to be
           | rather unhelpful.
           | 
           | Keeping your data structures fairly separate from the
           | processes/functions that operate on them makes it much easier
           | to build composable software. Data structures tend to be very
           | hard to change over time, because the migration process is
           | always tricky. Any structure that's exposed outside your
           | programs address space, whether that be via an API, storage
           | on disk or in a DB, needs a migration path so new code can
           | deal with old structures correctly. On the other hand,
           | algorithms operating on that data are trivial to change,
           | there's no migration risk, and indeed we should expect those
           | algorithms to change often, as the requirements of the
           | software change.
           | 
           | In an OOP world, because you're strongly encouraged to
           | tightly bind your data structures to the algorithms that
           | operate on them. You quickly end up in a horrible situation
           | where changing your algorithms is very difficult without also
           | being forced to change your data structures. Suddenly what
           | should be a simple and easy change (introducing a new way of
           | processing data), becomes difficult because coupling created
           | by objects makes it hard to change the processing without
           | also changing the data structures.
           | 
           | In a simple "write-once" world, OOP is fine. But once you
           | want to write software that's expected to evolve and adapt
           | over years, as business requirements change, OOP quickly
           | becomes more a hinderance than help.
        
             | arein3 wrote:
             | In OOP you can have data structures and algorithms
             | separated. You can use composition over inheritance without
             | issues.
             | 
             | The fact that a language is strong typed and you get
             | compilation errors if you forgot something is a big plus.
             | 
             | OOP is fundamentally about no static variables.
        
               | gryn wrote:
               | don't conflate 'Objects' with 'Object Oriented Design',
               | if you split your data Structures from you algos then
               | your just using an OOP-language to do programming not
               | doing OOP.
               | 
               | strong typing has nothing to do with OOP. static variable
               | are replaced by singletons and other similar in spirit
               | objects.
               | 
               | OOP today is a 'No true Scotsman' concept much like
               | communism, agile, and other vague by design terms. You
               | can't argue against it because every individual has at
               | least one definition in his head and it shifts through
               | the conversation toward the one that's not refuted by the
               | claims.
               | 
               | the intent of such concepts is to hit you in the feels
               | and trigger some ideals inside you, so that you associate
               | the positive feelings you have toward those ideals to the
               | concept.
               | 
               | if you argue about it as it is used in practice you will
               | inevitably have someone bring up that java style OOP is
               | not true OOP and that you should look intro Smalltalk or
               | some other language that implement "Real OOP".
               | 
               | since arguing about specifics is a losing battle, lets
               | argue about the bigger picture, if we take the goals of
               | alain kay like he talked about in many of his talks his
               | goals was to make systems more like biogology, but as a
               | system designer the last thing you want to do is that. we
               | don't know much about biology, people in that field a
               | still reverse engineering pre-existing designs to this
               | day and not designing much of their own from scratch. If
               | you design a system you want to have the most control and
               | foresight in the dynamics of your systems, uncontrolled &
               | unintended emergent effects are your source of problems.
               | 
               | entangling data and behavior make your conceptual design
               | state-space size explode, when you go full OOP you become
               | an ontologist philosophizing about what is an X and what
               | is an X-manager, X-Provider, ... and less of a system
               | designer trying to make sure your system does not land in
               | the wrong states.
        
               | DrScientist wrote:
               | Aren't you then just attacking a programming style that
               | nobody actually uses or advocates?
               | 
               | One of the most influential books about OOP - "Design
               | Patterns: Elements of Reusable Object-Oriented Software"
               | - talks about composition, separating interface from
               | implementation etc - not about hierarchies ( other than
               | to prefer composition ).
        
               | adrian_b wrote:
               | Composition and "separating interface from
               | implementation" are not specific to OOP languages.
               | 
               | Composition has been used since LISP I and ALGOL 60 in
               | almost all programming languages.
               | 
               | "Separating interface from implementation" is also the
               | main feature of the programming languages based on
               | abstract types, starting with Alphard and CLU, which are
               | not OOP languages and which predate the time when
               | Smalltalk has become known to the public, launching the
               | OOP fashion.
               | 
               | An abstract type is defined by an interface, i.e. by a
               | set of functions that have arguments of that type and
               | this is a programming language feature that is completely
               | independent of the OOP features like member functions,
               | virtual functions and inheritance.
               | 
               | All OOP languages have some kind of abstract types,
               | though with a different point of view on the
               | relationships between individual objects and types a.k.a.
               | classes and the functions that operate on them, but there
               | have been many languages with abstract data types without
               | the OOP features.
               | 
               | Moreover "separating interface from implementation" has
               | also been the main feature of all programming languages
               | based on modules, starting with Mesa, Modula and Ada.
               | 
               | The features that identify an OOP language are the idea
               | that the functions belong to individual objects, not to
               | types, hence the member functions, the substitution of
               | the union types (of the right kind, like in Algol 68, not
               | of the pathetic kinds encountered in Pascal and C and
               | derived languages) with virtual functions (to provide an
               | alternative form of dynamic polymorphism, which is
               | preferable for closed-source software, by allowing
               | changes without recompilation, unlike with tagged unions
               | where there are select/case/switch statements that must
               | be recompiled when the union is extended), and the
               | inheritance in a class hierarchy.
               | 
               | There are many languages that are multi-paradigm, like
               | C++ or D, where you can choose whether to write a program
               | in an OOP style or in a totally different style, but
               | there are also languages where it is difficult to avoid
               | using the OOP features, or even impossible, because all
               | the available data types may be derived from some base
               | "object" type, inheriting its properties.
        
               | mcguire wrote:
               | Much of the Design Patterns phenomenon involves
               | convincing Java to do things that are idiomatic in other
               | languages.
        
               | anon291 wrote:
               | > The fact that a language is strong typed and you get
               | compilation errors if you forgot something is a big plus.
               | 
               | That is not at all unique to OOP, and in fact OOP makes
               | the problem undecidable due to ad-hoc subtyping. More
               | structured languages like ML, Haskell, and Rust are much
               | easier to reason about and have much stronger type
               | systems.
        
               | mcguire wrote:
               | That, as I have been told, is "object-based programming",
               | not object-oriented programming.
        
             | DrScientist wrote:
             | I think the main problem with OOP is that the classic
             | animal/cat/dog type class hierarchy examples that are used
             | in teaching are in fact hardly ever used in the real world
             | - giving a very misleading view of how it's actually used
             | in practice.
             | 
             | Most people using OOP languages prefer composition over
             | hierarchies and I almost never see those complex class
             | structures modelled on data ( for some of the reasons you
             | give ).
             | 
             | In terms of evolvability - encapsulation - a key feature of
             | OOP - is a key tool in enabling that.
        
               | microtherion wrote:
               | You're right that animal/cat/dog hierarchies are hardly
               | ever used, but exposing students too early to
               | DogFactoryFactorySingleton might cause lasting mental
               | damage.
        
             | koonsolo wrote:
             | So can you tell me which programming paradigm actually
             | solves these problems that OOP has?
             | 
             | And also, can you give me a huge non-OOP codebase that
             | shows in practice how it is better than the potential OOP
             | implementation?
        
               | skydhash wrote:
               | Paradigms don't solve each other's problems. They're just
               | another approach that may be better in specific contexts
               | and you can even mix them. Although today, some languages
               | is veering towards using structs and the like for data
               | models and classes as logic containers (swift, kotlin).
               | 
               | As for huge codebases, everyone knows that line of codes
               | does not equal quality.
        
               | koonsolo wrote:
               | So basically, OOP is still the best for big iterative
               | projects?
        
           | HenriTEL wrote:
           | Like everything it has its pro and cons. One of the con is
           | that it favors a strong coupling between data and operations.
           | Which mean that a change at one place is likely to
           | change/break things elsewhere.
        
           | Rochus wrote:
           | > _whats wrong with object oriented programming?_
           | 
           | Nothing. It's just one of many useful tools we can use to
           | develop software. It's like with food. Sometimes some people
           | loudly claim that a certain food is unhealthy, and then a few
           | months or years later you read the exact opposite.
           | Fortunately, there are low-pass filters.
        
           | arein3 wrote:
           | If you want to write a script, OOP "kind of" nudges you
           | towards making multiple data structures and "function"
           | classes instead of having a simple 100 line function.
           | 
           | And it is the wrong choice, if you need a script and can make
           | that function in python.
           | 
           | OOP, particularly Java, is good when you have a lot of
           | functionality, especially if you can use already existing
           | massive ecosystem.
           | 
           | If I would have to write something from scratch, I would not
           | use OOP, but if you need something fairly complicated, chance
           | is there is already a generic solution available, and you
           | need to costomize it, where Java is pretty good.
        
           | jokoon wrote:
           | https://en.wikipedia.org/wiki/Object-oriented_programming
           | 
           | You can find some criticism points in there
        
           | mcguire wrote:
           | I can't speak for Dijkstra, but in my view it is mostly about
           | how it is taught.
           | 
           | When you're learning OOP, you deal with questions like "is a
           | Circle an Ellipse or is an Ellipse a Circle?" F'in' neither,
           | actually. You end up "modelling" "business objects" in
           | "code", leading to monstrosities like Hibernate.
           | 
           | In reality, you have the real-world domain and you have the
           | in-the-computer domain, and trying to make one look like the
           | other is a mistake. OOP is a dandy way of managing some forms
           | of complexity, but it's not often an especially good way of
           | looking at most problems, much less the only way.
        
         | amiga386 wrote:
         | He's the GOAT of hot takes. His critique of the GOTO statement
         | in a 1968 letter to the ACM, which they retitled "Go-to
         | statement considered harmful", is one of the best remembered
         | critiques in programming history.
         | 
         | The phrase "considered harmful" has become a meme and is the
         | go-to phrase (pun intended) for essayists looking to criticise
         | some aspect of computing
         | 
         | https://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF
         | 
         | https://en.wikipedia.org/wiki/Considered_harmful
        
           | Kamq wrote:
           | Dijkstra's take was significantly less spicy. The original
           | title was "A Case Against the Goto Statement". Niklaus Wirth
           | is actually the one who changed it (your wikipedia link
           | covers this).
        
           | cyco130 wrote:
           | An the person who changed the title, inventing the now iconic
           | trope "considered harmful" was none other than recently
           | deceased Niklaus Wirth.
        
           | glimshe wrote:
           | One of the best remembered, and which led to harmful
           | prejudice against BASIC. While the foundation of the
           | criticism makes sense, it led to silly notions as "there is
           | never a case where GOTOs are useful" and "people who start
           | with BASIC are broken programmers forever"
        
             | personalityson wrote:
             | He was also against LISP, but turned around in 1999:
             | 
             | https://www.cs.utexas.edu/users/EWD/transcriptions/EWD12xx/
             | E... "I must confess that I was very slow on appreciating
             | LISP's merits. My first introduction was via a paper that
             | defined the semantics of LISP in terms of LISP, I did not
             | see how that could make sense, I rejected the paper and
             | LISP with it."
        
             | User23 wrote:
             | The problem with unrestricted GOTO isn't that they're never
             | useful or that bad people use them. The problem is
             | specifically that they make predicate transformer semantics
             | (and probably other formalisms) pragmatically useless.
             | 
             | For example in a language without GOTO inside an if
             | statement the guarding condition is known to be a predicate
             | (at least until another operation changes it) whereas in a
             | language with unrestricted GOTO there is no guarantee
             | whatsoever that the guard holds since execution could have
             | jumped past it.
        
               | mcguire wrote:
               | Whenever GOTO comes up, I have to mention Knuth's
               | beautiful paper that was part of that argument:
               | "Structured Programming with go to Statements" (1974).
               | Some quotes:
               | 
               | " _At the I F I P Congress in 1971 I had the pleasure of
               | meeting Dr. Eiichi Goto of Japan, who cheerfully
               | complained that he was always being eliminated._ "
               | 
               | " _For many years, the go to statement has been
               | troublesome in the definition of correctness proofs and
               | language semantics....Just recently, however, Hoare has
               | shown that there is, in fact, a rather simple way to give
               | an axiomatic definition of go to statements; indeed, he
               | wishes quite frankly that it hadn 't been quite so
               | simple._"
               | 
               | I _cannot_ find anything written by Hoare about it, but
               | Knuth goes on to describe it: the idea is that labels
               | have associated preconditions and GOTOs have the
               | semantics _{ precondition(L) } goto L { false }_.
               | 
               | " _Informally, a(L)_ [my  "precondition(L)"] _represents
               | the desired state of affairs at label L; this definition
               | says essentially that a program is correct if a(L) holds
               | at L and before all "go to L" statements, and that
               | control never "falls through" a go to statement to the
               | following text. Stating the assertions a(L) is analogous
               | to formulating loop invariants. Thus, it is not difficult
               | to deal formally with tortuous program structure if it
               | turns out to be necessary; all we need to know is the
               | "meaning" of each label._"
               | 
               | It is a very nice paper. Some sources:
               | 
               | http://www.kohala.com/start/papers.others/knuth.dec74.htm
               | l
               | 
               | https://pic.plover.com/knuth-GOTO.pdf
               | 
               | https://dl.acm.org/doi/10.1145/356635.356640
        
           | goto11 wrote:
           | The GOTO-paper is widely misunderstood though. It is making a
           | case for blocks and scopes and functions as structures which
           | makes it easier to analyze and reason about the execution of
           | complex programs. The case against unconstrained GOTO follows
           | naturally from this since you can't have those structures in
           | combination with unconstrained GOTO.
        
         | vanderZwan wrote:
         | I didn't know the last one. That explains why Alan Kay spent a
         | few minutes of one of his OOPSLA talks roasting Dijkstra[0]
         | 
         |  _" 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"_
         | 
         | Which, I dunno, feels kind of funny coming from him of all
         | people.
         | 
         | https://youtu.be/oKg1hTOQXoY?t=342
        
           | baruchel wrote:
           | See https://medium.com/@acidflask/this-guys-arrogance-takes-
           | your...
        
             | cafard wrote:
             | Would Dijkstra have tolerated the expression "amour-propre"
             | better than "ego"?
        
             | eszed wrote:
             | Thanks for posting this. I really enjoyed reading it. It'd
             | be worth a top-level post (hint) - there's lots in it to
             | discuss without side-tracking this thread.
        
           | norir wrote:
           | Judge not, lest ye be judged.
        
         | Rochus wrote:
         | > " _Object-oriented programming is an exceptionally bad idea
         | which could only have originated in California._ "
         | 
         | Not sure what he meant by "object-oriented", but he - as the
         | other members of the IFIP - was well aware of Simula 67, and he
         | belonged to the faction that rejected van Wijngaarden's
         | proposal and regarded Simula 67 as "a more fruitful
         | development" [1]. So - if he said or wrote that at all - it's
         | likely related to what Kay understood by the term, or the
         | implementation as a dynamically typed, originally interpreted
         | language done at Xerox PARC, not to the kind of "object-
         | orientation" for which Simula 67 is recognized today (remember
         | that the term "object-oriented" was originally not applied to
         | Simula 67 by the public, but to Smalltalk).
         | 
         | [1]
         | https://www.researchgate.net/publication/2948437_Edsger_Dijk...
        
           | rcbdev wrote:
           | > if he said or wrote that at all
           | 
           | See "TUG LINES", Issue 32 [1]
           | 
           | > it's likely related to what Kay understood by the term, or
           | the implementation as a dynamically typed, originally
           | interpreted language done at Xerox PARC
           | 
           | I think the comment was referring to what they were doing at
           | Xerox PARC - yes.
           | 
           | There are more recent writings of him taking jabs at
           | Californian universities for teaching Java to freshmen
           | instead of what he was doing in Austin - teaching functional
           | programming via Haskell. [2]
           | 
           | [1] Dijkstra, E.W. Quoted by Bob Crawford. TUG lines, Journal
           | of the Turbo User Group, 32, Aug.-Sep. (1989)
           | 
           | [2] https://www.cs.utexas.edu/users/EWD/OtherDocs/To%20the%20
           | Bud... (2001)
        
             | Rochus wrote:
             | Thanks for the references.
             | 
             | Unfortunately I wasn't able to find [1] anywhere on the
             | web; the CHM only seems to have issues up to 22. Do you
             | have a link where I can access it?
             | 
             | The other one [2] is also interesting, but the claim is not
             | against OO, but "that functional programs are much more
             | readily appreciated as mathematical objects than imperative
             | ones, so that you can teach what rigorous reasoning about
             | programs amounts to", and that "Java [..] is a mess", which
             | again applies to the language quality (see also Brinch
             | Hansen's paper
             | https://dl.acm.org/doi/10.1145/312009.312034), not the
             | paradigm.
        
             | jprival wrote:
             | [2] doesn't actually seem to call out California by name,
             | though. It would have been a little unfair if he had, since
             | California's most famous public university was teaching
             | intro CS with Scheme and SICP at the time.
        
         | a_imho wrote:
         | Perhaps even more relevant nowadays
         | 
         |  _My point today is that, if we wish to count lines of code, we
         | should not regard them as "lines produced" but as "lines
         | spent": the current conventional wisdom is so foolish as to
         | book that count on the wrong side of the ledger._
         | 
         | https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/E...
        
           | sanderjd wrote:
           | I'm not sure if it's due to having come across this quote
           | long ago, but this idea is ingrained in my bones.
           | 
           | Except I think people have often overly focused on "lines of
           | code" as the unit for this metric, leading many to overrate
           | terse code, even when it is very dense.
           | 
           | But I'm not sure what wording would capture this idea
           | succinctly enough to include it in a pithy quote.
        
             | idontwantthis wrote:
             | Every program should be as simple as possible, but no
             | simpler.
        
             | nordsieck wrote:
             | There's a benefit to terseness. Go's naming conventions are
             | superior to Java's.
             | 
             | APL (and it's many cousins) is a bridge too far for me, but
             | I can see the appeal to having the entire program on a
             | single screen.
        
               | hoosieree wrote:
               | Dijkstra on APL:
               | https://www.jsoftware.com/papers/Dijkstra_Letter.htm
               | 
               | In one short letter he makes an insightful critique yet
               | misses the the point so hard I can practically hear the
               | _woosh_ 42 years later.
        
         | personalityson wrote:
         | Ironclad deduction and logic
         | 
         | " a) 2 <= i < 13
         | 
         | b) 1 < i <= 12
         | 
         | c) 2 <= i <= 12
         | 
         | d) 1 < i < 13
         | 
         | There is a smallest natural number. Exclusion of the lower
         | bound --as in b) and d)-- forces for a subsequence starting at
         | the smallest natural number the lower bound as mentioned into
         | the realm of the unnatural numbers. That is ugly, so for the
         | lower bound we prefer the <= as in a) and c).
         | 
         | Consider now the subsequences starting at the smallest natural
         | number: inclusion of the upper bound would then force the
         | latter to be unnatural by the time the sequence has shrunk to
         | the empty one. That is ugly, so for the upper bound we prefer <
         | as in a) and d). We conclude that convention a) is to be
         | preferred."
         | 
         | I despise this guy
        
           | FeepingCreature wrote:
           | Why? Seems completely correct and good.
           | 
           | You either have an empty range be -1 .. 0, which is ugly, or
           | 0 .. -1, which is also ugly. Thus, start-inclusive, end-
           | exclusive.
        
             | personalityson wrote:
             | "That is ugly" is what separates math (1-indexing in
             | Fortran, R, SAS, SPSS, Matlab, Mathematica, Julia) from the
             | apes
             | 
             | This and column-major order for matrices (a vector is a
             | column, not a row)
        
               | fosforsvenne wrote:
               | I'm not seeing the superior ironcladness in this
               | statement. I must be an ape.
        
               | forgetfulness wrote:
               | Those languages are made for writing throwaway code that
               | sometimes is made to suffer in agony for years, when it
               | wasn't written to be revised more than a week later.
               | 
               | We can be thankful that this applied physicist in
               | particular decided to dedicate time to think carefully
               | about the needs of who would be his colleagues and
               | successors, when he was pretty much inventing programming
               | as a profession; he told of the anecdote of when he got
               | married, and he wasn't able to write in "programmer" as
               | his occupation in the Dutch paperwork, because it didn't
               | exist as a job category yet.
        
             | leereeves wrote:
             | 1 < i < 1 is also ugly. Better to write false, or remove
             | that conditional entirely.
             | 
             | And then, once you remove empty ranges, there's no reason
             | to to choose a range style based on which you prefer for an
             | empty range.
        
         | quickthrower2 wrote:
         | Is that the Smalltalk kind of OO or the C++ kind?
        
         | cafard wrote:
         | I really think that it is a disservice to Dijkstra to remember
         | him as the Don Rickles of computer science.
        
           | microtherion wrote:
           | I think of him more as the Truman Capote of computer science.
           | Backus' characterization of one particular EWD as "bitchy" is
           | right on the money.
        
             | Jtsummers wrote:
             | Is it? Have you read his EWDs? They're quite interesting
             | and he comes across as far more humble than many people
             | seem to imagine him as. Blunt in his criticism, certainly,
             | but not self-agrandizing or boastful.
        
               | microtherion wrote:
               | Yes, I read numerous EWDs, starting roughly 40 years ago.
               | Many of them are indeed interesting (even, or maybe
               | particularly the gossipy parts).
               | 
               | The problem is not that he self-aggrandizes or is
               | boastful; it's that he keeps tearing other people down.
               | And that he was very willing to offer sweeping
               | pronouncements on matters that he had no practical
               | experience in. He basically stopped touching computers in
               | the early 1970s, and certainly stopped writing practical
               | programs. What basis then, did he have for dismissing
               | object oriented programming, which for all its flaws has
               | done decidedly more for human progress than program
               | verification has?
               | 
               | And as the tense exchange with Backus shows, he was quick
               | to dismiss the relevance of functional programming, which
               | certainly has done a lot for the kind of mathematical
               | reasoning he advocates for programming (Apparently he
               | taught his students Haskell later. Did he ever apologize
               | to Backus for his wrong headed initial assessment?).
               | 
               | Would computer science miss ANYTHING relevant if he had
               | stopped working in the field in 1975? His output
               | basically consisted of proving propositions over cherry
               | picked toy problems. I don't think anybody doubts that
               | this is possible, but is this a viable approach to build
               | real systems (not only large ones, but also ones whose
               | requirements evolve over time)? I consider this, at best,
               | highly unproven, and yet he advocates this as the sole
               | approach to be taught in CS education. Knuth noted,
               | correctly, that neither Dijkstra's education nor any of
               | the practical systems he built (Algol compiler, etc) were
               | based on this approach.
        
         | rvba wrote:
         | I will get downvoted for that bur I will ask anyway. So what
         | exactly are his achievements?
         | 
         | After reading the article it seems that he mostly produced hot
         | takes, while others did the actual heavy lifing. Goto
         | considered harmful? And some algorithm that would probably be
         | found by someone else?
         | 
         | Will Linus get a monument made of pure gold when he dies?
        
           | Someone wrote:
           | For one thing, he invented semaphores (https://www.cs.utexas.
           | edu/~EWD/translations/EWD35-English.ht...,
           | https://en.wikipedia.org/wiki/Semaphore_(programming))
        
           | DontchaKnowit wrote:
           | I mean, lookup his wikipedia.
           | 
           | He won a turing award for advocating for structured control
           | flow. That is the modern standard style for programming. He
           | contributed a number of algorithms including the shortest
           | path algorithm.
        
         | teleforce wrote:
         | One of my favorite quotes from Dijkstra is his not so subtle
         | dig on the arrogance of MIT professors on refusing to adopt his
         | solutions to their problems in OS design. Given the time of the
         | remarks, they're most probably the original designers of the
         | ill fated Multics OS.
         | 
         | "You can hardly blame M.I.T. for not taking notice of an
         | obscure computer scientist in a small town in the the
         | Netherlands."
        
         | goto11 wrote:
         | Half of his clever quotes are completely bonkers though and
         | have been disproven by history. How many of you are proving
         | your programs correct before entering them into the computer?
         | Because that is the only correct way to program. And remember
         | he disparaged Margaret Hamiltons software methodology. Sure,
         | she helped put a man on the moon, but apparently she did it
         | _the wrong way_.
         | 
         | I suspect geeks like Dijkstra because he is "edgy" more than
         | because he is correct.
         | 
         | Also, Object-Oriented programming was actually invented in
         | Norway, even though Alan Kay of Smalltalk fame tried to take
         | credit.
         | 
         | He was right about GOTO though, but many developers did not
         | even understand his argument but just read the headline and
         | concluded "GOTO bad".
        
           | steego wrote:
           | Alan Kay didn't claim to invent it. He coined the term. He'll
           | be the first to tell you he was inspired by Simula.
           | 
           | https://www.quora.com/What-did-Alan-Kay-mean-by-I-made-up-
           | th...
        
           | opportune wrote:
           | I like him because he is outspoken rather than because he is
           | edgy.
           | 
           | I don't know how amenable he was to his arguments possibly
           | being incorrect, but I love working with/knowing people who
           | are that combination of outspoken and not-overly-stubborn.
           | People like that are a firehose of ideas and knowledge, even
           | if not everything they say is correct. They also usually are
           | "passionate" about their work and at least competent enough
           | to have unorthodox opinions that don't just sound blatantly
           | stupid.
           | 
           | Most people are too timid or low-ability to be outspoken at
           | all.
        
           | vanderZwan wrote:
           | > _How many of you are proving your programs correct before
           | entering them into the computer?_
           | 
           | Not enough of us, that's how many.
           | 
           | Also, if he said this back when the majority of programs were
           | written in assembly I think it makes a lot more sense.
        
       | make3 wrote:
       | https://archive.ph/GIM85
        
       | archixe wrote:
       | > "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
        
         | hardasspunk wrote:
         | 3 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 wrote:
           | I'm sure not owning a TV, let alone social media or YouTube,
           | gave him a lot more time to work.
        
           | anonzzzies wrote:
           | At 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...
        
             | umanwizard wrote:
             | People buy special keyboards because they enjoy using them,
             | not because they're faster to type on.
        
               | anonzzzies wrote:
               | If they tell me they buy them to type faster on then I
               | tend to assume that's the reason.
        
               | umanwizard wrote:
               | I think that's an incorrect assumption. People are often
               | bad at articulating why they enjoy something.
        
               | dmoy wrote:
               | Or sometimes 'cus it's less pain-inducing for the wrists
        
               | crabbone wrote:
               | Not if you play videogames, but yeah, for writing code
               | keyboard speed doesn't make a difference.
        
               | doubled112 wrote:
               | What baffles me is that some people aren't willing to buy
               | nice peripherals.
               | 
               | I don't know about anybody else, but I spend 8-18 hours a
               | day attached to a mouse and keyboard. I'm not going to
               | use one that doesn't feel good to me.
        
               | a1369209993 wrote:
               | Like with most things, the problem is usually that we
               | can't _find_ peripherals that are actually nice, rather
               | than overpriced (and endorsed by shills). If the options
               | are paying 40$ for a shitty keyboard, versus paying 400$
               | for a still equally (if not more) shitty keyboard, the
               | choice is pretty obvious.
        
             | toss1 wrote:
             | I'm generally with you in terms of think--then--write, and
             | wondering how people can write/type rapidly then endlessly
             | edit. But I do have some modes where it works to write out
             | incomplete thoughts, getting them out of my head, and then
             | edit them into something workable.
             | 
             | Perhaps some people just really need to take that to
             | extremes, getting out of their head all their fragmentary
             | or preliminary thoughts, and filtering and working them
             | down on paper or the screen?
             | 
             | It generally seems (to me) that a good-heavy amount of
             | thinking first works best and/or is most productive, but
             | overall, we all have different brains, training, and
             | experiences, so I'd go with: "whatever works for you" (but
             | try multiple methods).
        
           | bluGill wrote:
           | Are you really any faster on average? Sure I can type 60 wpm
           | (I haven't measured, but this is a reasonable speed for
           | anyone to obtain with a little practice, maybe I'm only 40,
           | or I might even get to 100), but that is in typing situations
           | where I'm not having to think. If your job is to enter some
           | document into a word processor (a human OCR), or transcribe a
           | recording (human speech to text) then typing speed is your
           | limit. However for most of us the limit is thinking. I can
           | type one sentence fast, but then I need to stop to think what
           | the next sentence will say and so my time goes down. When
           | writing code I need even more time to think and thus my total
           | speed is lower. My fingers can still move at 60wpm though.
        
             | hardasspunk wrote:
             | I've never measured my thinking speed before. This
             | measurement is intriguing. I feel that speed of thinking
             | will be inversely proportional to the quality of content we
             | write. Also, even if I can think fast and write quickly, I
             | might have to go back and make amendments which can reduce
             | my average thinking speed.
        
               | bluGill wrote:
               | Linguists have noted that while some people talk faster
               | than others - and some languages/cultures speak faster
               | than others. However this is only a measure of word
               | count, where people talk faster they are not actually
               | saying more, they are just using more words to say it.
               | (note that I could have eliminated "just" in the above
               | sentence - to my ear it seems needed, but the sentence
               | doesn't change meaning without it)
               | 
               | Human thought speed seems to be a reflection on how fast
               | you need to think for normal conversations. Thus orders
               | like "run" or "jump" are likely to be fast as if you need
               | to tell someone to escape a lion speed is important.
               | While if you are planning a hunt you are allowed a lot
               | more time to get details right. Engineering often is a
               | very slow activity as you need to think about a lot of
               | details but you have time. Typing a message like this I
               | want to be fast enough to follow my thought speed which
               | is much faster (I won't claim to type this fast, but I
               | get close and can believe with more practice I would be
               | this fast)
        
             | IggleSniggle wrote:
             | Back when I worked at an office my coworker commented to me
             | that he could always tell when I was coding vs
             | corresponding.
             | 
             | When corresponding, I type at around 120 wpm. When coding,
             | it's got to be closer to 5 or 10. But I really like this
             | idea that it would be useful to push that number lower
             | (while still focusing on the task at hand).
             | 
             | Thing is, I got into this field because I really enjoy
             | interacting with computers via keyboard. It's super
             | satisfying to punch some buttons and make things happen.
             | This is what I love about vim: right off the bat, a single
             | button press feels like it does a lot. Then you punch a
             | whole bunch of buttons to make a new button make something
             | happen. Nevermind that it doesn't achieve product goals.
             | I'm here for the button pressing, and for the creating of
             | new buttons to be pressed.
        
         | AndrewKemendo wrote:
         | There's no other way to do it for this type of a brain. I know
         | because I have the same type of brain.
         | 
         | I spend 90% of my time formulating descriptions of the problem
         | and the desired end state
         | 
         | Hallucinating futures where the state of the world is in a
         | state that I either wanted to be or that somebody's asking me
         | to build
         | 
         | Once you know your final end state, then you need to evaluate
         | the current state of the things that need to change in order to
         | transition to the final state
         | 
         | Once you have your S' and S respectively then the rest of the
         | time is choosing between hallucinations based on sub-component
         | likelihood of being able to move from S to S' within the time
         | window
         | 
         | So the process is to basically trying to derive the transition
         | function and sequencing of creating systems and components that
         | are required, to successfully transition from state S to state
         | S'
         | 
         | So the more granular and precise you can define the systems at
         | S and S' then the easier it is to discover the likelihood
         | pathway for transitional variables and also discover gaps,
         | where systems don't exist, that would be required for S'
         | 
         | Said another way: treat everything - both existing and
         | potential futures- as though they are or within an existing
         | state machine that can be modeled. Your task is to understand
         | the markov process that would result in such a state and then
         | implement the things required to realize it.
         | 
         | The religious call this "Prayer"
         | 
         | Others call it "Manifesting"
        
           | vacuity wrote:
           | Interesting. I try to do something like this, but way simpler
           | and my productivity is low right now. Maybe more practice
           | will help. Would you say you're usually good at doing this
           | and getting results?
        
             | AndrewKemendo wrote:
             | At this point, I consider it deterministic in terms of
             | efficacy
             | 
             | So you can basically hand me any problem and I will
             | implement this process, and I have a high success rate for
             | delivering desired outcomes.
             | 
             | And again, this isn't really like my process I invented. It
             | boils down into a practical implementation of a Markoff
             | process in planning as applied to any set of tasks such
             | they could be discretely described as a state machine.
             | 
             | The key challenge IMO is in describing the state machine,
             | and that is what takes a lot of elucidation.
             | 
             | In many cases we don't have the ability to precisely
             | describe a process as a state machine because we haven't
             | defined the boundaries of the system, and then measured it
             | enough, in enough different dimensions, across enough time
             | to be able to give that level of understanding to input an
             | outputs.
        
             | Denzel wrote:
             | The Minto Pyramid Principle (MPP) offers an analogous,
             | perhaps more accessible, process to problem solving similar
             | to Andrew's description.
             | 
             | You use a problem solving process built on structured
             | analysis by first defining the problem in terms of an
             | Undesired Result (R1), Desired Result (R2) -- the S and S'
             | in Andrew's process. Then, you determine the Starting Point
             | in terms of the logical structures that generate your R1;
             | these structures can be a sequence of cause-effect, a
             | structural decomposition (e.g. of organization, geography,
             | etc.), a classification, or some combination of the three.
             | From this structure you can hypothesize experiments to
             | confirm/disconfirm where the causes are. With these causes
             | in hand, you can generate possible solutions or corrective
             | actions. Finally, you'd evaluate your alternatives and
             | arrive at your solution to move from R1->R2.
             | 
             | MPP's problem solving process has the additional advantage
             | of structuring your actions/results in a way that makes
             | writing a document or presentation simple and
             | straightforward, to convince others for example.
             | 
             | Check out the book if you're interested in improving your
             | problem solving and analysis skills.
        
           | biggestbrain1 wrote:
           | This is perhaps the most verbose and ridiculous way of saying
           | "I think about how to solve the problem". It feels like a
           | parody with the prompt of: how a person who scored 170 on an
           | online IQ test would describe how their brain works.
        
             | Twisol wrote:
             | It would be kinder to assume that "I think about how to
             | solve the problem" doesn't capture the nuances of actually
             | doing that thinking to the satisfaction of the commenter,
             | and this is their attempt to articulate it to match their
             | experience. The process of "understand the starting point,
             | the desired end point, and identify the path between them"
             | closely matches the way I approach problems. If you don't
             | feel inclined to meet someone where they're at, you can say
             | so without condescension.
        
               | biggestbrain1 wrote:
               | "understand the starting point, the desired end point,
               | and identify the path between them" That is the
               | definition of problem-solving. If there was any nuance in
               | the original comment, we both failed to find it.
        
         | kayodelycaon wrote:
         | It doesn't seen weird to me because 3 words per minute is 180
         | words per hour. The fastest I've ever typed as a fiction writer
         | is around 800 words per hour. I think my average is around
         | 300~400 words per hour.
        
         | hedora wrote:
         | > _he always sought to produce the final version from the
         | outset_
         | 
         | This is definitely a learnable skill. However, it might be a
         | lost art with younger generations. I had a year of high school
         | english that taught this. Most of us kids did fine.
         | 
         | The assignments worked as follows:
         | 
         | - Write an multipage essay on this topic; you have a week.
         | (first quarter, repeat 2-3 times)
         | 
         | - Here is your exam question. You can bring one 3x5" notecard
         | with you tomorrow, but you'll need to write the actual
         | multipage essay in 55 minutes. (second quarter; repeat 2-3
         | times)
         | 
         | - You will be given a question about the book we read, and will
         | have 55 minutes to write a multipage essay answering the
         | question. No supplementary materials allowed (except the book).
         | (last quarter; repeat 2-3 times)
         | 
         | Grading for things like the overall structure of the essay and
         | sentence flow got stricter as the course progressed. So did
         | grading on reading comprehension.
        
         | crabbone wrote:
         | In high-school, I had to write an expose... something about the
         | "silver age of Russian poetry" (it's Block, Belyj, Akhmatova,
         | Gipius, Gumiljov etc. if you are interested). It was about 20
         | pages long, on a typewriter.
         | 
         | It's physically more straining than to type on any computer
         | keyboard, even with very stiff keys. And I didn't know how to
         | touch-type at the time. So, it was pecking with two fingers.
         | With all that said... three words per minute isn't a lot. At
         | all. By the time I was finished typing, I could probably do
         | better than that.
         | 
         | To me, this quote describes someone who rather hates /
         | struggles with technology. I had a bunch of math professors
         | like this: they couldn't draw diagrams to save their lives,
         | they couldn't write formulas in any editor, and so often we'd
         | have very poorly hand-drawn formulas photographed and inserted
         | as images into MS Word documents or similar incomprehensible
         | junk.
         | 
         | This doesn't necessarily mean they are bad at the very narrow
         | field they specialized in, but it usually means they are very
         | bad at virtually everything else adjacent to that field. Also,
         | this often means that they've made their career in academia by
         | being the first person in that narrow field they specialize in.
         | 
         | This is also my impression of Dijkstra: he had some novel, but
         | also kind of low-hanging fruit ideas... at the time when he was
         | almost alone in that field. Had he started today, he'd be very
         | lucky to get a tenured position, but most likely would end up
         | being a TA / dropped out and just do something else. Even
         | though there's still a lot of politics and all sorts of un-
         | meritocratic ways of getting into prestigious positions in
         | academia, you need to be very good. A lot of the times it's
         | being very good at cheating, but there isn't really any more
         | room for greenfield academics who instantaneously propel
         | themselves to the top of the academic hierarchy.
        
         | tbalsam wrote:
         | I am rather autistic and this is how I think, toosies. 90-95%
         | of my time working on a project is just sitting, staring into
         | space, completely unaware of the world around me. I think it's
         | because while you can "explore the field" with compute, as it
         | were, the informational shapes of whatever the problem is at
         | hand are always there, and usually they are _much_ more simple
         | than people seem to let on, IMPO.
         | 
         | I'm not really sure how to describe it for me, as I have
         | partial aphantasia, and a kind of weird shape-synesthesisa
         | which also blends with my sensibilities around physical taste.
         | It can really only be described as "feeling" a shape, where a
         | shape represents some quantity of information for a topic, if
         | it were the case that I'm not using receptors in my hands to
         | touch something, but instead, it's the shape feeling its own
         | shape relative to other shapes, and it's not as much a touch-
         | like sensation as a visceral, semi-intuitive experience of the
         | information of whatever that shape-object-whatever represents.
         | 
         | I do not think that thinking in this way was fully formed from
         | a young age (i.e. it used to be an extremely active story-based
         | imagination), it seems to have developed in some manner as an
         | (informationally) dissociative coping mechanism because my
         | autism is strong enough that the world does not stop
         | overstimulating me. When I am in this headspace, I am generally
         | unaware of sensory input, there is only me, and the (generally
         | mathematical) "problem" at hand. Sometimes I can go for hours,
         | working on a problem, moving shapes and concepts around, and
         | fitting them together in a way that explains more while taking
         | less information to do so. This can be both a gift and a
         | hindrance.
         | 
         | I generally have to limit my budget for sensory stimulation and
         | for 'new' things because my brain is so sensitive to
         | information. This generally is more of a disability than a
         | help, on the whole, though it is nice to be able to solve
         | problems in the way that I do, that is one comfort to me.
         | 
         | I do have a tendency to want to fit things in my brain before
         | thinking about them, but the 'onboarding' process can take a
         | while. I used to get in trouble all the time as a kid before
         | this sense by trying to do mental math all of the time, I would
         | sit, think for a long time about a problem, write an answer
         | down, and move on. Unfortunately, instead of being encouraged,
         | it was something I got punished for (I was homeschooled), and
         | there wasn't much in the way of what I would consider
         | appropriate adaptivity in that regard.
         | 
         | Problems are fun, and the hardest part about them I think is
         | that we are generally crap at phrasing them and looking for
         | solutions, most of my work seems to just be cutting through the
         | cruft of whatever trends-du-jour or symbolic obfuscation
         | shenanigans are going on for a given topic. Once you sort out
         | the structure of a given mathematical problem, the answer seems
         | to fall into place well, and one does not always need compute
         | for that.
         | 
         | So, all of that to say, each person thinks and processes things
         | in a different way, and if you're into information theory, then
         | one might say the kl divergence (in a manner of speaking)
         | between how you encode and solve problems might be very high
         | with djikstra's methods of thinking! It depends upon what
         | unique strengths and weaknesses you have, and that can take
         | years to find whichever special problem solving mode fits best
         | to your sensibilities and gifts. For example, I have
         | significant trouble around symbols that have potentially
         | multiple meanings (like, as is often the case with many formal
         | mathematical definitions), and since those take a
         | disproportionate amount of "processing time" for me, my problem
         | solving methods have evolved to replace and/or avoid them
         | unless necessary. That is likely a silly solution for many
         | people!
         | 
         | So, while you may not entirely fit Djikstra's natural
         | proclivities, there might be elements that fit you. But
         | whatever fits you best as a problem-solving technique is
         | likely, frustratingly, and beautifully, entirely unique and
         | specific to you. <3 :'))))
        
           | Twisol wrote:
           | You've described something extraordinarily similar to my own
           | mental topology for processing problems. I'm also autistic,
           | although I think our sensitivities differ somewhat.
           | 
           | I also try to (and mostly succeed at) hold a whole problem in
           | my head at once. This made me fairly successful at
           | architecting software systems with many moving parts, but
           | it's an incredible drain on my energy, and I would sometimes
           | find myself so exhausted I would go to sleep for hours (i.e.
           | not a simple nap) in the middle of the day. I credit this
           | ability for my current burnout, honestly! It's deeply
           | satisfying to do, but maintaining it week after week amidst
           | all the other responsibilities of my previous job (especially
           | the interpersonal ones) was crippling.
        
       | throwawaaarrgh wrote:
       | Where does one go today to find cutting edge research, outside of
       | joining a corporation?
        
       | hardasspunk wrote:
       | Just 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 wrote:
       | Computer Science's H. L. Mencken.
       | 
       | https://en.wikipedia.org/wiki/H._L._Mencken
        
       | DijkstrasPath wrote:
       | This is why I chose my username
        
       | User23 wrote:
       | EWD 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/transcrip...
        
       | rpigab wrote:
       | How 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 wrote:
       | That 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 wrote:
       | There are more anecdotes about Dijkstra in this collection of
       | testimonials written by his friends, colleagues, and students:
       | 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.
        
         | hamburga wrote:
         | These are great.
        
         | airstrike wrote:
         | From EWD387:
         | 
         |  _> The other two speakers that gave three one-hour lectures,
         | Dr. McKay from IBM, Yorktown Heights and Professor Engelbart,
         | SRI, Menlo Park, were both terrible. McKay spoke undiluted
         | IBMerese for three full hours and I am not going to give any
         | further comments; I only heard the first hour --like many
         | participants-- and that was enough (too much). Because I had an
         | urgent letter to write I missed Engelbart 's first lecture --it
         | was not really a lecture, he showed a movie-- but I attended
         | his next two performances. He was not only terribly bad, he was
         | dangerous as well, not so much on account of the product he was
         | selling --a sophisticated on-line text-editor that could be
         | quite useful-- as on account of the way in which he appealed to
         | mankind's lower instincts while selling it. The undisguised
         | appeal to anti-intellectualism and anti-individualism was
         | frightening. He was talking about his "augmented knowledge
         | workshop" and I was constantly reminded of Manny Lehman's
         | vigorous complaint about the American educational system that
         | is extremely "knowledge oriented", failing to do justice to the
         | fact that one of the main objects of education is the insight
         | that makes quite a lot of knowledge superfluous. (Sentences
         | like "the half-life of a fresh university graduate is five
         | years" are only correct if you have crammed the curriculum with
         | volatile knowledge, erroneously presented as stuff worth
         | knowing.) His anti-individualism surfaced when he recommended
         | his gadget as a tool for easing the cooperation between persons
         | and groups possibly miles apart, more or less suggesting that
         | only then you are really "participating": no place for the
         | solitary thinker. (Vide the sound track of the Monsanto movie
         | showing some employees: "No geniuses here: just a bunch of
         | average Americans, working together."!) The two talks I heard
         | were absolutely insipid, he had handed out a paper "An
         | augmented knowledge workshop.": the syntactical ambiguity in
         | the title is characteristic for the level of the rest of the
         | article. As a result of his presentations I have told a few of
         | the participants that I had found, thanks to this seminar, a
         | new software project. "Because in the years to come there will
         | be a crippling shortage of competent programmers, I shall
         | develop a software package, called "The Instruction
         | Interpreter". From the moment of its completion, users do no
         | longer need to program, they just give their instructions to
         | the system." (This is only an edited version of one of the
         | paragraphs of the Engelbart article!) I would have liked to
         | start a discussion with him but I knew that my lack of mastery
         | of the understatement would have made me too rude for English
         | ears if I had spoken. Finally --after a more than two-hour
         | effort in the middle of the night in sorting out his muddle-- I
         | decided that he was not worth the trouble. (One of the most
         | offending conclusions I ever came to!)_
        
       | bgribble wrote:
       | I 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 wrote:
         | Did they have samosas from Ken's at grad tea time back then? :)
        
         | syndicatedjelly wrote:
         | Any stories that stand out/are worth sharing?
        
           | mcguire wrote:
           | 1. 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 wrote:
       | My 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 wrote:
       | Dijkstra wasn't IO-bound.
        
         | hamburga wrote:
         | Exactly, almost nobody is, except for stenographers.
        
         | hedora wrote:
         | He was until he started communicating asynchronously.
        
       | throw1234651234 wrote:
       | He carried the Witcher spy network too.
        
       | huskywall wrote:
       | My favorite quote of his: "Computer science is no more about
       | computers than astronomy is about telescopes"
        
       | krunck wrote:
       | I just found this. First paragraph says it all.
       | 
       | https://www.cs.utexas.edu/users/EWD/ewd13xx/EWD1316.PDF
        
         | CaffeinatedDev wrote:
         | Haha just a genuinely humorous guy. It's refreshing to see this
         | side of researchers
        
       | Jtsummers wrote:
       | Discussed at the time:
       | 
       | https://news.ycombinator.com/item?id=24942671 - Oct 30, 2020 with
       | 196 comments
       | 
       | A lot of good discussion in there.
        
       | cushpush wrote:
       | One 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 wrote:
       | What a delicious text and personality. I always like to read
       | about Dijkstra, but this is top notch.
        
       ___________________________________________________________________
       (page generated 2024-01-26 23:01 UTC)