Smalltalk Programming Resources

Smalltalk is an object-oriented programming language that can be used to create virtually any type of desktop or web application. A wide variety of modern Smalltalk implementations exist. In this guide, we introduce the most popular implementations so you can decide which is the right fit for your programming objectives and get started learning Smalltalk right away.

The Birth of Smalltalk

Smalltalk was born in the early 1970s at the Xerox Palo Alto Research Center (PARC). Alan Key developed the very first version of the language, Smalltalk-71, as a proof of concept with implementation assistance from Dan Ingalls. Several additional iterations of the language were developed privately and used for research purposes within the confines of PARC.

Smalltalk first went public in 1980 with the release of Smalltalk-80 version 1 which was released on a limited basis to a few select organizations including Apple, Hewlett-Packard, and UC Berkley. Smalltalk-80 version 2 followed in 1983 and was released to the general programming public. The 1983 version of Smalltalk is the version typically being referred to when the term Smalltalk is used.

In 1998, ANSI Smalltalk was ratified and represents the official version of Smalltalk on which modern implementations are based. Many modern programming languages such as Objective-C, Python, Ruby, and Java draw deeply on the syntax and underlying object-oriented philosophy of Smalltalk, and it's difficult to overstate the influence of Smalltalk on modern computer programming.

Slow Commercial Growth and Open-Source Proliferation

In the late 1980s two firms were distributing commercial Smalltalk implementations. These organizations, ParcPlace and Digitalk, failed to achieve mainstream acceptance of Smalltalk due in part to the language's high memory demands and initial inability to connect to SQL databases (a shortcoming that was eventually rectified). In 1995, the firms joined forces and became ObjectShare, but just four years later the organization was dissolved.

Just as ObjectShare was getting started, IBM jumped into the Smalltalk market with their own Smalltalk implementation: VisualAge/Smalltalk. While neither organization continues to develop Smalltalk implementations today, the products each released were purchased by other firms who continue to develop and release updated versions of each application to this day. ObjectShare's applications, ObjectWorks and VisualWorks, live on today and are distributed by Cincom. IBM's product was eventually taken over by Instantiations, and VisualAge/Smalltalk, now called VA Smalltalk, is still available and under active development to this day.

While Object Share and IBM were pushing forward commercial development of Smalltalk, several open-source varieties of Smalltalk such as Squeak, GNU Smalltalk, and Pharo, were released and gained significant market share.

During the 2000s Smalltalk growth stalled out. However, it is enjoying a resurgence today due in no small part to the success of Smalltalk web application frameworks like Seaside and AIDA/web.

If you like to learn more about the history of Smalltalk, Wikipedia has a great deal of information on the history of Smalltalk and it's most popular implementations.

Smalltalk Implementations, Web Application Frameworks, and Resources

Learning Smalltalk-80 will go a long way towards preparing you to do real development with one a modern Smalltalk implementation like Squeak, Pharo, or VisualWorks. If you want to learn Smalltalk-80, there's no better resource to check out than the original texts written to educate programmers on the implementation of the language. Thankfully, many of these texts are now available as free PDF ebooks.

Many additional free Smalltalk ebooks can be found by visiting Stef's Free Online Smalltalk Books, a collection of freely downloadable Smalltalk ebooks pulled together by Stéphanie Ducasse.

If you want to learn about the original intent behind the design of Smalltalk, Dan Ingalls' article, Design Principles Behind Smalltalk, written in 1981, is an interesting and helpful glimpse into the underlying principles behind the development of Smalltalk.

Another place you can learn a great deal about Smalltalk is Smalltalk 101. Here you'll find links to a wide variety of articles and tutorials on a wide range of Smalltalk topics.

According to The World of Smalltalk, there are more than a dozen noteworthy modern Smalltalk implementations and development frameworks. While all of these products are under ongoing development, and interesting and usefuly in their own right, the most important and noteworthy are Pharo, Squeak, Gemstone, and Cincom.

GNU Smalltalk

