Today Amazon delivered me my first ever textbook for college (!) and the latest edition to the “computer science canon” that I’m currently collecting – Abelson, Sussman, and Sussman’s classic Structure and Interpretation of Computer Programs.
…I think it’s quite an exciting day. Naturally, I began to read the first few pages and came across a fascinating paragraph:
Underlying our approach to this subject is our conviction that “computer science” is not a science and that its significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology- the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Mathematics provides a framework for dealing with precisely with notions of “what is.” Computation provides a framework for dealing precisely with notions of “how to.”
What a beautiful and resonating passage! Because this is really what I think computer science is all about – at least from a philosophical standpoint. Computers really are “stupid” – but in the same sense that a piano or an artist’s palette are “stupid” (they would hardly characterize the tools of their trade that way). Out of the astoundingly few and simple basic operations of computers – evaluating logical and arithmetical statements, storing and retrieving data, and performing iterations – computer scientists weave an intricate tapestry of rich functionality and complexity. And at the heart of the notion of programming is exactly that “procedural epistemology” – becoming aware of our nuanced logical and problem-solving thought processes and reducing them to elegant algorithms.
Well, that’s my two cents. I can’t wait to get started!