Learn About Smalltalk: Implementations and Tutorials

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.

Smalltalk

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 modern implementation of Smalltalk-80, and not just free in the sense that you can get it without paying for it. GNU Smalltalk, like all GNU projects, is completely free: you are free to use the software, share it, copy it, study it, and modify it.

What is GNU Smalltalk?

Smalltalk is a pure object-oriented programming language released in the early 1980s by the Xerox Palo Alto Research Center (PARC).

It was born as a proprietary language and several proprietary implementations are popular today. In addition, several free and open-source implementations are also available.

GNU Smalltalk is one of the latter: a free Smalltalk implementation. Ask anyone involved with the project what makes GNU Smalltalk different from other implementations and you may hear that GNU Smalltalk is "the Smalltalk for those who can type".

This tongue-in-cheek answer actually refers to the biggest difference between GNU Smalltalk and other Smalltalk implementations: the use of text files and a text editor rather than a complete integrated development environment (IDE).

All Smalltalk implementations other than GNU Smalltalk include a complete graphical IDE. They emphasize a graphical approach to programming that is easy-to-learn, easy-to-use, and makes heavy use of mouse clicks and contextual menus rather than typed code.

In addition, in other Smalltalk implementations, projects are saved as packages rather than individual text files.

GNU Smalltalk, on the other hand, is better thought of as a Smalltalk interpreter. With GNU Smalltalk, code is typed directly into text files and then interpreted by GNU Smalltalk.

This makes the development process look and feel a lot more like Python or Ruby development than traditional graphical IDE-based Smalltalk development.

Get GNU Smalltalk

While most Smalltalk implementations are very easy to set up, GNU Smalltalk is not. There are prerequisite applications and utilities to install, and there's no way around using Command Line to get the job done.

In keeping with the general trend within the GNU community, GNU Smalltalk assumes a certain level of technical competence. In other words, if you're looking for "Smalltalk for Dummies," look elsewhere — Squeak, perhaps.

You can install, or more-properly build, GNU Smalltalk on a Linux, Mac OS X, or a Windows machine. The process is simplest if you're running a Linux operating system — ironic, since the average Linux user is often better-equipped to handle a complex installation process.

However, with a few additional steps, you can get GNU Smalltalk up-and-running on just about any machine. For detailed instructions for Linux, Mac, and Windows systems refer to the Building GST Guides published on the GNU Smalltalk Wiki.

GNU Smalltalk Resources

Once you have GNU Smalltalk set up, you'll need to learn Smalltalk and the vagaries specific to the programming language.

GNU Smalltalk is based on Smalltalk-80 with the addition of many powerful methods that were included in ANSI Smalltalk. As a result, any resources intended to teach Smalltalk-80 or ANSI Smalltalk will do just fine for learning to write code that will run in GNU Smalltalk.

There are lots of places you can learn Smalltalk programming and our guide to Smalltalk Programming Resources will help you find the best.

Smalltalk with a GNU Flavor

One of the best resources for learning GNU Smalltalk is the completely free (in the GNU sense) book by Canol Gokel, Computer Programming using GNU Smalltalk.

You can get a free digital copy of the book or purchase a printed copy from Lulu. The book is a complete overview of the Smalltalk programming language and the GNU Smalltalk interpreter.

It has been designed to be accessible for any competent computer user with or without any previous knowledge of computer programming, and will take a Smalltalk student from complete novice to junior developer over the course of about 100 pages.

The GNU Smalltalk website also offers several useful educational tutorials and documentation pages, most of which can be found by visiting the Documentation page.

  • The FAQ provides a lot of non-programming information about GNU Smalltalk such as syntax examples, information about the optional (and feature-limited) GUI known as Blox, getting acquainted with the GNU Smalltalk community, and a lot more.

  • The GNU Smalltalk User's Manual may be the single most important resource you can find at the GNU Smalltalk website. This exhaustive document introduces GNU Smalltalk, can teach you how to use it, clues you in to add-on packages such as Seaside and Blox, and covers virtually every other conceivable GNU Smalltalk topic.

  • Of particular interest to beginners is the GNU Smalltalk Tutorial included towards the end of the User's Manual. Follow this step-by-step tutorial to learn Smalltalk and how to develop with GNU Smalltalk.

  • Since Smalltalk is a pure object-oriented programming language, the Class library reference (part 1 and part 2) is particularly important. Everything in Smalltalk is an object, and every object exists as an instance of a class. Every class can be acted on by only certain specific methods (similar in concept to functions). Knowing all of the available classes, and the methods that can be used with each, is critically important to developing in Smalltalk competently and efficiently.

  • One final place you may find a lot of useful information, especially once you've developed some skill as a Smalltalk developer is the GNU Smalltalk Wiki.

