[mod.ai] Prog. Lang. Metaphors

Raul.Valdes-Perez@B.GP.CS.CMU.EDU.UUCP (02/24/87)

         [Forwarded from the CMU bboard by Laws@SRI-STRIPE.]

This posting is the result of the query for metaphors that underlie
programming languages.  Everything onward from (14) was compiled from
suggestions.  The items upto (13) were the original ideas.  


	METAPHOR				LANGUAGE

1.  function application (lambda calculus)	Pure Lisp
2.  variable assignment				Fortran
3.  message-passing				Smalltalk
4.  set manipulation				SETL, relational databases
5.  modus ponens				Prolog
6.  array manipulation				APL
7.  constraints					spreadsheets
8.  rewriting					production systems
9.  window manipulation				window managers
10. algorithm manipulation (?!)			Lenat's dissertation (AI)
11. resolution					resolution theorem provers
12. string manipulation				SNOBOL
13. states (and transitions)? graphs?		

14. List processing is a metaphor for Lisp & IPL-V

15. Does LOGO have a metaphor?  [A metaphor for the graphical part of LOGO
    is a moving turtle. - RVP]

16. "... metaphors involved in user interactions and the influence they 
    have on system design.  (There is a session on metaphors at the 
    SIGCHI in April)"

    Desktop metaphor
    Electronic Book metaphor
    Rooms metaphor (a method of organizing windows dealing with a 
     particular application into a class of windows.  e.g. mailroom)
    Overlay or transparency metaphor
    Hierarchical metaphor
    Network metaphor (Zog or Notecards are systems that use this 
     metaphor) 

17. File [stream?] manipulation is a metaphor in UNIX.

18. Patterns in Snobol-4.

19. Type inference				ML
    Dataflow					ID (Arvind)
    Concurrent programming			CSP, Linda, Multilisp
    Structured programming  (iffy)		Pascal

20. Couple of relevant papers:  "The Scientific Community Metaphor" by 
Kornfeld & Hewitt, IEEE Trans. on Systems, Man, & Cybernetics Jan 81;
"Metaphor and the Cognitive Representation of Computing Systems" by 
Carroll & Thomas, same journal, Mar/Apr 82.