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