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?
, and SmalltalkSeventyEight?
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 http://en.wikipedia.org/wiki/Smalltalk
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.
- Date unknown: Smalltalk found on 423 pages out of 3506 pages searched.
- 2000/03/29: Smalltalk found on 837 pages out of 8073 pages searched.
- 2001/04/12: Smalltalk found on 1159 pages out of 14890 pages searched.
- 2002/04/08: Smalltalk found on 1419 pages out of 20255 pages searched.
- 2003/02/10: Smalltalk found on 1524 pages out of 23026 pages searched.
- 2003/11/07: Smalltalk found on 1677 pages out of 25749 pages searched.
- 2004/01/14: Smalltalk found on 1750 pages out of 26178 pages searched.
- 2005/04/10: Smalltalk found on 2061 pages out of 30852 pages searched.
- 2005/12/03: Smalltalk found on 2162 pages out of 31708 pages searched.
- 2006/02/01: Smalltalk found on 2184 pages out of 32910 pages searched, In 137 Page Titles.
- 2008/02/11: Smalltalk found on 2224 pages out of 32967 pages searched, In 145 Page Titles.
- 2009/02/06: Smalltalk found on 2251 pages out of 33807 pages searched. In 145 Page Titles.
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
, are both strongly influenced by SmalltalkLanguage
, and many (but not all, of course!) said about SmalltalkLanguage
on these pages apply to them as well.
was the motivator of CeePlusPlus
, 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
). 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.
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