Article View: comp.lang.visual
Article #26Re: metaphor and programming
From: Charlie Martin
Date: Wed, 22 Nov 1989 22:03
Date: Wed, 22 Nov 1989 22:03
113 lines
6898 bytes
6898 bytes
In article <13770@orstcs.CS.ORST.EDU>, budd@mist.CS.ORST.EDU (Tim Budd) writes:
> 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).
>
> ...
> 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.
>
Funny you should mention this. Appended is an extract from Chapter 1 of
my dissertation. The dissertation is basically two topics: representing
large systems for computer-aided engineering, and then using these
results to build a visual programming environment specific to
physiological simulation. My reasoning about visual programming has
pretty much exactly duplicated the above. I think the reason visual
programming hasn't paid off is that our visual programming notations (or
metaphors) are not cognitively more powerful than the textual notations
we already use. (This is basically the contrapositive of the "No Silver
Bullet" argument -- if the difficulties of programming are essential to
the nature of programming, and the essential nature of programming is
such that there is not much more room for gain, then bigger gains must
come from changes to the nature of programming.)
I don't know how to make a better general programming notation; but I
think that spread sheets offer an example of a better notation LIMITED
TO A SMALL PROBLEM DOMAIN. It think the extract states some of my
reasoning.
(If anyone wants to read the rest of the dissertation, you'll have to
wait until I've finished typing the thing. Maybe end of January.)
\section{Computer Aided Exploratory Programming}
Most people who use computers use them as a means to an end, rather than
as an end in themselves. These people usually find it hard to specify
what they need; it takes a long time to build what they have specified;
and it is hard to be certain that what they get correctly does what was
specified. These problems --- specification, construction, correctness
--- are the conventional problems of software engineering. Software
engineering methods have addressed these problems successfully in
certain cases, particularly when firm specifications can be established
and left unchanged until delivery of the system or program.
Physiologists and others in the experimental sciences can use computers
effectively in research, and in some areas now {\em must\/} use
computers to pursue interesting research, but their use of computers
doesn't fit conventional methods of development. Their programs often
do not need to perform the same calculations for a long time; instead,
their programs change rapidly as a model of some physical system is
built and tested. Once the model of the physical system is validated
sufficiently, the program is either discarded or used as a basis for
further development of more complex models. In effect, these programs
have no operational phase in their lifetimes. The desired result
is not a productive computer program, but a validated specification of
the computation, and thus a validated model of the physical system.
This style of use can be termed {\em exploratory programming\/}.
Exploratory programming presents a number of special problems. Many
scientists, especially in the biological sciences, are neither skilled
programmers nor mathematically sophisticated. For these scientists, the
problems of specification, construction, and correctness can be overcome
only by devoting time and effort to developing the skills and
sophistication required, or by obtaining the services of someone with
the needed skills. A computer capable of sophisticated physiological
modeling can be purchased for less than \$2000; this is comparable to
the cost of a programmer's services for just one week. The cost of
programming effort, not the cost of computation, is the major limit to
the use of computers in physiology.
Another area in which exploratory programming is common is in
accounting. Spread sheet programs such as Lotus~1-2-3 are used to build
active financial models which can be used experimentally. Spread sheets
provide accountants and financial users with a computer aided
programming environment with a user interface specific to their
particular problem area. The user directly manipulates the form of the
model --- and thus the specification of a program --- and constructs the
program itself directly from this specification. This can be termed
{\em domain specific programming\/}: programming in which the
programming language or notations is based on a limited model of
problems which is specific to the particular problem domain.
The {\em Model Definition Environment\/} (MDE), is a domain-specific
programming tool which provides physiologists a visual programming
notation for describing a physiological system. From the user's point
of view, it is an environment for scientific exploratory programming
with some of the same advantages that spread sheets offer for
accounting. However, unlike commercial spread sheet programs, MDE is
wholly retargetable. With the large system representation at its core,
new visual programming interfaces and new execution ``back ends'' can be
added as desired. The same architecture could be used to implement many
different domain-specific programming environments.
Charlie Martin (crm@cs.duke.edu,mcnc!duke!crm)
Technical Details
Message-ID:
<16175@duke.cs.duke.edu>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!cs.utexas.edu!samsung!xanth!mcnc!duke!romeo!crmReferences:
<13770@orstcs.CS.ORST.EDU>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!cs.utexas.edu!samsung!xanth!mcnc!duke!romeo!crm From: crm@romeo.cs.duke.edu (Charlie Martin) Newsgroups: comp.lang.visual,comp.lang.misc Subject: Re: metaphor and programming Summary: funny you should mention this.... Message-ID: <16175@duke.cs.duke.edu> Date: 22 Nov 89 22:03:44 GMT References: <13770@orstcs.CS.ORST.EDU> Sender: news@duke.cs.duke.edu Lines: 113