Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!gatech!bbn!apple!well!shf From: shf@well.UUCP (Stuart H. Ferguson) Newsgroups: comp.software-eng Subject: Re: Rhetoric and Software Engineering Message-ID: <11766@well.UUCP> Date: 21 May 89 23:06:03 GMT References: <1886@ccncsu.ColoState.EDU> Reply-To: shf@well.UUCP (Stuart H. Ferguson) Organization: The Blue Planet Lines: 61 +-- jacksonr@handel.ColoState.EDU (robert marsh jackson) writes: | Is there a relationship between Eloquent Rhetoric and | Computer Science? Yes, I think so. I've always maintained that business of programming computers is a lot closer to the artistic and technical practice of writing and word-smithy than that of building bridges. (Actually, building bridges and wrting good essays have some strong similarities as well, but that's another matter...) But computer people seem to reject this notion, and I don't really understand why. Perhaps it's because we generally dislike the "humanities" and did poorly at them in school -- I don't know -- anyway, it's not a popular opinion. The analogies are pretty good: the relationships between sentence/statement, paragraph/procedure and section/module, as well as first draft/prototype, outline/pseudocode and revisied edition/version 2.0. Although there are certainly places where the analogies are strained a bit, they are at least as good as the "bridge building" analogy, if not better, so I think it's possible to learn something from them. The purpose of writing is communication, but not what that most people think of as "communication:" namely, the simple transmission of information. Most people think that writing is just taking the ideas in your head and wrapping them up in a syntatic structure so that someone else can parse it and extract the same ideas into their head. This turns out to be a very naive notion. Language, particularly rhetoric, has the capability to create worlds, and to allow people to share them. Writing encapsulates not just some particular information, but the entire set of background assumptions that make those facts or ideas possible at all. What's important is not what the words say, but the reality that makes them possible, and this is true of programs as well. The very best programs are those that communicate a world -- that, by virtue of their interactions, create a self-contained reality in which the person using the program can dwell, be he end-user or programmer. PostScript, for example, isn't just some program, or some arbitrary syntax for making marks on a page, rather it's a whole world, a complete self-consistent philosophy for page layout. An end-user example might be a music scoring program. The program presents a world to the user, consisting of a formalization of the process of scoring music. It sets into a concrete form the abstract process of music and makes it available. If done well, the program can communicate the realm of music scoring by making the concepts come alive (literally). If done poorly, the program will simply present a collection of arbitrary formalisms which can surround the subject but fail to recreate it for the user. This also happens at the code level. Well "engineered" program code can create a domain which formalizes the process the code is supposed to perform. This allows the people who have to enhance and maintain it a place to extend from, to try new things and see how they work. It results in code where each piece makes sense in the context of the world that they together comprise. Badly designed code is mearly a collection of statements that do something without any underlying reason beyond the world of the programming language itself. The result is code that can't be extended or maintained and is full of the kinds of bugs that come from a lack of a reasoned structure. | Bob Jackson. -- Stuart Ferguson (shf@well.UUCP) Action by HAVOC