Thursday, August 30, 2007

Sketchpad

“Sketchpad: A Man-Machine Graphical Communication System,” Ivan Sutherland, 1963

Summary



The Sketchpad system was a 1960s era computer that allowed for dynamic and precise graphical input using a light pen and a bank of buttons, knobs, and toggle switches. The extremely modal operation did not allow for context-driven interaction, each action required the pressing of a specific button or sequence of buttons, possibly in addition to actions with the light pen (the primary source of input).

Sketchpad was fairly revolutionary in that it was one of the first systems to pave the way for the modern concepts of object oriented programming and design. Sketchpad allowed for drawings to be saved as symbols. These symbols could be opened in subsequent drawings as instances, or sub-pictures, and manipulated individually (scaling, rotating, etc., but not fundamentally changing the object’s definition). Constraints could also be placed on drawings to force relationships between objects to help beautify and control the precision of a drawing (making lines parallel, the same length, etc.). Changes to the base symbol resulted in identical changes to every stored instance of that symbol within a sub-picture.

Components of similar type (lines, points, constraints, etc.) were stored in circular doubly-linked lists, called rings. Additionally, all objects with common traits (such as all line segments terminating at a common point) were linked together. These lists allowed for easy insertion of new objects, deletion of old object, and operations such as the merging of different objects (merging two points would modify the line segments that terminated at those points). The generic blocks stored in the linked lists provided easy management and extensibility of specific code, precursors to the specific ideas of polymorphism and inheritance. Constraints are also represented as objects in rings, connected to the symbols and variables they control.

Discussion



The obvious strengths of this paper, things that were groundbreaking and fairly revolutionary for their time, were the ideas that later became to be known formally as object oriented programming, polymorphism, and inheritance. It was interesting to read that one could manipulate a symbol's definition, for example changing the hexagons to fish scales, and the change would be reflected immediately in all instances of that symbol. The generic structure of objects so that the system was extensible was not only ahead of its time, but also fit the idea of inheritance and polymorphism.

One of the weaknesses is the horrible complexity of the Sketchpad system. Its modal input system, with the incredible number of buttons, knobs, and toggle switches, makes the use of Sketchpad limited to only a few people beyond its creator. However, I don't think its fair to fault Sketchpad too much for this. At the time of its creation, 1963, the computers that existed didn't have incredibly complex operating systems or SDKs to allow for the creation of very flexible programs. Hardware was still very tied to the systems, the transistor was pretty much brand new (field effect transistors had not even been invented yet), and computer systems were fairly specifically oriented. And, despite the complexity of its interface, Sketchpad was able to do some fairly amazing graphics manipulation for its time.

No comments: