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.