Previous | Table of Contents | Next |
Smalltalk-74 was an effort to improve the performance of Smalltalk-72. It introduced an object representing a message, message dictionaries for classes, bitblt (the 2D graphics operator for bitmap graphics), and a better window interface. Another key innovation in Smalltalk-74 was OOZE (object-oriented zoned environment) as the new virtual memory system (Kaehler, 1981). The Alto included a 2.4MB model 30 disk drive for external storage. OOZE capitalized on the object-oriented nature of Smalltalk to allow 16-bit pointers to address 65KB objects so that a 96KB Alto could act as though its main memory were as big as its disk. Purging was done in the background, attempting not to interfere with the interactive nature of the Smalltalk system. Also, OOZE had a checkpointing scheme that ensured that the disk contained a recoverable image of Smalltalk objects no more than a few seconds old.
The history of Smalltalk is also the history of educational technology research at Xerox PARC.
Computer-assisted instruction (CAI) was in vogue in the late 60s and early 70s. A number of programming languages for authoring courseware had been invented, including IBMs Coursewriter, PLATO from the University of Illinois, and TICCIT from Brigham Young University. The Stanford CAI project relied on courses developed using PDP-10 machine code. In all of these large NSF-funded projects, the educational philosophy was fundamentally drill-and-practice. The computer was not, in fact, the teacher but rather the monitor of self-paced, self-test curricula. The biggest beneficiaries of these CAI efforts were clearly the curriculum authors. Despite the poor ratio of preparation time to course time per student (sometimes estimated as 40 to 1), authors were enthusiastic to discover how the requirement to prepare detailed course materials for computer delivery helped them to understand and organize their own materials.
Researchers at BBN, MIT, the University of Pittsburgh, and Stanford were not surprised by the positive reception of authoring languages. After all, as they hypothesized, one learns by trying to explain. But what better way to explain than through a programming language instructing a computer? With BASIC and with LOGO, these researchers pursued their interest in teaching young children to program as a way to teach about mathematics and effective problem solving.
Alan Kay, too, was encouraged by reports from Seymour Paperts MIT laboratory in which children were taught LOGO and Turtle Geometry (Abelson & diSessa, 1981). He positioned Smalltalk as a modeling language for children and the Dynabook minimally as an electronic book in which book elements could be directly manipulated. Kay also measured the success of each Smalltalk design as much on its capability to be learned by kids as on the extent to which the language and tools simplified the development of complex information-handling applications. Children were the special instances of everyone. The real beneficiary of linking pedagogy with language design was the computer industry because the educational emphasis kept the research focused on user interface design. Windows with multiple views of information, context-dependent menus, and the extensive use of direct pointing devices (the mouse for text and large object control, tablet and pen for drawing and character recognition) were all inventions driven by the necessity of creating a programming environment usable by everyone.
From a systems perspective, Smalltalk-76 was designed for speed and efficiency, as well as to support large system development. The design was based on the requirement to make a language that could be compiled without giving up the flexibility of being able to implement (simulation) languages within the language. From a user perspective, the design was influenced by the desire to have children as the users. Early efforts by education researchers to match the MIT LOGO claims were disappointing. It seemed that the MIT experience was more a function of Paperts charisma than a property of LOGO and Turtle Geometry. The absence of a well-defined curriculum left researchers perplexed at what was really being accomplished with young children because no one could replicate the LOGO groups claims that children were inventing mathematics. The Smalltalk group suffered the same disenchantment and vowed to have a better-defined set of objectives and curriculum.
This vow motivated two important changes to Smalltalk: addition of a class hierarchy and a human-readable syntax. Happily, the two goals of creating a language that could be understood by humans and by computers (so that the compiler could be written) were compatible.
Traditional approaches to teaching how to program introduce abstract concepts about algorithms, data structures, and programming tools. LRG rejected these traditional approaches because they were not consistent with the Piagetian theory that young children learn best by starting with concrete examples from which they can eventually come to understand the more abstract basic concepts. Our Smalltalk curriculum idea was to give students concrete examples to explore, through object use and customization (Goldberg & Kay, 1977). Customization had to be safe so that students could be encouraged to explore any ideas that occurred to them. Existing examples could be provided by defining a class of objects and having the student explore the behavior of instances of the class. But directly changing the implementation of a class was not sufficiently safe. Thus, class hierarchies were born of the necessity to have students create objects just like ones they were usingexcept for a difference in behavior or properties, all definable in a subclass and therefore guaranteed not to break the existing uses of instances of the superclass.
The students had to be able to read existing code in order to make intelligent modifications. The ability to read code implied that the syntax had to be easily interpretable by a human being. This requirement to be able to read code, not just write it, encouraged the invention of programming tools in Smalltalk based on the ability to query the system about existing object definitions and their relations to one another (Goldberg, 1984). The paper called Programmer as Reader (Goldberg, 1986) describes how the Smalltalk programming environment evolved on the principle that you learn to write by reading and you learn to read by writing. The intimate relation between decoding and encoding must be supported by the programming tools.
Previous | Table of Contents | Next |