[HN Gopher] By way of introduction - EWD 1041 (1989)
       ___________________________________________________________________
        
       By way of introduction - EWD 1041 (1989)
        
       Author : dustingetz
       Score  : 80 points
       Date   : 2023-02-12 14:16 UTC (8 hours ago)
        
 (HTM) web link (www.cs.utexas.edu)
 (TXT) w3m dump (www.cs.utexas.edu)
        
       | reidacdc wrote:
       | There is a school of thought in the community where I work that
       | the alchemists get a pretty bad rap. Probably the clearest
       | statement of this is in one of the chapters of Cyril Stanley
       | Smith's "A Search for Structure", particularly Chapter 5, "Matter
       | and Materials".
       | 
       | The thing that the alchemists were on to was that the same
       | ingredients can have different properties if you process them
       | differently.
       | 
       | There was a lot they got wrong -- they were wrong about gold
       | being a "property" of base matter that could be elicited by
       | suitable processing, and they had no coherent model, and the
       | field was rich with what we now understand to be superfluous
       | mysticism. But, the argument goes, a clear-headed understanding
       | of the situation would rank alchemy as a valid and legitimate
       | precursor of modern materials science, alongside phlogiston and
       | caloric theory. Wrong, to be sure, but far from stupid.
       | 
       | Dijkstra's critique is evidently, by his own analogy, along the
       | lines of the critique of alchemy for being wrong, and assuming
       | that in its wrongness, it therefore has no value at all.
       | 
       | But, taking the analogy more seriously, one can be more
       | charitable. Modern programming is indeed alchemical in character,
       | it captures important insights about what is possible at scale,
       | and produces products that are useful. It lacks a model, there is
       | no theoretical bridge yet between the foundations of logic and
       | Dijkstra's Very Large Scale Applied Logic. It is instead a grab-
       | bag of tools, and doubtless the domain of some superfluous
       | mysticism.
       | 
       | A model is desirable, and putting programming practice on a sound
       | logical footing is a fine idea. But we also should not let our
       | prejudice for reductive solutions blind us to the utility of what
       | has been achieved by the people forging ahead in their absence.
        
         | grumpyprole wrote:
         | > A model is desirable, and putting programming practice on a
         | sound logical footing is a fine idea.
         | 
         | Many functional programming languages are based on formal
         | logic. For example, Haskell is based on an augmented System-F.
        
           | SkyMarshal wrote:
           | Indeed, most functional languages, along with relational and
           | graph databases, already meet the objective of having sound
           | logical footing.
        
       | EGreg wrote:
       | I always thought about Dijklmnopqrsta when I see his name.
        
       | 082349872349872 wrote:
       | Informatics:Computer Science::chemistry:alchemy? Who is/was our
       | Newton? Mendeleev?
        
         | messe wrote:
         | Depending on what you're going for with that comparison, I'd
         | suggest Von Neumann.
        
           | [deleted]
        
           | 082349872349872 wrote:
           | Good suggestion; I just finished Dyson's _Turing 's
           | Cathedral_*, and it certainly suggests that von Neumann was
           | as, or more, into (what would become) systems than (what
           | would become) theory.
           | 
           | > " _All stable processes we shall predict. All unstable
           | processes we shall control._ " -- JvN
           | 
           | * in which I learned, among many other things, about
           | https://en.wikipedia.org/wiki/Klara_Dan_von_Neumann 's
           | hacking skill.
        
       | hungrygs wrote:
       | Dijkstra had a lot of influence for some years on the UTCS
       | undergraduate program, whose first undergraduate course for much
       | of the 1990s was taught in Haskell and was a brutal weed out, at
       | ~70% attrition for the first year courses.
       | 
       | However, by 2001, the failure rate was so high that the
       | department moved to Java, much to Dijkstra's chagrin:
       | https://chrisdone.com/posts/dijkstra-haskell-java/
       | 
       | The UTCS undergrad program has been "nerfed" twice since the
       | 1990s - in 2001 and in in 2014. Various political interests
       | during the first tech bubble - to produce more graduates - and
       | later, to have more under-represented minorities, have
       | dramatically reduced what Dijkstra pushed for.
        
         | thechao wrote:
         | I took that course in '96, as a lost liberal arts major, with
         | no background in CS. If you paid attention & didn't get behind
         | in course work, it was an easy A. Most of the people failing
         | that class never bothered to do the course, or claimed to
         | already know how to program. The lecturer I had was Richardson,
         | and I used to model my courses in grad school after his; he was
         | a gifted educator.
        
           | hungrygs wrote:
           | >or claimed to already know how to program.
           | 
           | This was the key fact. They knew how to program Pascal from
           | Computer Science AP and got 5's on the AP exams and came into
           | UT Austin with abundant confidence but when presented with
           | hardcore mathematical logic data structures and algorithm
           | analysis in functional programming starting week 1 of college
           | they got the rug pulled out from the under them. Of course,
           | this was real computer science, not "infantile"
           | imperative/OOP programming.
           | 
           | Ham "Haskell" Richardson was a total fanboy of Dijkstra!
           | 
           | I will note that the current 1st UTCS course is a serious
           | joke - CS312 was a remedial course, non-counting for major,
           | before 2014, called CS 305J. It's an embarrassment compared
           | to Berkeley's CS61A.
        
             | [deleted]
        
         | mgfist wrote:
         | A 70% attrition rate is awful. How many of those kids could
         | become fine engineers if they had more runway to fail and learn
         | without being weeded out?
         | 
         | All this tells me is that if CS concepts don't click for you
         | instantly you were out - even though this is a terrible
         | heuristic for who would make a good engineer (or good computer
         | scientist, whatever the goal is).
        
           | hutzlibu wrote:
           | Hm, it depends how "attrition" is defined. I read it the way
           | it is done in german universities, meaning 70% and above
           | indeed fail the weeding courses (usually math) at the first
           | try, but you had 3 tries and still could attain the next
           | semester, without passing.
           | 
           | But for quite some, it was indeed eye opening and they left
           | for something else. It is a bit brutal, but effective and it
           | gets the message across. If you don't want to struggle to
           | learn the basics, you are wrong in computer science.
           | 
           | That doesn't mean, you cannot become a programmer, there is
           | another formal path of doing so, but attaining a university
           | does mean playing at another level. (or well, if should mean
           | that, I got to learn too many who just learned to play the
           | bullshitbingo)
        
           | lmm wrote:
           | > How many of those kids could become fine engineers if they
           | had more runway to fail and learn without being weeded out?
           | 
           | This question is worth taking seriously. I've seen a study of
           | a slower course that found that, nevertheless, there was no
           | difference in the number of students who could understand
           | basic variable assignments between the start and at the end;
           | either they "got it" straight away or not at all.
        
       | imranq wrote:
       | Seems like we're at the alchemy stage again with all these
       | blackbox AI models appearing everywhere. Reminds me of this xkcd:
       | https://xkcd.com/1838/
       | 
       | Nit: likely Muslims did not burn down the library of Alexandria,
       | it was burned many times before by Romans and other conquerors
       | 
       | Source: https://www.quora.com/Did-the-Muslims-destroy-the-
       | library-of...
       | 
       | https://www.arabnews.com/node/225932
        
       | photochemsyn wrote:
       | Question: > "For reasons I don't quite understand --partly,
       | probably lack of instrumentation-- the science of chemistry was
       | very slow to emerge..."
       | 
       | Answer? > "..the alchemists, who, in their effort to make gold
       | from cheap base materials, at least attack a problem of the
       | highest social relevance, viz. enable the government to finance
       | its wars without inflicting poverty on the people."
       | 
       | Supposedly the Roman Emperor Diocletian persecuted the alchemists
       | of that era because he feared they'd be able to make gold and
       | raise armies to attack the Roman Empire (and/or debase the
       | Russian currency). This likely set back the state of chemical
       | knowledge, possibly for centuries.
       | 
       | P.S. Nuclear transmutation of elements is now quite common;
       | unfortunately nobody has figured out how to get just the desired
       | isotopic species of an single element from nuclear reaction
       | instead of a pile of unstable isotopes of mixed elemental
       | identity.
        
         | hutzlibu wrote:
         | "Nuclear transmutation of elements is now quite common;
         | unfortunately nobody has figured out how to get just the
         | desired isotopic species of an single element from nuclear
         | reaction instead of a pile of unstable isotopes of mixed
         | elemental identity."
         | 
         | I think centrifugation would get the job done, but it is just
         | not worth the effort at those small quantities.
        
       | Yahivin wrote:
       | > In short: computers were tolerated because they promised a well
       | protected and prosperous paradise for the lazy, the incompetent,
       | and the cowardly.
       | 
       | - EWD
       | 
       | A beautiful and scathing critique.
        
       | amelius wrote:
       | I think with machine learning and especially the LLMs, we're
       | getting pretty close to alchemy.
       | 
       | There's this quote that any sufficiently advanced tech is
       | indistinguishable from magic. They probably didn't realize this
       | was also true for the creators of that tech.
        
         | mmiliauskas wrote:
         | Not disagreeing, just wondering, why you think ML anad LLMs is
         | getting us pretty close to alchemy?
        
           | amelius wrote:
           | Because we just try things and see what works.
        
       | floe wrote:
       | > For instance, the well-documented decline of productivity of
       | the American white-collar worker has convincingly been linked to
       | over-automation of the American office, but the "negative"
       | outcome of this study has been totally ignored, in fact so much
       | that many people involved in computing cannot believe it.
       | 
       | Does anyone know what study he was referring to?
        
         | rightbyte wrote:
         | I would also be very interested.
         | 
         | One of my pet theories is that IT is a net loss for most
         | businesses and that they would be better off with one
         | designated computer for Excel batch jobs. Instead they should
         | use cabinets, folders and paper mail.
         | 
         | Not joking and zero sarcasm.
        
           | LeanderK wrote:
           | I think with this comment perhaps it comes to a
           | transfiguration of the past. In germany, especially in its
           | government, but also in smaller, very conservative companies
           | with old bosses there are still some hold outs working purely
           | paper based.
           | 
           | The amount of work it takes to keep a paper based environment
           | organised seems insane. The amount of work it takes to share
           | information in a paper based is crazy. Maybe not so much if
           | it's just a small business, but anything bigger you need to
           | run your own postal service with people sending letters all
           | the time to each other complemented with dedicated personnel
           | for "bulk deliveries" (like bellboys they carry heaps of
           | folders from room to room) and dedicated personnel to
           | organise the archive and the retrieval. There's an insane
           | latency when you're not in the same building and even when
           | this is the case deliveries can still take a day or two. I
           | only got a peek into the inner working of courts here when
           | they were still very, very paper based (it change the last
           | 5,10 years) and it felt like you were at some post logistics
           | centre. People running around with luggage containers filled
           | with files.
           | 
           | I have never seen this in a smaller setting, I imagine it's
           | easier because you can just speak to each other.
        
             | rightbyte wrote:
             | I mean, obviously I don't actually know if my "theory" is
             | valid or not. I did not work at that time.
             | 
             | My feeling is just that there is no order anymore.
             | 
             | When I visited my dad (DoD bureaucrat) or mum (dentist) as
             | a child there were so much order with secretaries and file
             | cabinet rooms.
             | 
             | The cost of sending letters or filing documents worked as a
             | filter I guess. No data format was ever invalid. Just put
             | the paper in the folder. There was no "computer says no"
             | for the clerks. Also, there was a limit in how convuluted
             | processes you can practically have without computer
             | programs.
             | 
             | The main thing was probably that you had to have
             | secretaries keeping order. They are gone now.
             | 
             | I have never experienced that order where I have worked (I
             | am 34). But I see it in remaints of the late 90s early 00s
             | documentation and old file cabinets for prior projects.
             | 
             | Nowadays everything just disappear in some network folder
             | black hole and employee attrition.
        
               | lmm wrote:
               | Jevons Paradox definitely applies - the cheaper something
               | is the more you spend on it. There's no will to prune
               | unnecessarily complex processes and reporting when you
               | can just automate them. But not to the extent of it
               | actually becoming a negative; you forget how much all
               | those clerks and secretaries used to cost.
        
         | Someone wrote:
         | I would guess something on the productivity paradox
         | (https://en.wikipedia.org/wiki/Productivity_paradox), so more
         | that office productivity didn't improve with automation in the
         | same manner it did in manufacturing.
        
       | jungturk wrote:
       | More interesting to me than the analogizing of computer science
       | to alchemy is the power dynamic he highlights in the applied
       | sciences - namely the tendency for the craft to acquire and
       | distribute power outside of (and even contrary to) the interests
       | of those doing the investing.
        
       | isoprophlex wrote:
       | > Science is hated because its mastery requires too much hard
       | work, and, by the same token, its practitioners, the scientists,
       | are hated because of their power they derive from it.
       | 
       | > Mathematical elegance, conceptual simplicity, and their
       | companion, brevity of an unambiguous reference manual, are a
       | condition sine qua non for any [software] product reliable enough
       | to attain stability.
       | 
       | > Needless to say, this sober message is unacceptable. Simplicity
       | requires hard work to be obtained and education for its
       | appreciation, and complexity sells much better.
       | 
       | This is some hard-hitting stuff. Very interesting, thanks!
        
         | jonahx wrote:
         | > Simplicity requires hard work to be obtained and education
         | for its appreciation, and complexity sells much better.
         | 
         | See, e.g., the ascendancy of Kubernetes.
        
         | johannes1234321 wrote:
         | In the end it is the difference between science and applied
         | engineering.
         | 
         | For a product it in the end has to work in the real world,
         | considering available time, resources and requirements (which
         | often tolerate some failure rate)
         | 
         | Strict science is important for progress, engineering can bring
         | it to application.
        
       | g42gregory wrote:
       | It took me a while, but by reading a lot of AI research papers, I
       | finally realized that Computer Science is primarily an
       | experimental subject. You can see that we are running a lot of
       | experiments in these papers. I don't think we understand what is
       | going on inside the Deep Learning networks, for example. Sure,
       | there are quite a few studies, but overall I think this is
       | accurate, we simply does not know what is happening inside. The
       | main difficulty is high dimensionality. We simply do not have
       | mathematical frameworks to analyze structures in the 100s of
       | dimensions. With the advent of special relativity in 1900s, we
       | developed some understanding of 4-dimensional objects, and a bit
       | higher dimensions in the String Theory. But 100s or 1000s
       | dimensions, - we simply have no mathematical tools for that. The
       | real CS theory is sorely lacking. For some reason, theoretical
       | computer science seem to contribute quite little to the practical
       | deep learning world, while primarily concerning itself with the
       | complexity theory and computability questions. Fun stuff, but...
       | Somebody needs to do this. Calling all theoretical physicists
       | looking for hard but immediately useful problems to solve!
        
         | lqr wrote:
         | I have to disagree with some of your points.
         | 
         | > _The main difficulty is high dimensionality. We simply do not
         | have mathematical frameworks to analyze structures in the 100s
         | of dimensions._
         | 
         | The main difficulty in deep learning is the non-convexity of
         | the optimization problem. We can handle simpler problems in
         | high dimensions just fine. The oracle complexity bounds for
         | projected gradient descent in convex optimization even hold for
         | infinite-dimensional problems - see work of Nesterov.
         | 
         | Most of the hard questions about deep learning remain hard even
         | for neural networks with low-dimensional inputs, outputs, and
         | hidden layers. Also, some of the more fruitful approaches in
         | deep learning theory involve taking the limit as the width of
         | one network layer goes to infinity.
         | 
         | > _For some reason, theoretical computer science seem to
         | contribute quite little to the practical deep learning world,
         | while primarily concerning itself with the complexity theory
         | and computability questions. Fun stuff, but... Somebody needs
         | to do this._
         | 
         | Lots of theoretical researchers are trying to figure out why
         | deep learning works. Check out the work of Jason Lee, Simon Du,
         | Sebastien Bubeck, etc. Most of these researchers have a CS
         | background.
        
           | g42gregory wrote:
           | I am not sure we are disagreeing on much here. Yes, non-
           | covexity is major problem for optimization. And yes, very
           | simple problems could be analyzed in high dimensions. But
           | many problems are not simple, including understanding general
           | structure of the information/data flow through the network as
           | well as non-convex optimization itself. The work on infinite
           | width networks is very interesting and is getting novel
           | insights. Many theoretical CS researchers are working on
           | understanding of deep neural networks. I should have
           | rephrased the sentence from "Somebody needs to do this" to
           | "It would be nice if we could make a major progress in this
           | direction".
        
         | [deleted]
        
       | lp4vn wrote:
       | "Chemistry is accepted as a science: we hate it for its pollution
       | and our dependency on its products, but we no longer blame it for
       | not trying to make gold. Medicine has been accepted as a science:
       | we hate it for the overpopulation and the soaring medical bill
       | but no longer blame it for not producing the Elixir that gives
       | eternal youth. Astronomy has been accepted as a science; we hate
       | it for removing the earth from the center of the universe but no
       | longer blame it for not realizing the astrologer's dream of
       | accurate prediction of the future. They are accepted as sciences;
       | at the same time, the flourishing business in Healing Gems and
       | Crystals, the horoscopes in otherwise respectable magazines, and
       | governments relying on astrologers are a healthy reminder that
       | Science as such remains rejected and that the old dreams linger
       | on. Finally, one general remark about how sciences emerge:
       | sciences become respectable by confining themselves to the
       | feasible and successful by allowing themselves to be opportunity-
       | driven rather than mission-oriented. (This, by the way, is why
       | managers hate successful science: because it is not mission-
       | oriented, they cannot manage it.)"
       | 
       | Dijkstra was not always right and incontestably he had a taste
       | for polemic, but damn the old man was wise.
        
       | avgcorrection wrote:
       | Imagine if someone released a programming language or system that
       | made it possible and tractable to both specify, implement, and
       | prove the correctness of, say, ten different classes of things
       | that most medium-to-large-scale programs have to deal with. Also
       | imagine that this system had no complexity beyond the intrinsic
       | kind.
       | 
       | A lot of people would perhaps be initially impressed. But then
       | they would grow to dislike the fact that the system encourages
       | things like proofs of correctness.[1] They would dislike the
       | fact, or the idea, that they would have to adopt to project
       | conventions and processes that involved that kind of work in
       | order to get their changes merged. That's friction. And you have
       | to deal with the intrinsic complexity more or less up-front.
       | 
       | Then some time passes and an alternative system comes out. But
       | this system is easier to use. It's easier to use because it helps
       | you 90% of the way to write and implement those same ten
       | different things. So maybe there are no specifications, and there
       | are certainly no proofs, and certainly no guarantess that X will
       | always be the case or that Y will _never_ be the case. This lack
       | of guarantees gets lauded as "pragmatic".
       | 
       | In order to _try_ to make up for the missing 10%, fuzzing
       | libraries are written, CI pipelines are set up, everyone is
       | encouraged to write more tests, and more process is added to code
       | reviews. In part because "You are supposed to always do Z,
       | anyway".
       | 
       | A downside is that you went from having firm guarantees (even
       | with asterisks since they would point you to things like trusted
       | kernels) to having no guarantees. The only guarantee that you
       | have is right after you have run your somewhat lean six minute
       | test suite just before committing: you know that your changes are
       | good modulo those tests since you just ran them. Then you submit
       | a PR and the remote CI reruns the tests.
       | 
       | In the end, with all those code reviews and unit tests and
       | whatnot, you look around and see only blobs of imperative code
       | that could in principle do anything. So you add more sandboxes
       | and security layers. Because, the low-level programmer
       | interjects, "it's all imperative code under the hood [anyway]".
       | 
       | [1] Only "encourages" since you can e.g. write stringly-typed
       | programs even in Idris.
        
       | User23 wrote:
       | > I have taken extensive experiments with CS faculty members from
       | all over the world, and the vast majority of them --I mean about
       | 95 % of them-- cannot program a Binary Search.
       | 
       | Knuth's the Art of Computer Programming volume 3 has some more on
       | this. Off the top of my head he writes that it took something
       | like a decade from the first published binary search to the first
       | correct for all inputs version.
       | 
       | This is a bar that you would expect a professor to be able to
       | jump over, but it goes to show that sometimes a simple sounding
       | algorithm can be exceedingly tricky to get right. In my
       | experience some kind of Hoare triple derived methodology with
       | invariants is the only reliable way to code a correct binary
       | search from scratch, as opposed to simply having memorized a
       | solution. Here[1] is what at a glance appears to be a readable
       | and correct example of how one might do that.
       | 
       | [1] https://zhu45.org/posts/2018/Jan/12/how-to-write-binary-
       | sear...
        
         | ly3xqhl8g9 wrote:
         | For Dijkstra programming meant to think about a problem, then
         | sit for a few minutes at your desk and write with pen on paper
         | "in one go" the perfect algorithm/program, no bugs, no errors,
         | no corrections, from the first try, and also, in beautiful
         | handwriting. Some kind of idealized way in which Mozart would
         | allegedly write his compositions. Whereas "Beethoven was a
         | doubter and a struggler who started writing before he finished
         | the composition and then glued corrections on the paper. In one
         | place he did this nine times. When they peeled them, the last
         | version proved identical to the first one. This iterative
         | method of programming is somehow a very Anglo-Saxon custom.
         | British education is pervaded by it. People learn, when they
         | write, not to try to get it right the first time. Just write
         | what's on your mind and then rewrite repeatedly to get the
         | product you want. That's partly why word processors are
         | marketed so aggressively and partly why they have been so
         | successful there." [1]
         | 
         | [1] Edsger Dijkstra interview,
         | https://youtu.be/mLEOZO1GwVc?t=282
        
           | microtherion wrote:
           | > For Dijkstra programming meant to think about a problem,
           | then sit for a few minutes at your desk and write with pen on
           | paper "in one go" the perfect algorithm/program, no bugs, no
           | errors, no corrections, from the first try, and also, in
           | beautiful handwriting.
           | 
           | An approach that works best if you get to pick your own,
           | narrowly defined problems, and do not deal with externally
           | imposed, let alone changing, requirements. It utterly does
           | not scale.
           | 
           | I'm not entirely sure when the last time was that Dijkstra
           | actually typed a line of code into a computer (or punched it
           | into a card, as the case may have been), but it appears to
           | have been around the early 1970s. So, like the Pope's
           | pronunciations on sex, Dijkstra's pronunciations on
           | programming derive a lot of their clearcut purity by coming
           | from a non-practitioner.
        
             | varjag wrote:
             | It takes certain optimistic outlook to imply one is
             | assuredly better at computer programming than Dijkstra.
        
             | ly3xqhl8g9 wrote:
             | Well, don't tell me, tell Dijkstra. I commit after every
             | few lines, just on that he would think I am an absolute
             | moron, not to be allowed near keyboards.
        
             | User23 wrote:
             | Interestingly enough Dijkstra anticipated your response and
             | for me at least adequately refuted it in some of his other
             | EWDs.
             | 
             | Are you aware that among the "narrowly defined problems,
             | and do not deal with externally imposed, let alone
             | changing, requirements" that Dijkstra solved are such
             | doozies as distributed consensus, synchronization, and OS
             | level hardware interrupt handling?
        
               | lmm wrote:
               | And so these are now no longer problems? Or do they
               | remain thorny matters in practice, precisely because the
               | versions that Djikstra solved are narrowly defined and
               | without awkward external requirements?
        
       ___________________________________________________________________
       (page generated 2023-02-12 23:00 UTC)