Czym jest Smalltalk i dlaczego warto go poznać
Smalltalk to nie tylko język programowania — to całe środowisko, filozofia i sposób myślenia o oprogramowaniu. To w Smalltalk po raz pierwszy zaimplementowano programowanie obiektowe w formie, którą znamy dziś. Klasy, obiekty, dziedziczenie, polimorfizm, hermetyzacja — wszystko to zostało spopularyzowane (a w wielu przypadkach wynalezione) w Smalltalk. Jeśli piszesz w Javie, C#, Pythonie, Ruby albo dowolnym innym języku obiektowym — jesteś dłużnikiem Smalltalk.
Ale Smalltalk to coś znacznie więcej niż “pierwszy język OOP”. To środowisko, w którym kod jest żywy — możesz modyfikować działający program w runtime, przeglądać i edytować klasy, debugować i testować, wszystko bez restartu. IDE Smalltalk (image-based environment) to koncepcja, której żaden współczesny edytor nie dorównał pod względem interaktywności.
Dlaczego warto poznać Smalltalk w 2026? Bo to najlepszy sposób na zrozumienie, czym naprawdę jest programowanie obiektowe — nie w wersji “Java z getterami i setterami”, ale w oryginalnej, czystej wizji Alana Kaya. I bo Smalltalk wciąż jest używany w produkcji — głównie w systemach finansowych, gdzie jego stabilność i produktywność są cenione ponad “modność”.
Krótka historia i ewolucja
Smalltalk narodził się w Xerox PARC w latach 70., stworzony przez Alana Kaya, Dana Ingallsa, Adele Goldberg i innych. Kay miał wizję “Dynabook” — komputera osobistego, który byłby narzędziem do myślenia i tworzenia. Smalltalk miał być językiem tego Dynabook: prostym, potężnym i dostępnym dla każdego, nawet dla dzieci.
Smalltalk-72 był pierwszą wersją, ale to Smalltalk-80 stał się ikoniczny. Smalltalk-80 był pierwszym komercyjnie dostępnym wariantem, opublikowanym przez Xerox i udostępnionym szerokiej społeczności. To ta wersja wpłynęła na twórców Javy, Ruby, Pythona i wielu innych języków. Książka “Smalltalk-80: The Language and Its Implementation” (Goldberg & Robson) to jeden z najważniejszych tekstów w historii informatyki.
Po Smalltalk-80 przyszły różne warianty: VisualWorks (ParcPlace), VisualAge (IBM), Dolphin Smalltalk, Squeak (edukacyjny, stworzony przez oryginalny zespół PARC), Pharo (nowoczesny fork Squeak) i GemStone/S (z bazą obiektową). Dziś Pharo i GemStone/S to najaktywniej rozwijane warianty, z aktywnymi społecznościami i zastosowaniami produkcyjnymi.
Kluczowe cechy i filozofia
Smalltalk jest czysto obiektowy — wszystko jest obiektem. Liczby, stringi, bloki kodu, klasy, a nawet true i false — wszystko to obiekty, które odpowiadają na wiadomości. Nie ma tu “prymitywów” jak w Javie ani “wolnych funkcji” jak w C++. Ta czystość jest kluczowa dla filozofii Smalltalk: jeśli wszystko jest obiektem, to wszystko jest jednolite.
System wiadomości (message passing) to serce Smalltalk. Nie wywołujesz metod — wysyłasz wiadomości do obiektów. 3 + 4 to nie “operator dodawania” — to wiadomość + z argumentem 4 wysłana do obiektu 3. Ta subtelna różnica ma ogromne konsekwencje: obiekty mogą odpowiadać na dowolne wiadomości, nawet te, których nie “zadeklarowano” z góry. To daje elastyczność, o której statyczne języki nie mogą marzyć.
Środowisko Smalltalk (image) to kolejna rewolucyjna cecha. W Smalltalk nie ma “plików źródłowych” w tradycyjnym sensie — cały stan systemu (klasy, obiekty, kod, dane) żyje w jednym obrazie (image). Możesz zapisać image, uruchomić go później i kontynuować dokładnie tam, gdzie skończyłeś — z otwartymi oknami, uruchomionymi procesami i pełnym stanem. To jak hibernacja, ale dla środowiska programistycznego.
Filozofia Smalltalk to “programowanie jako rozmowa z obiektami”. Nie piszesz kodu “z góry” — eksplorujesz system, wysyłasz wiadomości, obserwujesz wyniki i iterujesz. To podejście, które później nazwano “live programming” i które inspiruje narzędzia jak Jupyter notebooks czy REPL-e w nowoczesnych językach.
Gdzie Smalltalk sprawdza się najlepiej
Smalltalk wciąż jest używany w produkcji, głównie w sektorze finansowym. Firmy jak JPMorgan, Credit Suisse i wiele mniejszych firm fintech używają GemStone/S (Smalltalk z zintegrowaną bazą obiektową) do systemów transakcyjnych, risk management i back-office. Stabilność, dojrzałość i produktywność Smalltalk czynią go atrakcyjnym dla systemów, które muszą działać bez przerwy przez dekady.
Seaside, framework webowy dla Smalltalk, był pionierem w Continuation-based web development — podejściu, które później wpłynęło na frameworki jak Ruby on Rails i Seaside-inspired tools. Choć Smalltalk nie dominuje w web development, Seaside pokazał, że można budować złożone aplikacje webowe z elegancją i produktywnością.
Pharo, nowoczesny wariant Smalltalk, jest używany w edukacji, prototypowaniu i niektórych projektach open source. Społeczność Pharo jest aktywna, z regularnymi konferencjami (ESUG) i rosnącą bazą bibliotek.
Jak wygląda kod w Smalltalk
"Silnia rekurencyjnie"
silnia: n
n = 0 ifTrue: [ ^ 1 ].
^ n * (self silnia: n - 1)
"Użycie"
| wynik |
wynik := self silnia: 10.
Transcript show: 'Silnia z 10 = ', wynik printString; cr.
Składnia Smalltalk jest minimalistyczna: := dla przypisania, ^ dla return, nawiasy kwadratowe dla bloków kodu. Wiadomości są czytane od lewej do prawej, z priorytetem: unary > binary > keyword.
"Kolekcje w Smalltalk"
| liczby parzyste kwadraty |
liczby := (1 to: 100) asOrderedCollection.
parzyste := liczby select: [ :n | n even ].
kwadraty := parzyste collect: [ :n | n * n ].
kwadraty do: [ :n | Transcript show: n printString; cr ].
"Łańcuchowanie wiadomości — typowy styl Smalltalk"
(1 to: 100) asOrderedCollection
select: [ :n | n even ]
thenCollect: [ :n | n * n ]
thenDo: [ :n | Transcript show: n printString; cr ].
Kolekcje w Smalltalk są potężne — select:, collect:, reject:, inject:into: to standardowe operacje, które w innych językach pojawiły się dekady później jako filter, map, reduce.
Ekosystem i narzędzia
Smalltalk ma kilka aktywnych wariantów, każdy z własnym ekosystemem. Pharo to najaktywniej rozwijany open source Smalltalk — ma nowoczesne IDE, rosnącą bazę pakietów (przez Metacello) i aktywną społeczność. GemStone/S to komercyjny Smalltalk z zintegrowaną bazą obiektową, używany w produkcji w sektorze finansowym. Squeak to edukacyjny wariant, wciąż używany w szkołach.
IDE Smalltalk to nie “edytor tekstu z kompilatorem” — to całe środowisko. System Browser do przeglądania klas, Inspector do badania obiektów, Debugger do debugowania w runtime, Transcript do logowania, Workspace do eksperymentowania — wszystko zintegrowane i żywe. Pharo IDE kontynuuje tę tradycję z nowoczesnym UI.
Społeczność Smalltalk jest mała, ale niezwykle lojalna. ESUG (European Smalltalk User Group) organizuje coroczne konferencje. Forum Pharo i mailing listy są aktywne. To społeczność, która wie, że Smalltalk nie zdobędzie mainstreamu, ale nie przejmuje się tym — bo Smalltalk daje im produktywność, której nie znajdą nigdzie indziej.
Mocne i słabe strony
Mocne strony Smalltalk to czystość obiektowa (wszystko jest obiektem), live environment (modyfikujesz działający system), produktywność (refactoring, debugging i testowanie jest łatwiejsze niż w większości języków) i elegancja (kody Smalltalk są często krótsze i czytelniejsze niż odpowiedniki w innych językach). Smalltalk uczy myślenia obiektowego w sposób, żaden inny język nie potrafi.
Słabe strony to wydajność (interpretowany bytecode jest wolniejszy niż kompilowany kod), brak bibliotek do nowoczesnych zastosowań (ML, web3, mobile), image-based model (trudny do integracji z Git i CI/CD), i “dziwność” dla programistów przyzwyczajonych do plików i folderów. Smalltalk wymaga zmiany myślenia — i nie każdy jest na to gotowy.
Podsumowanie
Smalltalk to język, który powinien poznać każdy programista — nie po to, żeby w nim pisać na co dzień, ale żeby zrozumieć, czym naprawdę jest programowanie obiektowe. Spędź tydzień w Pharo, wyślij wiadomości do obiektów, zmodyfikuj klasy w runtime i zobacz, jak mogłoby wyglądać programowanie, gdyby było bardziej “żywe”. To doświadczenie, które zmieni twój sposób myślenia o kodzie.
Przyszłość Smalltalk jest stabilna w jego niszy. Pharo rozwija się aktywnie, GemStone/S działa w produkcji, a idee Smalltalk (live programming, message passing, image-based development) wciąż inspirują nowe narzędzia. Smalltalk nie zdobędzie mainstreamu, ale nie musi — jego wpływ jest tak głęboki, że każdy obiektowy język jest w pewnym sensie “Smalltalk-inspired”. I to jest dziedzictwo, którego nic nie wymaże.