GNU Smalltalk is a completely free and open-source implementation of Smalltalk. It is supported by a very active community and many educational resources are available. Some of the best resources include the tutorial found in the GNU Smalltalk User's Guide, and Computer Programming using GNU Smalltalk by Canol Gokel, which you can get as a free ebook or by purchasing a copy.

Get Started With GNU Smalltalk

This is a very unique implementation, which GNU describes as, "The Smalltalk for those who can type." We've created an entire article all about it, GNU Smalltalk Resources. If you are interested in it, you really should check it out.

The Pharo Project

The Pharo Project, a fork of Squeak, includes the Pharo programming language, a unique variation on Smalltalk, and a complete development environment. Pharo is free to download and is supported by an enthusiastic community. The Pharo project maintains an extensive documentation database where you'll find many excellent resources. Two particularly useful resources include the Pharo Weekly blog, where you can keep track of news of importance to Pharo developers, and Pharo by Example by Black, et al, available as a free PDF or in paperback.

Squeak

Squeak is an open-source implementation of Smalltalk, and quite possibly the most popular non-commercial Smalltalk implementation. Squeak has the support of some of the Smalltalk's earliest developers and adopters, including Dan Ingalls and Alan Kay.

The Squeak Project maintains a running list of excellent resources. Highlights include: Basic Aspects of Squeak, Squeak by Example, a Laser Game Squeak tutorial, and a Newbie's on-going tutorial. If none of these resources are exactly what you're looking for, take a look at the Squeak documentation page or the Squeak Tutorials page to find dozens of additional resources.

Get Started With Squeak

If Squeak sounds like it might be right for you, you are in luck. Because of the high level of interest, we've put together a specific introduction, Squeak Programming Primer. It will get you going with the language from downloading and installing it to mastering it.

Amber

The Amber programming language is an MIT-licensed derivative of Smalltalk that is designed to make it as easy as possible to use Smalltalk to build web applications. Think of it as a development environment and web server rolled into one package.

Amber includes a built-in parser and compiler. What makes Amber ideally suited to web application development is that Amber compiles into standards-compliant JavaScript — the most popular scripting language used on the web.

If you're ready to get started with Amber, there are a number of ways you can do that. First, there's the interactive Amber tutorial. Next, the Amber quick start guide, part of the official Amber documentation, will help you get Amber set up on your computer. Another resource to check out is Richard Eng's Gentle Introduction to Amber (which you should probably follow up with Part 2 and Part 3).

Smalltalk/X

Smalltalk/X, by eXept Software, includes a complete implementation of Smalltalk and a graphical development environment. While it is a proprietary platform, it is free to use. You can get started with Smalltalk/X by downloading either the Windows or Linux version for free.

Get Started With Smalltalk/X

Smalltalk/X is a very interesting implementation of the language because eXept does all of its development with the language, so you know that Smalltalk/X will continue to be maintained and extended. We've written a whole article about it, Smalltalk/X Primer. It provides a full overview of the implementation, and guidance on getting it installed and working.

Dolphin

Dolphin Smalltalk from Object Arts is a Windows-based Smalltalk implementation. Dolphin 7 is the first completely free and open-source version of the platform, which includes a complete Smalltalk IDE. Getting started is easy, and the getting started page will walk you through the process of setting up Dolphin on your Windows system.

Once you have Dolphin set up, start learning Dolphin with the Lights Out game tutorial. Additional tutorials can be found on the Dolphin Blog and incude a modern take on the classic "Hello World!" exercise. Of particular interest to more mature developers will be the Dolphin usenet group, comp.lang.smalltalk.dolphin, which is accessible on usenet or on Google Groups.

Gemstone

Gemstone/S from Gemtalk Systems is a cross-platform commercial implementation of Smalltalk. While the community edition of the platform is free to download, licensing fees apply if your needs exceed the limited resources included in the free versions.

