Smalltalk is and was a breakthrough combination programming language and operating system, created between 1972 and 1980 at the legendary Xerox Palo Alto Research Center: PARC. It was the first fully (pure) object-oriented language, and thus is a grandparent of all OO languages. The main language influences inspiring and informing the creation of Smalltalk were Ivan Sutherland
's Sketchpad graphics program/language, Simula
and Seymour Papert
dialect, and ML
. Smalltalk is far more than a programming language only. It is also a full, powerful operating system (OS). Many traits make it so. All original Smalltalks ran on bare hardware, with no intervening OS, and some still do. All Smalltalks have their own internal scheduling, storage management, display handling, keyboard input, subsystems access, debugger, graphic user interface (GUI), application programming interface (API), one can write programs, from short scripts to full applications to run in it, and ignore any OS below. Smalltalks not using the file system of an underlying OS, have their own. Being a language + OS is part of the early foundation philosophy behind the design and implementation of Smalltalk. Consider two quotes by one of Smalltalk's earliest and primary designers, Dan Ingalls: "An operating system is a collection of things that don't fit into a language. There shouldn't be one." - Daniel H. H. Ingalls; Design Principles Behind Smalltalk; Byte Magazine, August 1981. "In this way, the underlying metaphor of communicating objects can be seen to operate all the way up to the level which corresponds to a conventional operating system." - Daniel H. H. Ingalls; The Smalltalk-76 Programming System: Design and Implementation; Conference Record, Fifth Annual ACM Symposium on Principles of Programming Languages (POPL), 1978. Open Source versions: GNU Smalltalk, Pocket Smalltalk, #Smalltalk (sharp-Smalltalk), Squeak, StepTalk, Susie. Smalltalk's inventors, the famous Alan Kay team from Xerox PARC, are now working on the free implementation Squeak. It is only a download away. On this page, @links are arranged in three groups and levels: 1) Top group: issues spanning multiple unrelated languages. 2) Middle group: issues specific to one language. 3) Bottom group: specific implementations, with their own directory category.