Binding Time (Book)
Six Studies in Programming Technology and Milieu
This book is a collection of related but independent essays. Such books are notoriously hard to classify-a fact that alarms me, since they thereby become hard to shelve, review, and sell. And so I imagined, when I first conceived the idea of collecting them, that I would have to devote some considerable effort to finding a Common Theme that they all illustrate or contribute to, and thereby show that theyhave better reason to congregate between one pair of covers than the simple fact that I wrote them. It quickly turned out, though, that no great effort was required. These essays, although written over a period of about twenty-five years, and in widely varying circumstances, fit together and support each other so well that I can only suspect my subconscious of having planned them as chapters of one book from the start. I have had to discipline myself, in fact, to hold to a reasonable number the cross references that I inserted whenever I found that a point I try to make in one chapter is supported or amplified by an argument offered in another. The problem has been not to find their common theme, but to retain some autonomy for the several essays the book comprises.
Edition
Preface
1 Turing's Test and the Ideology of Artificial Intelligence
Appendix A
Appendix B
Appendix C
Notes
2 Perfection & Paradox: Programming and Mathematics Exchange Favors
Mathematical notation and natural languages
Calculism and programming languages
Calculism and the validation of programs
Two key papers on the verification controversy
The exposure of paradox: Programming returns the favor
Notes
3 From the Macroprocessor to the General Processor
Language or processor?
Three dimensions of programming languages
Logical place of the macroprocessor
Historical place of the macroprocessor
The notational dimension
The modal dimension
Machine independence versus object-program efficiency
Have we thrown out the baby?
Epilogue
The past recaptured?
Notes
4 Natural Language and Redundancy in Programming
The problem defined
English, active and passive
Translation versus comprehension
Written versus spoken input
Objections and counterproposals
Redundancy
What calculus, and why?
Consequences for 'program correctness' and plain debugging
Specimen confusions
Assertions: Applied redundancy in OOP
Notes
5 Building on the General Processor: From Modules to Boxes
What is a bug?
Is there a place for 'good design'?
Where are bugs found?
What is a module?
Parnas on 'information hiding' and module specification
From modules to boxes
Attaining bug-free code
Assertions as debugging tools
The extended general processor: How boxes are built and used
Boxes and proofs: A summary
Boxes as support for 'field debugging'
Appendix
Notes
6 The Politically Correct Programmer
A theorem on human rights
'Proof' and its uses in politics
Notes
References
Author Index
Subject Index