sas@BFLY-VAX.BBN.COM.UUCP (02/24/87)
I am going to ignore the "Is mathematics a science?" argument and get right down to why I think mathematical and logical notation are overused in computer science presentations. The problem has very little to do with precision and a lot to do with class, clarity, and vulgarity. By class, I am refering to a set of societal distinctions which have been handed down in our society and are quite extant in our modern academic community. By clarity, I am refering to the ability to communicate ideas both within and outside the community. By vulgarity, I am refering to the use of the vulgar tongue - which in this case is not English but the programming language of choice. Class: Much as a restaurant will have a menu written in French to impress the diner, many authors feel obligated to use logical notation to make their paper seem more "scientific". Walt Kelley once had a character ask "I wonder what language the Romans used for the old 24 karat bamboozle." They used Greek, and a lot of our prejudices come from the Greeks. Somehow or another, arguing at a high level of abstraction makes the argument more precise, general, cogent, powerful or what not. Sometimes this is true, sometimes it isn't. Abstraction is often a major obstacle in the search for the truth. Clarity: Chemists use chemical notation and scratchy looking stereo diagrams. Philologists use cryptic phonetic notation. Geneticists use long lists of upper case letters and funny three letter combinations. Vintners use a full set of common adjectives with very precise but not always obvious meanings. It is quite possible to be clear, precise and understood without resorting to mathematical or logical notation. Each of these notations was chosen because it concisely describes commonly discussed phenomena. Architects do not express buildings in mathematical notation when they talk to contractors but the latter can usually come up with a cost estimate anyway. Vulgarity: Programmers spend a lot of time discussing the behavior of computers. Specialized terms like "barf" and "lossage", while evocative, are not particularly precise. Whenever two programmers get into an argument about what a program does, they don't sit down and write up a proof, they look at the code. They might prove something about the problem domain. What they usually do is "desk check" the code, or maybe even go into the debugger and make the stupid computer "desk check" the code for them. Programs are the common language of programmers. They are precise; they can be used as a reasoning aid; they are widely understood. I have read too many papers in which mathematical notation is gratuitously introduced. I have seen this reaching for abstraction hide obvious inferences from the author. With certain notable exceptions, too many authors reach for the wrong tools too soon. Seth Steinberg