Once you have a little experience working with GNU Smalltalk you'll learn a lot very quickly by tackling some advanced tutorials. The GNU Smalltalk Wiki includes an Examples page where you can find several helpful tutorials covering advanced topics such as:

Ready to Try Gnu Smalltalk?

GNU Smalltalk will appeal to anyone who resonates with the GNU philosophy. It will also be particularly interesting to experienced Linux users and developers who prefer working with a text editor rather than a full-blown IDE.

While it is more challenging to get GNU Smalltalk up and running than any other modern Smalltalk implementation, its unique architecture within the Smalltalk ecosystem makes it particulary attractive to technically sophisticated developers with a healthy dislike for digital rights management.

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. A particularly useful resource is the Pharo Weekly blog, where you can keep track of news of importance to Pharo developers. There is also the book Pharo by Example by Black, et al.

Squeak

Squeak is a popular, open-source, modern Smalltalk implementation. It was derived directly from Smalltalk-80 in 1996 by a team of developers that included much of the original Smalltalk development team. While there are several modern Smalltalk implementations, Squeak is one of the most popular and successful of the open-source versions, and has been linked to other successful initiatives such as Raspberry Pi and the Scratch programming language.

History of Squeak

Smalltalk-80 was the first version of Smalltalk that was released outside of the confines of the Xerox Palo Alto Research Center (PARC) in which Smalltalk development incubated. The language was released in two versions. Version 1 was a limited release given to key industry peers such as Hewlett-Packard, UC Berkley, and Apple. Version 2 was released to the general programmer community.

Apple took Smalltalk-80 Version 1 and created a complete Smalltalk implementation called Apple Smalltalk. By the mid-1980's many of the original Smalltalk developers had left PARC and gone to work at Apple where Smalltalk development continued. Eventually, much of this same core group moved on to Walt Disney Imagineering. It was during this transitory period in 1995 and 1996 that the version of Smalltalk that is known as Squeak today was developed and released.

You can learn a lot more about the history of Squeak by reading Back to the Future, The Story of Squeak, A Practical Smalltalk Written in Itself by Ingalls et al.

Today, Squeak is an open-source Smalltalk implementation, possibly the most popular and important of the various open-source Smalltalk implementations, and has been used to build noteworthy projects such as Open Cobalt, parts of the Nintendo ES operating system, and to implement the Scratch programming language.

Get Squeak

Squeak is free, open-source, and easy to install. To get Squeak running on your computer follow these steps:

  • Go to the Squeak Downloads page and download the latest All-in-One Package. These packages are suitable for Windows, Apple, and Linux systems.
  • After the file has finished downloading, locate the zip file on your computer and extract all files. Then click on the executable file appropriate for your system (.bat for Windows, .app for Apple, and .sh for Linux).

That's it. No really. Just download the application, unzip it, and assuming you know Smalltalk you can get right to work developing with Squeak. Although, going through a quick crash course in using Squeak would probably be beneficial.

If you want to poke around a Squeak environment without downloading anything, you can do that as well. Just point your browser at Try Squeak to get a taste of Squeak powered by SqueakJS — a virtual Squeak machine that lets you run Squeak in the browser on top of JavaScript.

Squeak Resources

There are many free and premium Squeak and Smalltalk resources available online. We've taken the time to research the available options and pulled together what we believe to be the most useful and well-respected resources.

Learning to Squeak and Make Smalltalk

The official Squeak documentation site, a wiki-style community-generated documentation resources, is one of the best places to learn about Squeak. Here you can learn about the history of Squeak, find Squeak and Smalltalk training resources, and find information for beginners, intermediate users, and even advanced Squeak developers.

