3 ms·
Consider me naive, but what way did Dijkstra thought it should be taught? Someone who first learned to code in QBASIC
by niteshpant 2y ago
Consider me naive, but what way did Dijkstra thought it should be taught?
Someone who first learned to code in QBASIC
- themadturk 2y agoHe probably thought programming students should be taught Pascal, the academic language he pioneered. It is quite different from BASIC.
- Jtsummers 2y agoPascal was Wirth, not Dijkstra.
- themadturk 2y agoSorry, misremembering my meager computing history...
- Zamiel_Snawley 2y ago“On the Cruelty of Really Teaching Computer Science”[0] [0] https://en.m.wikipedia.org/wiki/On_the_Cruelty_of_Really_Teaching_Computer_Science https://en.m.wikipedia.org/wiki/On_the_Cruelty_of_Really_Tea...
- microtherion 2y agoDijkstra thought of computer science as a subdomain of mathematics, and thought that hands-on experimentation with actual computers would mostly lead students astray. A program should all be worked out and proven correct before (optionally) feeding it to a computer, and testing and even more so debugging were abhorrent practices. BASIC, on the other hand, is more aligned with what Seymour Papert later came to call "Constructionism": the student learns by experimentation.
- tasty_freeze 2y agoIt is the "correct by construction" approach vs the "construct by correction" approach.
- FuriouslyAdrift 2y agoThat's how it was with CS at Purdue when I was there in beginning of the 1990's. It was Computational Science, not Computer Science, and was in the math department. We did everything wiht pen and paper until I got into my 300 level classes and we got access to the NeXT cubes and IBM 3090. I ended up switching to networking and the tech track, but it was definitely different...
- microtherion 2y agoIronically, I grew up with limited access to computers, so I wrote many programs on paper first, including a FORTH implementation in assembly language I wrote over summer break with a typewriter, waiting for school to start again so I could actually test it hands on.
- systemBuilder 2y agoDijkstra was silly because everybody knows that Computer Science is the parent field of mathematics. Mathematics is the study of all O(1) algorithms. Computer Science is all other algorithms!
- schoen 2y agoOther commenters are completely right to mention his concern for proofs and the "Cruelty of Really Teaching Computer Science", but the most BASIC-specific thing that he was associated with was criticism of the GOTO statement. https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.p... In original BASIC, the GOTO is a foundational mechanism and a majority of programs would have used it, sometimes extensively. Dijkstra thought for many reasons that this wasn't good style and didn't promote clear thinking. And yes, one consequence of that is that it would be harder to prove programs correct or just to reason about whether they were correct. Programs that overuse GOTOs (or from the point of view of later structured programming and functional programming advocates, perhaps programs that use GOTOs at all) were stigmatized as "spaghetti code". https://en.wikipedia.org/wiki/Spaghetti_code https://en.wikipedia.org/wiki/Spaghetti_code By the way, this concern is not just about aesthetics: some of the ideas that Dijkstra was advocating are arguably those that newer programming languages like Haskell and Rust can use to find bugs in code automatically at compile-time, or to make it harder to write certain bugs at all. The line between Dijkstra's advocacy and these techniques is complicated but I think there is a connection. So partly we might say that Dijkstra was not just concerned with how to make it easier for humans to think clearly about program correctness, but ultimately also about how to make it easier for computers to help humans automatically determine (parts of) program correctness. And it's true that the GOTO style complicates that task.
- tinco 2y agoKind of ironic that nowadays many people in our generation consider the newer generations to be lacking fundamental education because they never used GOTO based programming languages. I've talked to multiple people who lamented that young programmers have never done assembly or BASIC.
- numbsafari 2y agoIt’s helpful to have a mental model of how the computer works. I don’t know if it’s necessary that one have spent mountains of time building real software using a GOTO/jmp style, but having exposure to it would be nice, rather than hiding it away. Jeff Dunteman’s assembly programming books included a “chapter 0” that I always loved, and which really stuck with me for how creatively they taught those topics.
- Jtsummers 2y agohttps://www.cs.utexas.edu/~EWD/transcriptions/OtherDocs/Haskell.html https://www.cs.utexas.edu/~EWD/transcriptions/OtherDocs/Hask... - describing why, in 2001, he thought Haskell was a good choice for a first college course in CS. You can read many of his thoughts here: https://www.cs.utexas.edu/~EWD/welcome.html https://www.cs.utexas.edu/~EWD/welcome.html