🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.visual
Article #11

metaphor and programming

#11
From: Tim Budd
Date: Tue, 14 Nov 1989 23:17
79 lines
4352 bytes
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).
Technical Details
Message-ID: <13770@orstcs.CS.ORST.EDU>
Path: arc1-ca.pugleaf.net!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

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!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