If you're new to Squeak, here are some of the best resources listed on the wiki to get you started:

Spend just a few minutes looking through the wiki and you'll locate many additional free training tutorials and articles.

Books and Ebooks

A mountain of books and ebooks have been written on Smalltalk and Squeak, below you find some of the most influential, most important, and simply the best.

First, let's take a look at some of the best Squeak texts. If your goal is to start producing shippable code with Squeak, these are the texts you should consult:

In 1983, three Smalltalk-80 texts were released. These influential texts, commonly referred to as The Blue Book, The Green Book, and The Orange Books introduce the programming language, the development environment, and tell the history of Smalltalk. Since Squeak was built on Smalltalk-80, a lot of what you'll learn while reading these texts will be directly applicable to modern Squeak development. Thanks to the efforts of Stéphane Ducasse, free PDF versions of all three of these classics, and many other Smalltalk and Squeak texts, are available online. If you prefer your books in printed format, you can still find used copies of these books online.

  • Smalltalk-80: The Language and its Implementation by Goldberg and Robson: The Blue Book, read the free PDF or find a used copy at Amazon.
  • Smalltalk-80: The Interactive Programming Environment by Adele Goldberg: The Orange Book, read the free PDF or find a used copy at Amazon.
  • Smalltalk-80: Bits of History, Words of Advice by Glenn Krasner: The Green Book, read the free PDF or find a used copy at Amazon.
Keep In-the-Know

As you start your Squeak and Smalltalk education, you should plug into the Squeak community. A few ways you can do that are to follow The Weekly Squeak and Planet Squeak, and to sign up for one or more of the many Squeak mailing lists.

There are many Squeak mailing lists to consider. If you aren't sure which to sign up for head over to the Squeak Forums where each subcategory doubles as a mailing list. Read a few posts until you're able to pick one or two that interest you. At the top of each forum subcategory page, you will see information about the mailing list, click "more options" to find out how to join the mailing list. To get you started, here are a few you may be interested in:

Should You Learn Squeak?

There are a lot of things to like about Squeak: it's free and open-source, setting up Squeak is astoundingly simple, it boasts strong ties to the original Smalltalk developers, and there are lots of free resources you can use to go from Squeak novice to competent Squeak developer. All of this means that the Squeak ecosystem is healthy and growing, and a good place to invest the time it takes to develop competency.

Scratch

Of all the Smalltalk offshoots, Scratch is probably the most unusual. It isn't directly based on Smalltalk, but rather Squeak, which is based on Smalltalk. Still, it is a very interesting language.

Why Use Scratch?

How do we introduce young people to programming, in an easy, fun, and interesting way? What is the best programming language for those first introductory steps in programming? Scratch is one answer to these questions.

The Scratch programming language is created specifically to teach programming to children ages 8 to 16. Using Scratch is easy, and it introduces the basics of programming logic to children in a fun way.

What is Scratch?

Scratch is a free, visual programming language created by MIT Media Lab’s Lifelong Kindergarten Group for educational and entertainment purposes. It is a programming language and an online community where children can program and share interactive media such as stories, games, and animation with people from all over the world. As children create with Scratch, they learn to collaborate, reason systematically, and think creatively.

Scratch can be used for many educational and entertainment purposes. They range from math and science projects to animated stories to interactive art and music. Existing projects on the Scratch website can be viewed and modified without saving changes, even without user registration.

Scratch was launched in 2003 as a desktop-only release, and since 2013, Scratch 2 is available both online and as an application for Windows, OS X, and Linux. The source code of Scratch 1.x is released under the GPLv2 license and Scratch Source Code License.

Scratch Features and Benefits

Early programming languages were too difficult to use because of their complicated syntax, and programming was usually introduced with activities and tasks that were not appealing to children, like creating lists of prime numbers or simple line drawings.

Scratch visual programming is based on a collection of graphical programming blocks that can be snapped together to create programs, a bit like Lego blocks. It is easy to start experimenting simply by tinkering with the blocks, snapping them together in different combinations and sequences. There is no traditional programming language syntax in Scratch. The dev team behind Scratch promotes three core design principles: make it more tinkerable, more meaningful, and more social than other programming languages.