Gemtalk offers free installation guides for Linux, Solaris, AIX, Mac, and Windows systems. In addition, many manuals are available, including a System Administrator Guide, Programmers Guide, GemBuilder for C, Visual Statistics Display, and Topaz Programming Guide. All of these free resources can be downloaded from the Gemstone/S website. One other good place to learn about Gemstone is Gemstone 101, a series of articles covering introductory and intermediate Gemstone topics.

VA Smalltalk

VA Smalltalk from Instantiations is the modern descendant of IBM's VisualAge/Smalltalk. While VA Smalltalk is a proprietary product with a hefty price tag, you can get a free trial to give it a test drive before committing to the platform.

Cincom Smalltalk

Cincom Smalltalk includes ObjectStudio and VisualWorks. VisualWorks may be the most popular commercial Smalltalk implementation. Cincom Smalltalk is a commercial proprietary product. However, an evaluation copy can be downloaded for free for personal use. Cincom also offers an extensive database of tutorials including ones tailored specifically to ObjectStudio and VisualWorks developers.

Redline Smalltalk

If you want to use Smalltalk to create applications to run on the Java Virtual Machine, Redline Smalltalk is the implementation to learn. Currently, instructions for getting started with Redline are only available for users of *nix systems, although instructions for Windows systems are in the works.

In some regards, Redline is an implementation best-suited for experienced developers. Redline-specific educational resources are limited, and most of the recommended tools are either generic Smalltalk resources or borrowed from other implementations.

Smalltalk MT

Smalltalk MT from Object Connect is a Windows-only Smalltalk implementation. While this framework is free for personal use, a license is required for any commercial use or application.

Seaside

Seaside is one of the primary reasons why Smalltalk is enjoying a modern resurgence. Seaside makes it much easier to use Smalltalk to build web applications. This free and open-source web application development framework can be used to develop web applications by integrating with any one of the following Smalltalk platforms: Pharo, ObjectSource, VisualWorks, Dolphin, Gemstone, GNU Smalltalk, Squeak, or VA Smalltalk.

There are two excellent free ebooks to walk you through the entire web development process with Seaside and Smalltalk:

Many additional resources and tutorials can be found at the Seaside Documentation webpage.

AIDA/Web

Another web application framework that can be used with several different Smalltalk flavors is AIDA/Web. If you want to learn more about AIDA/Web, two good resources to get started with are the general introduction and architecture documents provided at the AIDA/Web website. Both are short, but will give you a good idea of what AIDA/Web is and what it is designed to do.

Once you're ready to get started with AIDA/web in earnest, the first step is to become comfortable in one of the supported Smalltalk platforms. Currently supported platforms include Squeak, Pharo, Gemstone, VisualWorks, ObjectSource, and Dolphin. Once you have the hang of developing in one of these environments, you can download and install AIDA/Web to simplify the process of web application development and deployment with Smalltalk.

You can start learning about web app development with AIDA/Web with the AIDA/Web tutorial. Follow the tutorial up with the many guides and tutorials available from the AIDA/Web documentation site and you'll be producing web applications in no time.

Summary

Smalltalk is an interesting language. Initially, it struggled to gain market share when competing against Java. However, it was nonetheless deeply influential in the development of modern programming languages like Ruby and Python, and modern programming paradigms such as the MVC framework and GUI design. In the late 2000s, when it seemed that Smalltalk might fade into the rearview of modern development, new life was breathed into the language by the growing popularity of Smalltalk as a web application programming language thanks to web application frameworks such as Seaside, AIDA/Web, and Amber.

If you want to learn Smalltalk you have no shortage of options. In this guide, we've covered the most popular modern Smalltalk implementations and framework, but our list is certainly not exhaustive. If you're struggling to pick a track, our recommendation is to start by learning Squeak. It may be the most popular of all, has the largest breadth of available educational resources, and everything you learn while studying Squeak will translate readily to other Smalltalk implementations.


Further Reading and Resources

We have more programming guides, tutorials, and infographics related to coding and general development:

What Code Should You Learn?

Confused about what programming language you should learn to code in? Check out our infographic, What Code Should You Learn? It not only discusses different aspects of the languages, it answers important questions such as, "How much money will I make programming Java for a living?"