Smalltalk Language

Officially there is no language called Smalltalk; there is a family of rather different languages called Smalltalk-xx, where the xx are the last two digits are the year that language was finalized. However most people just refer to Smalltalk as the language and mean the Smalltalk-80 dialect of the language (or a derivative of it as virtually all modern Smalltalk systems implement an evolution of Smalltalk-80). Older dialects of Smalltalk include SmalltalkSeventyOne?, SmalltalkSeventyTwo, and SmalltalkSeventyEight?. SelfLanguage can be considered a newer dialect of Smalltalk.

The languages were designed by AlanKay's research group at XeroxParc in the seventies and implemented on the first personal computers produced by XeroxParc, like the Alto, Dolphin, and Dorado workstations.

Smalltalk-76 achieved some exposure from a ScientificAmerican article presenting AlanKay's research. The most famous of these languages is Smalltalk-80, which was released commercially and about which a set of celebrated books has been written. Since Smalltalk-80 this naming convention has not been adhered to although the language has continued to evolve. For a full history of Smalltalk go to Wikipedia at .

Smalltalk family languages are small languages with a slightly unusual syntax. Smalltalk family languages have been loosely based on ActorSystem semantics up to and including Smalltalk-76, and on more conventional procedural semantics in later versions.

Smalltalk semantics rely (almost) solely on polymorphic MessagePassing to instances of hierarchically organized classes.

Smalltalk-80 was once the number two object-oriented programming language behind C++ by about a factor of ten in job starts. Java replaced Smalltalk-80 in this number two position and then ate it alive. Smalltalk-80 evolved in two directions. The first, based on Smalltalk-80 rel 2 was taken out of Xerox by Adele Goldberg et al. into ParcPlace and renamed ObjectWorks, this was later renamed VisualWorks and is still sold by Cincom. Another version based on Smalltalk-80 rel 1 was evolved by Alan Kay et al. and renamed SqueakSmalltalk. There is now another branch of Squeak called Pharo that has aimed to make a more commercial offering. Both Squeak and Pharo are OSS. There are a couple of other implementations worthy of note; IBM's VisualAge Smalltalk now sold by Instantiations and Dolphin Smalltalk. In recent years with the rise of dynamic languages such as Python and Ruby there has been a renewal of interest in Smalltalk. As well Ruby is pretty much a Perlized dialect of Smalltalk, so all in all the future of the language is far from dead.

Many of the Wiki authors have used C++, Java, and C# extensively and still prefer Smalltalk for nearly any purpose.

Wiki's FullSearch says:
These are some of the better ones ...

If you want to try Smalltalk for yourself without spending a lot of money, see LearningSqueak or try one of the evaluation versions of the commercial Smalltalks.
This link lists some projects and points to some other lists of projects.

The pages about ExtremeProgramming are not overtly about Smalltalk, but if you read them carefully you will see the Smalltalk influence in nearly every page.
I'm afraid I've never programmed in SmalltalkLanguage ('though I'd love to!), but I think we should mention that two languages I have programmed in, ObjectiveCee and RubyLanguage, are both strongly influenced by SmalltalkLanguage, and many (but not all, of course!) said about SmalltalkLanguage on these pages apply to them as well.

SmalltalkLanguage was the motivator of CeePlusPlus, JavaLanguage, and the rest of the current "Object Oriented" languages. AlanKay coined the term "Object Oriented", and HeInventedTheTerm as part of his creation of SmalltalkLanguage (Smalltalk was, in turn, heavily influenced by SimulaLanguage and LispLanguage). As such, virtually ALL object oriented technology began with Smalltalk.

So what about SimulaLanguage?

And what about CapabilitySystems??

Is it true that there is effectively no way to deploy a smalltalk app? No source code? That the app is the runtime image of the development environment?

No. This has not been true since the very earliest days of commercial Smalltalks. I don't know enough about Squeak to know how this question is handled in Squeak, but in the environments that were supported by EnvyDeveloper (DigitalkSmalltalk?, IbmSmalltalk, and older versions of ParcPlace), an application was "packaged", meaning that the classes and methods (often without source) needed by the application were emitted by the development environment into a special image. During the process, the various components of the development environment (such as the compiler and its support classes) were stripped from the packaged image. The result is a fully-functional Smalltalk application that runs independently from the environment. Other approaches, that had varying levels of success, included constructing linkable modules (DLLs in windows, so's or .o's in unix, etc) that ran the application. Modern VisualWorks has a sophisticated parcelling system and deployment tools to allow runtime systems to be deployed.

[There are different ways to do this in OpenSource Smalltalks. I'm unaware if this kind of "automatic image deployment" is implemented in Squeak/Pharo/Cuis, but that would be most doable. Other way is stripping down your development image (a copy of it), which is implemented (at least partially?) in those. And another way is filing out your classes (as a changeset, monticello package, or some other way), and loading them to an already minimal image (this is the closest you get to source code compiling, i guess). Then there's GnuSmalltalk, if you want to go that route...]
The irony is that Smalltalk zealots generate a large amount of impassioned debate. The language should be called BigMouth?.

"I think that applies to most languages..."
Are the original Xerox releases of smalltalk-80 and smalltalk-80 release 2 available anywhere online?
See also: AllStatementsAboutSmalltalkAreFalse ImprovingTheSmalltalkDesign
CategorySmalltalk SmalltalkRoadmap CategoryProgrammingLanguage

EditText of this page (last edited July 7, 2014) or FindPage with title or text search