Today's gem is "The Science of Programming" by David Gries. It's a book first published in the late 1970's which I'm guessing is one of the earlier attempts at a not-quite-academic publication trying to formalise some concepts of program design, provability and deductive reasoning. It does this for a variety of algorithms in a framework which - and this is a useful point - does not involve in any way an object oriented language, functional language, or anything which hides what's mostly going on under the hood from the programmer. Not that I think those are bad things, but I do think that being taught about how things are done closest to how things are run is a good idea. Starting at OO seems to produce programmers who, well, don't seem to have much of a clue about reality and rely on their tools a lot more than they should.
I'm currently re-reading it with a notebook at hand. Luckily for me, the first few chapters involve propositional/predicate logic and deduction stuff which overlaps nicely with my Semantics course in Linguistics. So it's "almost" related to my university degree. Sort of.
I took a course at U of PA that used this book. It shows how to construct programs that work correctly (without bugs, other than from typing errors).
ReplyDeleteIt does this by showing how to use precondition and postcondition predicate expressions and program proving techniques to guide the way programs are created.
I wonder how history has judged this book. clearly, companies like Microsoft have not adopted these techniques, as their products have many bugs. Perhaps these techniques are too difficult to use for real-world and large-scale problem solving?
David Spector
Springtime Software