Smalltalk jest w pełni obiektowym, reflektywnym językiem 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.