Scratch projects can easily be uploaded to the Scratch website. Once a project is on the website, anyone can run it in their browser, comment on it, vote for it or download it to view and revise the scripts.

Scratch is available in more than 40 languages, and is used in more than 150 different countries.

Getting Started with Scratch

If you would like to give Scratch a try, it is very easy. Just open the Scratch web site, click on the Create link, and there you go. The Program editor is ready for use, without user registration. Clicking the globe icon in the toolbar, you can select your desired language and start experimenting with Scratch.

Installing Scratch on Your Computer

You can easily install Scratch 2 Offline Editor to work in Scratch without an internet connection. You can find the download at the Scratch web site. Scratch 2 Offline Editor requires Adobe AIR to run, so check if you are running the latest version of it on your computer.

Scratch 2 Offline Editor is available for Windows, Mac OS, and Linux operating systems.

Scratch User Interface

The upper left area of the screen is the stage area that displays the results. The stage uses x and y coordinates with 0;0 being the stage center. The bottom left area, below the stage, displays the Sprites available in the project. Sprites are active graphic objects in Scratch. Users can draw their own Sprite manually in the provided editor, choose a Sprite from the Scratch library, or import a picture from a camera or clip art.

When a Sprite is selected in the bottom left area, blocks of commands can be applied to it by dragging them from the Blocks Palette onto the right area of the screen.

Clicking the globe icon in the toolbar, you can select your desired language. Also, clicking the question mark on the panel to the far right opens the help section with step-by-step tutorials, "how to" section, and Blocks reference. These tutorials will get you programming in Scratch in no time, so be sure to go through them.

Scratch Resources

Since Scratch is widely used in schools and education, you should have no trouble finding Scratch learning resources online. The best place to start learning is to go through the tutorials included with Scratch.

The official Scratch website features many uploaded projects that you can run and tweak, you can check out how they work, and modify them — remix them.

On the other hand, you can find interesting Scratch lessons and learning courses tailored for children online, which can be useful if you are an educator.

Free Online Courses

Free online courses are a good way to get a real-life feel for how Scratch performs and what it can do, but you should really go through the included tutorials first. These included tutorials are an excellent starting point for understanding Scratch programming. There are not that many Scratch interactive courses available, because of the simplicity and ease of use of Scratch, it is mostly self-explanatory.

Additional Resources

Most of the additional resources for Scratch are available from the Scratch website and from the Scratch Wiki. ScratchEd is an online community of Scratch educators with many useful resources.

If you are ready to start using Scratch and you need additional useful resources, please check out some of the following:

Of course, there are many other Scratch resources online, so finding what you need should not be a problem.

Get Young People Into Coding

Scratch is a great system for getting young people interested in and learning about programming. Use the resources we've discussed here to get the young people you know started in the world of computer programming.

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 is a modern implementation of the Smalltalk programming language from eXept Software AG. eXept, a software development company, uses Smalltalk/X to develop all of their commercial software products. However, eXept has made Smalltalk/X free for anyone to use to develop both free and commercial applications.

Since eXept uses Smalltalk/X to develop their own commercial applications, Smalltalk developers who use the platform enjoy a certain degree of certainty that it will enjoy ongoing development and bug fixes since eXept depends on its ongoing.

What is Smalltalk/X?

Smalltalk/X (ST/X) is a complete integrated development environment (IDE) and Smalltalk-language implementation. It includes everything you need to develop and deploy applications using the Smalltalk programming language.

ST/X includes a unique graphical user interface (GUI) designed to make Smalltalk easy-to-use. ST/X development involves heavy use of mouse-clicks and contextual menus to create code, and projects are created and managed as complete bundled packages rather than individual text files. With the noteworthy exception of GNU Smalltalk, virtually all Smalltalk implementations have embraced this GUI-based development model beginning with some of the first implementations of the language dating back to the early 1980s.

History of Smalltalk/X

ST/X was created by Claus Gittinger, a co-founder of eXept who continues to push forward the development of ST/X to this day. Gittinger was part of the earliest round of developers outside of Xerox Palo Alto Research Center (PARC) to be exposed to Smalltalk in 1981 with the initial limited release of Smalltalk-80 Version 1.

