Abstract
This paper presents a personal view of the evolution of six generations of Smalltalk in which the author played a part, starting with Smalltalk-72 and progressing through Smalltalk-80 to Squeak and Etoys. It describes the forces that brought each generation into existence, the technical innovations that characterized it, and the growth in understanding of object-orientation and personal computing that emerged. It summarizes what that generation achieved and how it affected the future, both within the evolving group of developers and users, and in the outside world.
The early Smalltalks were not widely accessible because they ran only on proprietary Xerox hardware; because of this, few people have experience with these important historical artifacts. To make them accessible, the paper provides links to live simulations that can be run in present-day web browsers. These simulations offer the ability to run pre-defined scripts, but also allow the user to go off-script, browse the details of the implementation, and try anything that could be done in the original system. An appendix includes anecdotal and technical aspects of how examples of each generation of Smalltalk were recovered, and how order was teased out of chaos to the point that these old systems could be brought back to life.
Supplemental Material
Available for Download
Launch file from Smalltalk-74 to Smalltalk-76
- Ronald M. Baecker. 1976. A Conversational Extensible System for the Animation of Shaded Images. In Proceedings of the 3rd Annual Conference on Computer Graphics and Interactive Techniques (Philadelphia, Pennsylvania) (SIGGRAPH ’76). Association for Computing Machinery, New York, NY, USA, 32–39. Google Scholar
Digital Library
- Alan Borning. 1979. Thinglab—a constraint-oriented simulation laboratory. Ph.D. Dissertation. Stanford University, Dep. Computer Science (March).Google Scholar
- Alan Borning. 1981. The Programming Language Aspects of ThingLab, a Constraint-Oriented Simulation Laboratory. TOPLAS 3, 4, 353–387.Google Scholar
Digital Library
- Alan H. Borning and Daniel H. H. Ingalls. 1982a. Multiple Inheritance in Smalltalk-80. Technical Report Technical Report 82-06-02. University of Washington, Department of Computer Science (June).Google Scholar
- Alan H. Borning and Daniel H. H. Ingalls. 1982b. Multiple Inheritance in Smalltalk-80. In Proceedings of the Second AAAI Conference on Artificial Intelligence (Pittsburgh, Pennsylvania) (AAAI’82). AAAI Press, 234–237.Google Scholar
- Alan H. Borning and Daniel H. H. Ingalls. 1982c. A Type Declaration and Inference System for Smalltalk. In Conference Record of the Ninth ACM Symposium on Principles of Programming Languages. ACM Press, Albuquerque, NM, USA, 133–141.Google Scholar
- L. Peter Deutsch. 1973. A LISP Machine with Very Compact Programs. In Proc. 3rd International Joint Conference on Artificial Intelligence (Stanford, USA) (IJCAI’73). Morgan Kaufmann Publishers, Inc., San Francisco, CA, USA, 697–703. http://www.softwarepreservation.org/projects/LISP/interlisp- d/Deutsch- 3IJCAI.pdfGoogle Scholar
Digital Library
- L. Peter Deutsch and Allan M. Schiffman. 1984. Efficient Implementation of the Smalltalk-80 System. In Conference Record of the Eleventh ACM Symposium on Principles of Programming Languages. Salt Lake City, 297–302.Google Scholar
- Doug Englebart Institute. 2008. The Demo @ 50. https://thedemoat50.org non-archival.Google Scholar
- Douglas C. Engelbart and William K. English. 1968. A Research Center for Augmenting Human Intellect. In Proceedings of the December 9-11, 1968, Fall Joint Computer Conference, Part I (AFIPS ’68 (Fall, part I)). Association for Computing Machinery, New York, NY, USA, 395–410.Google Scholar
Digital Library
- Bert Freudenberg, Dan H.H. Ingalls, Tim Felgentreff, Tobias Pape, and Robert Hirschfeld. 2014. SqueakJS: A Modern and Practical Smalltalk That Runs in Any Browser. In Proc. 10th Symposium on Dynamic Languages on Dynamic Languages ( (DLS’14)). ACM, New York, NY, USA (Oct.), 57–66. SIGPLAN Not. 50(2).Google Scholar
Digital Library
- A.J. Goldberg. 1983. Smalltalk–80: The Interactive Programming Environment. Addison-Wesley, Reading, MA (May). xi+516 pages.Google Scholar
Digital Library
- Adele Goldberg and David Robson. 1983. Smalltalk–80: The Language and its Implementation. Addison-Wesley. xx+714 pages.Google Scholar
Digital Library
- Ira P. Goldstein and Daniel G. Bobrow. 1981. PIE: An Experimental Personal Information Environment. Technical Report Technical Report CSL-81-4. Xerox Palo Alto Research Center.Google Scholar
- Daniel Ingalls, Tim Felgentreff, Robert Hirschfeld, Robert Krahn, Jens Lincke, Marko Röder, Antero Taivalsaari, and Tommi Mikkonen. 2016. A World of Active Objects for Work and Play: The First Ten Years of Lively. In Proc 2016 ACM Int. Symp. New Ideas, New Paradigms, and Reflections on Programming and Software (Amsterdam, Netherlands) ( Onward! 2016). ACM, 238–249. Google Scholar
Digital Library
- Dan Ingalls, Bert Freudenberg, Ted Kaehler, Yoshiki Ohshima, and Alan Kay. 2014. Reviving Smalltalk-78: The First Modern Smalltalk Lives Again. In Proc 6th edition International Workshop on Smalltalk Technologies (IWST ), Alain Plantec and Jannik Laval (Eds.). 109–118. http://freudenbergs.de/bert/publications/Ingalls- 2014- Smalltalk78.pdfGoogle Scholar
- Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. 1997. Back to the Future: The Story of Squeak, A Practical Smalltalk Written in Itself. In Proceedings Twelfth ACM Conference on Object-Oriented Programming Systems, Languages and Applications. ACM Press, Atlanta, 318–324.Google Scholar
Digital Library
- Dan Ingalls, Scott Wallace, Yu-Ying Chow, Frank Ludolph, and Ken Doyle. 1988. Fabrik: A Visual Programming Environment. SIGPLAN Not. 23, 11 (Nov.), 176–190. Google Scholar
Digital Library
- Daniel H. H. Ingalls. 1978. The Smalltalk-76 Programming System: Design and Implementation. In Proceedings of the 5th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (Tucson, Arizona) (POPL ’78). Association for Computing Machinery, New York, NY, USA, 9–16. Google Scholar
Digital Library
- Daniel H. H. Ingalls. 1981. The Smalltalk Graphics Kernel. Byte 6, 8, 168–194. https://archive.org/details/byte- magazine1981- 08/page/n181/mode/2upGoogle Scholar
- Daniel H. H. Ingalls and Daniel H. H. Ingalls, Jr. 1985. The “Mah¯ abh¯ arata”: Stylistic Study, Computer Analysis, And Concordance. Journal of South Asian Literature 20, 1, 17–46. http://www.jstor.org/stable/40872708Google Scholar
- Kenneth E. Iverson. 1962. A Programming Language. Wiley. (4th Printing, May 1967).Google Scholar
- Ted Kaehler. 1981. Virtual Memory for an Object-Oriented Language. Byte 6, 8 (August), 378–387.Google Scholar
- Alan C. Kay. 1972. A Personal Computer for Children of All Ages. In Proceedings of the ACM Annual Conference - Volume 1 (Boston, Massachusetts, USA) ( ACM ’72). Association for Computing Machinery, New York, NY, USA, Article 1, 11 pages. Google Scholar
Digital Library
- Alan C. Kay. 1977. Microelectronics and the Personal Computer. Scientific American 237, 3 (September), 230–245. https: //www- jstor- org.proxy.lib.pdx.edu/stable/24920330Google Scholar
Cross Ref
- Alan C. Kay. 1993. The Early History of Smalltalk. In The Second ACM SIGPLAN Conference on History of Programming Languages. ACM Press, New York, NY, USA, Chapter XI, 511–598.Google Scholar
- Glenn Krasner. 1983. Smalltalk–80: Bits of History, Words of Advice. Addison-Wesley Publishing Company, Reading, Massachusetts.Google Scholar
- Wilf R. Lalonde and John R Pugh. 1991. Inside Smalltalk. Vol. II. Prentice-Hall International, Englewood Cliffs, New Jersey.Google Scholar
- B. W. Lampson, W. W. Lichtenberger, and M. W. Pirtle. 1966. A user machine in a time-sharing system. Proc. IEEE 54, 12 (Dec), 1766–1774. Google Scholar
Cross Ref
- Craig Latta. 2015. a detailed Naiad description. January 2015. https://web.archive.org/web/20161113033728/https: //thiscontext.com/naiad/Google Scholar
- Frank Ludolph, Yu-Ying Chow, Dan Ingalls, Scott Wallace, and Ken Doyle. 1988. The Fabrik Programming Environment. In IEEE Workshop on Visual Languages. Pittsburgh, PA, USA, 222–230. Google Scholar
Cross Ref
- John McCarthy. 1960. Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I. Comm. ACM 3, 4 (April), 184–195. Google Scholar
Digital Library
- John McCarthy. 1978. History of LISP. Association for Computing Machinery, New York, NY, USA, 173–185. Google Scholar
Digital Library
- John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy P. Hart, and Michael I Levin. 1965. LISP 1.5 Programmer’s Manual (2 ed.). MIT Press. http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers% 20Manual.pdfGoogle Scholar
- Eliot Miranda. 2011. The Cog Smalltalk virtual machine — writing a JIT in a high-level dynamic language. In Proc. 5th Workshop on Virtual Machines and Intermediate Languages (VMIL 2011). 7. https://zenodo.org/record/3700608 Presented at the workshop, but not archived in the ACM Digital Library.Google Scholar
- Eliot Miranda, Clément Béra, Elisa Gonzalez Boix, and Dan Ingalls. 2018. Two Decades of Smalltalk VM Development: Live VM Development through Simulation Tools. In Proc. 10th ACM SIGPLAN Int. Workshop on Virtual Machines and Intermediate Languages (Boston, MA, USA) (VMIL 2018). Association for Computing Machinery, New York, NY, USA (November), 57–66. Google Scholar
Digital Library
- Kristen Nygaard. 1970. System description by SIMULA — An introduction. Technical Report S-35. Norsk Regnesentral / Norwegian Computing Center (November).Google Scholar
- Kristen Nygaard and Ole-Johan Dahl. 1981. The development of the SIMULA languages. In History of programming languages I, Richard L. Wexelblat (Ed.). ACM, New York, NY, USA, Chapter IX, 439–480. Google Scholar
Digital Library
- Sandra Pakin. 1968. APL\360 Reference Manual. Science Research Associates (SRA).Google Scholar
- Jeff Pierce. 2002. Alice in a Squeak Wonderland. In Squeak: Open Personal Computing and Multimedia, Mark Guzdial and Kim Rose (Eds.). Prentice Hall, Chapter 3, 69–96.Google Scholar
- Trygve Reenskaug. 1979. Models–Views–Controllers. Technical Note. Learning Reseearch Group, Xerox Palo Alto Research Center (December). 2 pages. Google Scholar
Cross Ref
- A. Dain Samples, David Ungar, and Paul Hilfinger. 1986. SOAR: Smalltalk without bytecodes. SIGPLAN Not. 21, 11 (June), 107–118. Google Scholar
Digital Library
- Steve Saunders. 1977. Improved FM audio synthesis methods for real-time digital music generation. Computer Music Journal 1, 1 (February), 53–55.Google Scholar
- D. V. Schorre. 1964. META II a Syntax-Oriented Compiler Writing Language. In Proc. 1964 19th ACM National Conf. (ACM ’64). Association for Computing Machinery, New York, NY, USA, 41.301–41.3011. Google Scholar
Digital Library
- Ernst Friedrich Schumacher. 1973. Small is Beautiful: A Study of Economics as if People Mattered. Blond & Briggs.Google Scholar
- D. A. Smith, A. Kay, A. Raab, and D. P. Reed. 2003. Croquet — a collaboration system architecture. In First Conference on Creating, Connecting and Collaborating Through Computing (C5). (Jan), 2–9. Google Scholar
Cross Ref
- Dave Thomas. 1995. Celebrating 25 Years of Smalltalk. Mojowire. http://www.mojowire.com/TravelsWithSmalltalk/ DaveThomas- TravelsWithSmalltalk.htm (also at Internet Archive 12 June 2013 05:51:49 ).Google Scholar
- David Ungar and Randall B. Smith. 1987. Self: The Power of Simplicity. In Proceedings OOPSLA’87 (International Conference on Object-Oriented Programming Systems, Languages and Applications). 227–242.Google Scholar
- Thomas A. Wadlow. 1981. The Xerox Alto Computer. Byte 6, 9 (September), 58–68. https://archive.org/details/bytemagazine- 1981- 09/page/n58Google Scholar
Index Terms
The evolution of Smalltalk: from Smalltalk-72 through Squeak
Recommendations
Evolving User Interfaces From Within Self-supporting Programming Environments: Exploring the Project Concept of Squeak/Smalltalk to Bootstrap UIs
PX/16: Proceedings of the Programming Experience 2016 (PX/16) WorkshopIt is common practice to create new technologies with the existing ones and eventually replace them. We investigate the domain of user interfaces (UIs) in self-supporting programming environments. The Squeak/Smalltalk programming system has a history of ...
NXTalk: dynamic object-oriented programming in a constrained environment
IWST '09: Proceedings of the International Workshop on Smalltalk TechnologiesDynamic programming languages offer high expressiveness and flexibility, improving programmer productivity. Still, making dynamic programming languages available for embedded systems is challenging because such environments are often constrained in ...
Making generic functions useable in Smalltalk
ACM-SE 45: Proceedings of the 45th annual southeast regional conferenceThere have traditionally been two approaches to object orientation with respect to defining code to operate on objects. The first and more common one is message passing. The other is generic functions which use multiple dispatch (also known as ...






Comments