"Understanding diagrammatic thinking will be of special importance to those who design human-computer interfaces, where the diagrams presented on computer screens must find their way to the Mind's Eye.... In a society that is preoccupied with `Information Superhighways,' a deep understanding of diagrammatic reasoning will be essential to keep the traffic moving." -- Herbert Simon
Diagrammatic reasoning--the understanding of concepts and ideas by the use of diagrams and imagery, as opposed to linguistic or algebraic representations--not only allows us to gain insight into the way we think but is a potential base for constructing representations of diagrammatic information that can be stored and processed by computers.
Diagrammatic Reasoning brings together nearly two dozen recent investigations into the cognitive, the logical, and particularly the computational characteristics of diagrammatic representations and the reasoning that can be done with them. Following a foreword by Herbert Simon (coauthor of one of the most influential papers on reasoning with diagrams, which is included here) and an introduction by the editors, chapters provide an overview of the recent history of the subject, survey and extend the underlying theory of diagrammatic representation, and provide numerous examples of diagrammatic reasoning (human and mechanical) that illustrate both its powers and its limitations. Each of the book's four sections begins with an introduction by an eminent researcher who provides an interesting personal perspective while he or she places the work in proper context.
* Interacting with a computer requires adopting some metaphor to guide our actions and expectations. Most human-computer interfaces can be classified according to two dominant metaphors: (1) agent and (2) environment. Interactions based on an agent metaphor treat the computer as an intermediary that responds to user requests. In the environment metaphor, a model of the task domain is presented for the user to interact with directly. The term agent has come to refer to the automation of aspects of human-computer interaction (HCI), such as anticipating commands or autonomously performing actions. Norman's 1984 model of HCI is introduced as reference to organize and evaluate research in human-agent interaction (HAI). A wide variety of heterogeneous research involving HAI is shown to reflect automation of one of the stages of action or evaluation within Norman's model. Improvements in HAI are expected to result from a more heterogeneous use of methods that target multiple stages simultaneously.
Interacting with a computer requires adopting some metaphor to guide our actions and expectations. Most human-computer interfaces can be classified according to two dominant metaphors: (1) agent and (2) environment. Interactions based on an agent metaphor treat the computer as an intermediary that responds to user requests. In the environment metaphor, a model of the task domain is presented for the user to interact with directly.
Command-line and screen editors illustrate a simple contrast between these approaches. To change a word in a command-line editor such as ex, you must (1) instruct the editor to move to the appropriate line number, then (2) enter some command such as s/old/new (locate string old, then substitute for string old string new). To view this change in the context of the surrounding text would then require composing a command such as p.-10,.+20 (print from 10 lines before to 20 lines after the current location). This same task is far easier with a screen editor where you simply move the sprite- using mouse or cursor key to the offending word, delete it perhaps by backspacing over it, and type in the replacement. This keystroke superiority of screen over command-line editing is a well-known human-computer interaction (HCI) (Card, Moran, and Newell 1983) result. If the task were changed to "change every occurrence of old-word to new-word," the relative advantage is reversed: An instruction to an agent such as "g/old/s/old/new" (locate string old, then substitute for string old string new for g = every occurrence of string old) is far simpler than scouring the surrogate document for occurrences of old_word, erasing each, and typing new_word in its place. …