Path: utzoo!utgpu!utstat!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!cs.utexas.edu!samsung!caesar.cs.montana.edu!ogccse!orstcs!mist.CS.ORST.EDU!budd From: budd@mist.CS.ORST.EDU (Tim Budd) Newsgroups: comp.lang.visual,comp.lang.misc Subject: metaphor and programming Message-ID: <13770@orstcs.CS.ORST.EDU> Date: 14 Nov 89 23:17:01 GMT Sender: usenet@orstcs.CS.ORST.EDU Reply-To: budd@mist.CS.ORST.EDU (Tim Budd) Organization: Oregon State Univ. -- Computer Science Lines: 79 Here is something new to argue about. thesis 1) we humans in large part structure our thinking about problems by reformulating them in a manner consistent with real-world experience, and then use our real world knowledge to drive our intuition about problems. To put it briefly, we use metaphors. thesis 2) radical changes in programming languages occur when new metaphors are introduced. (witness logic programming, witness object oriented programming). What do I mean by metaphors? Here is a partial list. I would welcome any additions (particularly given my note at the end). 1. The process-state, or pigeon-hole metaphor. Computation is based around the idea of slots that can hold values. Algorithms are directed towards the proper accessing of the right slots at the right times. examples: Algol-like languages, spreadsheets. real world experiences that help us intuit about the model: collating, sorting of any sort, (and of course mailpersons?) 2. The flow model. Computation is modeled on a flow of data being directed and modified over space. Programming is the process of putting together conduits for flow in different forms. experiences: electronic circuits, water pipes, tinker toys, examples: data flow languages, functional languages. 3. The autonomous agent model. Programming is modeled on a delegation of responsibility to a variety of more or less autonomous agents. Computation involves setting up the agents, and then having them interact. experiences: most real world interactions examples: object oriented languages 4. The sample catalogue model. Not really a model of computation, but related. Purpose is to display information to the user in an easily indexiable form. Information is more or less fixed, programming involves establishing access patterns. experiences: catalogues, dictionaries, other references. examples: hypercard, rapid prototyping systems. 5. The declarative, or inference model. Programming consists of writing lists of facts and rules of inference. Computation involves the answering of queries. experiences: geometry, logic examples: prolog, other declarative systems. 6. The learning model. Programming consists of showing a number of examples of a specific pattern to a learning system, which infers a general rule. experiences: human learning examples: AI learning systems. Now on to my thesis 3. I have observed that visual programming, that is programming in a visual manner, has not been as successful as one might have hoped. At first, the common thought is ``people are basically visual'', or ``a picture is worth 1,000 words''. But actual visual languages tend to be either (1) hard to use, (2) fun, but no more productive than conventional languages, or (3) limited to very narrow domains. We don't have a general purpose language of the flexibility, power, and ease of use of say Pascal. My thesis is that this is so because the metaphors we are using are basically not visually oriented to start with, and forcing them to be so necessarily results in the problems I mention. New languages, and in particular new visual languages, will require a totally new metaphor for what it means to compute. No, I don't have any suggestions. I can say that, however, that the new metaphor if it is to be successful must appeal to some innate, or at least common, well of experience within us. Just as I believe the object oriented philosophy strikes a responsive cord in people (particularly those not already brainwashed into other modes of thinking) because it appeals to experience. (metacomment: I prefer the term ``metaphor'' to ``paradigm'', because I think most individuals have an intuition about metaphors that is close to the sense in which I am using the term).