Mathematics Education: Taking a Clue
From the Recent Technological Revolution
A Very Brief History of Object-Oriented Computing
In September 1982, Tim Rentsch (SIGPLAN Notes, v17, n9) wrote:
... note that object oriented programming arose when Smalltalk was developed and therefore the history of Smalltalk serves as the history of object oriented programming.
Smalltalk is the software half of an ambitious project known as the Dynabook. The Dynabook is a sort of computer holy grail, with the goal of being a truly personal computer. The Dynabook ultimately is expected to handle with equal facility any and all kinds of information management, and to be all (computer type) things to all people. Accordingly Smalltalk has to carry quite a burden of expressiveness and convenience.
Alan Kay is the man chiefly responsible for the vision of the Dynabook. In the late 1960's he did work on a preliminary version, known in that incarnation as the Flex machine. Then in the early 1970's he went to the Xerox Palo Alto Research Center and there formed the Learning Research Group. Alan's goal was still a truly useful personal computer, with the Xerox Alto being the interim hardware for the Dynabook, and with LRG doing Smalltalk as the software.
Smalltalk drew heavily from Flex, ... the class notion from Simula dominated the design. The language became completely based on the notion of a class as the sole structural unit, with instances of classes, or objects, being the concrete units which inhabit the world of the Smalltalk system.
Simula was developed in the mid-1960's by Ole-Johan Dahl and Kristem Nygaard at the Norwegian Computing Center in Oslo.
Alan Kay envisaged a personal computer "designed in such a way that people of all ages and walks of life can mold and channel its power to their own needs." (Microelectronics and the Personal Computer, 1977). The commonplace today mice and windows came from that effort. The design of the Dynabook was heavily influenced by the desire to accommodate users "down to the age of six" who are "used to finger paints, color television and stereophonic records..."
Let's just remember that the ideas of personal and object-oriented computing were intrinsically related from the very beginning. Personal computing emerged from laboratories in the early 1980s. Wonderful as the first steps were, hardware limitations of the first personal computers led to a pattern of perception of PCs very remote from the original vision.
But from then on, software and hardware evolutions went hand-in-hand. In the early 1980s, Brad Cox, the designer of Objective-C, an object oriented wrapper around the most popular programming language C, coined the term software-IC - software pieces pluggable in the manner of integrated circuits. Pluggability of the off-the-shelf components is an important issue as we learn from the competition between Apple and IBM, and later between say IBM and Compaq, in the personal computer market.
C++, a superset of C, was created by Bjarne Stroustrup from Bell Laboratories in the mid-1980s. Until most recently C++ was the language of choice of an average programmer. Stroustrup wrote:
A programming language serves two related purposes: it provides a vehicle for the programmer to specify actions to be executed and a set of concepts for the programmer to use when thinking about what can be done. The first aspect ideally requires a language that is "close to the machine", so that all important aspects of a machine are handled simply and efficiently in a way that is reasonably obvious to the programmer. The C language was primarily designed with this in mind. The second aspect ideally requires a language that is "close to the problem to be solved" so that the concepts of a solution can be expressed directly and concisely. The facilities added to C to create C++ were primarily designed with this in mind.
I wish to draw your attention to the fact that the affinity with the human thinking facility was very much on the mind of the creators of the object-oriented tools. Success of C++ speaks for itself.
At the time of expensive hardware, the close-to-the-machine C was a tremendous success. C++ built on C hierarchically, which may explain its fast adoption by the programming community. Java that was presented by Sun just 3 years ago is almost like C++ and this too, besides its being the language of the Web, accounts for its instantaneous success among the programmers. Unlike C++, Java was born at the time when PC hardware became so powerful as to allow a protective layer between the hardware and software - the Java Virtual Machine (VM). This is where Java lives and runs; details of and the differences on the hardware level became (in principle) not important.
The latest development related to the object technology is the creation of XML - an Extensible Markup Language. This is a new language from the W3 Consortium. The goal of the W3C activity in the design of XML was to enable the delivery of self-describing data structures of arbitrary depth and complexity to applications that require such structures. I have no personal experience with XML, but here is what Jon Bosak from WebReview had to say about it:
A future domain for XML applications will arise when intelligent Web agents begin to make larger demands for structured data than can easily be conveyed by HTML. Perhaps the earliest applications in this category will be those in which user preferences must be represented in a standard way to mass media providers. The key requirements for such applications have been summed up by Matthew Fuchs of Disney Imagineering: "Information needs to know about itself, and information needs to know about me."
I will have to say a few words about OO technology to clarify the meaning and significance of the last sentence.
- Object-Oriented Computing, IEEE Computer Society Press, 1987
- B.Stroustrup, The C++ Programming language, Addison-Wesley, 1986