Other historical overviews do not mention Smalltalk (cf. 2.1.5) as a hypertext system. In this discourse it should not only be discussed as an important step for graphical user interfaces; Smalltalk also has qualities that make it worth to look at it from the perspective of hypertext. Smalltalk is a programming language that was invented and developed by Alan Kay and Dan Ingalls at Xerox PARC in the early 1970s. It stands in the tradition of SIMULA, the first object-oriented programming language. The structural similarity between referencing objects and hyperlinking will further be discussed in this chapter.
Alan Kay saw the idea of object orientation several times during the 1960s. He describes in The Early History of Smalltalk [Kay 96] how he had to analyze an ALGOL60 program that turned out to be the programming language SIMULA, «the documentation read like Norwegian translated into English, which in fact it was.» [Ibid., p. 516]. SIMULA67 is formulated by Kristen Nygaard and Ole-Johan Dahl as an extension to ALGOL60. It introduces the concepts of classes and instances to programming – then called activities and processes. SIMULA67 becomes the first object oriented programming language. Ellis Horowitz gives an introduction to ALGOL and SIMULA in Fundamentals of Programming Languages [Horowitz 84, p. 251].
Fig. 2.5 Sketch for an interactive version of Webster’s Dictionary for the Flex Machine by Alan Kay, 1969
Another influential step on the way to Smalltalk is Kay’s design of the Flex Machine in his doctoral thesis The Reactive Engine [Kay 69]. As an example utilization for the Flex Machine Kay presents an interactive version of Webster’s Dictionary, [Ibid., p. 157]:
The desired word can be […] pointed by the stylus. The display can then show a condensed explanation of just the word pointed to. If more information is needed, the stylus can again be used, to cause an expanded “encyclopedia” entry to be displayed. More tricks can be played. Suppose a word in the explanation is not understood. Does the user have to retreat to the top level to select the entry for the new word? Not if vocabulary words are linked together. Then the stylus can be used to point at the word in the explanation itself [*] and its entry will then be displayed.
* This phrase was originally underlined. Back in 1969 it was not only for Alan Kay’s typewriter impossible to create italics typeface.
To implement such functionality Alan Kay devises a new programming language called Flex – A flexible extendable language [Kay 68]. It follows the tradition of ALGOL and EULER, but goes beyond those in object-oriented aspects. FLEX is interpreted and therefore highly interactive like JOSS by RAND Corporation. But JOSS has deficiencies in dynamic simulation and extensibility which are addressed in FLEX [Kay 96, p. 517]. New operators may be declared directly and even FLEX itself can be modified using FLEX. The user interacts with the FLEX system only by using FLEX and all characteristics of the system are expressed in FLEX itself. This peculiarity is called homoiconic. That means that the internal and external representations are essentially the same and the system uses only one language to interact with the user.
FLEX shares these characteristic features with Smalltalk, which make it to a direct predecessor for Smalltalk.
Alan Kay and Dan Ingalls develop Smalltalk in 1972 at Xerox’ new research center in Palo Alto – abbreviated to Xerox PARC. The founding principle for Smalltalk is that every item is an object, from numbers to windows to projects up to the entire system itself. Objects refer to each other and messages are sent to and fro to change the internal states of the objects.
The Smalltalk environment is not a dedicated hypertext system. But referential connections between objects of all kind, i.e. between text objects, belong in the category of hypertext. Alan Kay writes in an e-mail to the author [Kay/Müller-Prove 2001]:
All of the Smalltalks at Parc had hyperlinks, not just between “content”, but between “projects” (the gui there was not just the first overlapping window interface, it also had what we would call today “multiple desktops” that were connected via hyperlinks.)
If an ENTER message is sent to a project the corresponding desktop area opens and displays the current state of the project, i.e. «the windows for the tasks involved in that project», as Larry Tesler explains in The Smalltalk Environment [Tesler 81, p. 144]. References to projects can be placed anywhere in the system.
The relevance of Smalltalk for graphical user interfaces will be discussed in section 3.1.5 Xerox Alto, the Interim Dynabook and Smalltalk (p. 62).