Having no way to purchase a Smalltalk implementation — a very costly endeavor at the time — Claus set about creating his own Smalltalk implementation. He succeeded in doing so in the late 1980's and settled on the name Smalltalk/X around the same time.

For the next few years, Claus continued to develop ST/X in his spare time as a hobby project for personal use. However, in 1994 Claus and several other developers came together and founded ACC Software with the intention of using ST/X as the firm's primary software development platform. As a result, development of ST/X progressed much more rapidly in the following years.

ACC, later renamed eXept, distributes ST/X for free. However, the software is not open-source and eXept retains all intellectual property rights to the application. ST/X users are limited to maintaining one functional copy of the software and one backup copy. At the same time, developers who wish to contribute to the software are encouraged to get in touch with eXept to express interest in becoming involved.

Installing Smalltalk/X

Smalltalk/X is available for Linux and Windows computers. You can download a copy of ST/X directly from eXempt.

The application is downloaded as an archived file. To install the application on a Windows computer follow these steps:

  • Extract all of the files from the archive to the directory where you want the application files to be located.
  • Open up the directory containing the extracted files and go to the \projects\smalltalk directory.
  • Run the file named stx.exe.

After accepting the applicable licensing the Smalltalk/X development environment will be launched on your system.

For Linux systems, you will download a compressed tar file (TGZ). Extract it where you want to install it; it will create a subdirectory stx. See the file HOW_TO_COMPILE for further information.

Smalltalk/X Resources

The Smalltalk dialect used in ST/X is very close to the original Smalltalk-80 and other major modern Smalltalk implementations with a few differences. The internet is replete with free tutorials and books purporting to teach Smalltalk-80. In our Smalltalk Resource Guide we introduce some of the best Smalltalk-80 resources available today and those resources should be high on your list for learning how to code in Smalltalk.

Learning to use Smalltalk/X

The most comprehensive source of Smalltalk/X knowledge is the Help documentation that is packaged with ST/X. After installing ST/X you can access this documentation by opening the application and clicking on Help on the menu bar. Then select "Documentation on Smalltalk/X" from the available options in the Help drop-down menu.

Within the Smalltalk/X documentation you will find a wealth of information you can use to get started as a Smalltalk/X developer. A great place to start is the Teaser for Newcomers: Show me what is Cool in 30 Minutes. This short tutorial will introduce you to the ST/X workspace, walk you through a 5-minute version of the classic "Hello World" exercise, and give you a crash course in Smalltalk syntax.

Once you've worked your way through the newcomer material, select the Reading list option from the main documentation page. From the reading list you can access a Getting Started document (also available from the main documentation page and listed as Information for a Smooth Start) and a Smalltalk Tutorial that will go a long way toward helping you become a competent user of ST/X, and more familiar with the Smalltalk programming language in a general sense. The Introduction to Smalltalk (Language Tutorial) is another great way to grow more familiar with the language within the specific context of the ST/X IDE.

Finally, follow the link to More literature from the Reading List to find recommended texts. Many of these are included in PDF format along with ST/X and can be accessed directly from the application by selecting the appropriate links.

Sample the Help Documentation Online

The great thing about going through the ST/X resources within the ST/X IDE is that code samples can be run without switching to a different application. In addition, you have access to all of the information in the Help documentation even if you're working without an internet connection. However, if you do want to sample these materials online before downloading ST/X they can be found hosted online by eXept:

One additional resource that is particularly useful is a recording of a presentation given by Claus Gittinger, ST/X author, in 2011. You can view the presentation, A Guided Tour Through Smalltalk/X, online.

Is Smalltalk/X for You?

Smalltalk/X is a powerful modern Smalltalk implementation. It may be the only Smalltalk implementation that is actively used by the developer on a daily basis to develop commercial software. As a result, what Smalltalk/X may lack in high-profile web presence, it makes up for with documented usefulness. The integrated tutorials and help documentation are a very nice touch making Smalltalk/X one of the most user-friendly platforms for new Smalltalk developers.

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 is an excellent free ebook 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 frameworks, 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.


Other Interesting Stuff

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?"


Text written by Jon Penland with addition content provided by Nermin Hajdarbegovic. Compiled and edited by Frank Moraes.