Smalltalk – w pełni obiektowy, reflektywny język programowania z dynamicznym typowaniem. Umożliwia inny sposób programowania od tego, do jakiego są przyzwyczajeni programiści używający języków obiektowych (np. Java), rozwiniętych z wcześniejszych języków proceduralnych takich jak Pascal czy C.
Smalltalk jest także biblioteką klas i środowiskiem programistycznym w jednym.
Język Pojęcie „czysto obiektowy” oznacza, że każda wartość, każda struktura danych jest obiektem i nie istnieje sztuczne rozgraniczenie wartości i obiektów. Przykładowo wyrażenie "26" tworzy instancję klasy SmallInteger, która poprzez hierarchię klas jest pochodną klasy Object. W ten sposób liczba 26 rozumie wszystkie wiadomości (messages), które są w tej hierarchii zdefiniowane i może również implementować nowe metody. Podobnie tablice nie są tworzone przy pomocy specjalnej dedykowanej składni, tylko w prosty sposób przez wysłanie do klasy Array odpowiedniej metody tworzącej instancję tej klasy, np. "Array new: 4".