GNU Smalltalk Resources
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:
And a lot more.
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-blow 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.
Further Reading and Resources
We have more programming guides, tutorials, and infographics related to coding and general development:
Object-Oriented Programming: this article discussed a number of modern object-oriented languages.
D Programming Language Primer: all the object-oriented power of C++, but without the drawbacks.
Simula: History, Guides and Resources: learn all about the first object-oriented language.
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 C++ for a living?"