CS789, Spring 2005
Lecture notes, Week 1
History of User Interfaces
The idea behind this history. Suppose that we raise the threshold for
importance high enough that only one important new concept has occurred in
each of the five decades since the computer was invented. What are they? How
have they changed user interfaces?
But first we need to defines some terms.
UI, UIMS
Individual applications have user interfaces (UIs). A user interface can
be instantiated or managed by a user interface management system (UIMS).
Making these can be considered an engineering discipline: designing useful
artifacts.
HCI, CHI
A UI should fit its users well. To make this happen the design process
requires knowledge about how computers and humans interact interact, which is
created by a scientific process that investigates humans & computers as
they interact, seeking universal laws that describe the interaction
0. The Computer
The computer executes a sequence of instructions, manipulating its
internal state, consuming input and producing output.
To do so it requires
- a program in memory
- input channel(s)
- output channel(s)
Providing this were the following interface innovations
- front panel switches, paper tape, magnetic tape, non-volatile
memory
- electrical standards (provide both input and output)
- devices as we know them to-day did not exist
N.B. At this point the development of computers bifurcated!
Branch one: the engineering branch
- The computer substitutes (or augments) invisibly.
- Input and output devices ramify without limit
- e.g. the humble dishwasher
- recursive ramification
- The computer itself is a black box
- possibly multiple programs selectable by input or by
state/history
- Programmability is (almost) exhausted at the time of manufacture
- This is ubiquitous computing.
Branch two: the computer as programmable object
Single programmers are able to create these superb artifacts out of the
most malleable substance yet discovered.
N. B. The branches will be seen to be rejoining one another toward the
end of computer evolution.
1. The Compiler
The compiler is used to assemble program fragments into a program.
Using it effectively requires
- random access into the program components
- support for abstraction
- libraries of reusable program components
- (purely technical) translation of programs into runnable objects
In providing this we have the following problems to solve
- program representation(s) having the following properties
- human readable
- dividable into parts and parts of parts
- substitution at the level of parts or parts of parts
- must support random access for human perception
- must support random access for human manipulation
- access to pre-defined components
They are solved by the following interface innovations
- the card deck
- the listing
- the procedure library
- the manual
2. The Operating System
Operating systems provide the ability to manage on-line, multiple
(independent) computations (multi-programming).
Using them effectively requires
- real-time access to job control
- on-line user/program interaction
- on-line program/program interaction
In doing this we have the following problems to solve
- proper direction (synchronization) of input and output
- how to manage program environment (context, state)
- technical environment
- cognitive environment
- arranging data sharing, communication
They are solved by the following interface innovations
- glass teletype, shell programming
- supports conversational interfaces
- user/program dialogue
- inter-working
N. B. Changes associated with the invention of operating systems
influence how the compiler is used. (E.g., the teletype makes possible the
screen editor.) The recursive nature of computation means that examining a
program (the listing) or changing it (the card-deck) can now be done by
running a program under the supervision of the operating system. What's
important here is that interface innovation is cumulative.
2a. The Database
Databases provide wide access to schema-structured data. This is sometimes
called client-server computing. Each individual record of data is interpreted
by means of a schema that is global to the entire system.
Using them effectively requires
- schema-structured data manipulation
- schema-structured interpretation
In doing this we have the following problems to solve
- consistent multiple access
- human interpretation of returned data
They are solved by the following interface innovations
- interface synchronization protocols
- forms
3. Wordprocessors, spreadsheets, &c. "Personal productivity
tools"
These are tools for manipulating documents that are semi-structured. The
program determines part of the structure; the user determines the rest. The
first part of the structure is global (to the program); the second part is
local (to the document).
- manipulative access to semi-structured data
- autonomous activities
- spreadsheet updating, wordprocessor formatting
Using them effectively requires
- random access into local data
- cognitive access (where is it?)
- efficient input
- visible presentation of document state
In doing this we have the following problems to solve
- visible state presentation, random access
- synchronization state of autonomous activities
- interworking
- high input and output rates
- doing the same thing many times (context-sensitive)
They are solved by the following interface innovations
- bit-mapped display, pointing device (V. Gui)
- the clipboard
- keystroke equivalents
- style sheets
4. Network-wide applications
These are applications, like web-browsing, that require wide-area access
to semi-structured data. This data is very similar to the information stored
in the human brain; to use it effectively it is necessary to compete
successfully against human memory.
Using them effectively requires
- high speed scale-independent interfaces
- navigation tools
- data assembly mechanisms
In doing this we have the following problems to solve
- consistency (event horizon)
- interworking (removing/standardizing context)
The interface innovations we expect to support this are
- associative models of data access
- high speed cut-and-paste