Learn SMALLTALK with Real Code Examples

Updated Nov 20, 2025

Explain

Smalltalk emphasizes message passing between objects instead of traditional function calls.

It supports a live programming environment with immediate object manipulation and testing.

Used historically in education, research, GUI development, and rapid prototyping.

Core Features

Classes and metaclasses

Blocks (closures) and control structures

Inheritance and polymorphism

Collections and iterators

Debugger and inspector tools

Basic Concepts Overview

Objects and message passing

Classes and metaclasses

Blocks (closures)

Collections and iteration

Image-based environment

Project Structure

Image file containing all objects and classes

Changes file storing incremental code changes

Package or module organization (Pharo/Squeak)

Test scripts executed in workspace

Optional external files for persistence

Building Workflow

Create class in the system browser

Define methods in the class

Instantiate objects and send messages

Use workspace to test code interactively

Inspect objects and debug in live environment

Difficulty Use Cases

Beginner: experimenting with objects and messages

Intermediate: creating classes and small GUI apps

Advanced: developing frameworks or domain-specific languages

Expert: extending the VM or image-level tools

Comparisons

Unlike Java/C++, fully dynamic and pure OOP

Image-based vs file-based languages

Message passing vs function calls

Live environment vs compiled batch code

Reflective and extensible vs static languages

Versioning Timeline

1972 – Smalltalk-72

1973 – Smalltalk-73

1977 – Smalltalk-80 standardization

1980s – GUI adoption and commercial systems

1990s–2000s – Pharo, Squeak, VisualWorks modern implementations

Glossary

Message: invocation sent to an object

Block: a closure or anonymous function

Image: snapshot of all objects and classes

Inspector: runtime object viewer

Workspace: interactive coding environment