[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)