Az objektumorientált programozás világába új lendületet hozott a Gang of
Four (GoF) könyve, a Design Patterns. A könyv összegyűjt sok már működő
rendszerből olyan közös megoldásokat, amik például szolgálhatnak
objektumorientált program tervezésekor. Egy ilyen tervezési minta
leírásához hozzátartozik egy motivációleírás, a nehézségek és
követelmények felsorolása, a megoldás leírása UML jellegű ábrákkal és
szöveggel, illetve forráskódrészletekkel, és egy összefoglalás a
lehetőségekről, hatásokról. A könyvben a forráskódrészletek Smalltalk nyelven
is megjelentek. Ennek a néhány bekezdésnek a célja, hogy körüljárjuk, mi
indokolta, hogy a kilencvenes évek közepén kiadott könyvben nem csak az akkor
leginkább elterjedt objektumokat támogató
nyelv, a C++ szerepelt, hanem egy hetvenes években kifejlesztett, a nagy
közönség számára némileg ismeretlen Smalltalk. Későbbi tervezési mintákkal
foglalkozó könyvek között van olyan, ahol csak Smalltalk példaprogramokat
használnak.
Az egyik ok kétségtelenül a négy szerző egyike, Ralph E. Johnson, aki már
a nyolcvanas években tanítja az objektumorientált programozást,
természetesen a Smalltalk nyelv segítségével. Mégis, a könyv további három
szerzőjét valószínűleg meg kellett győznie kedvenc nyelve alkalmasságáról.
Milyen érveket használhatott tehát?
A Smalltalk már tervezésekor objektumorientált nyelv volt, ellenben
napjaink legtöbb objektumorientált programozást támogató nyelvével (C++,
Object Pascal - Delphi). Ez tiszta elvi felépítést, és tiszta fogalmakat
eredményezett. Ahogy Alan Kay, a Smalltalk fő fejlesztője mondta, "én
találtam ki az >>objektumorientált<< kifejezést, és én mondom, nem a
C++-ra gondoltam". Sőt, maga Bjarne Stroustrup, a C++ atyja mondja: "A C++
társadalom legfőbb problémája, hogy a C++-t nem úgy használja, ahogy
ajánlatos volna, hanem mint mindentudó C-t, vagy mint butított
Smalltalk-ot."
A Smalltalk felépítésekor elsőrendű szempont volt az egyszerűség. Ennek
olyan következményei vannak, mint például a láthatósági szabályok drámai
egyszerűsége a Java-hoz képest, amit sokan sokféleképpen értékelnek, de
tény, hogy rövid példaprogramokhoz sokkal elegánsabb. (Mellesleg a
láthatósági szabály védelmében igen sok cikk született a Smalltalk
társadalmon belül a Java-val szemben.)
A nyelv olyan, mint egy leegyszerűsített angol nyelv, erre egy jó példa a
"Jack pass the ball to Jill" mondat, ami Smalltalkul "Jack passTheBallTo:
Jill", vagy még inkább "Jack pass: theBall to: Jill"
A világ objektumorientált nyelvei általában megkülönböztetik az
osztályokat és az elemi típusokat, például a számok közötti műveletek
másképpen írandóak, mint az osztályokkal végzett műveletek. A Smalltalkban
akkora a tervezési elv ereje, hogy a számok közötti műveletek
precedenciájánál is erősebbnek bizonyult. Ennek az eredménye az a sokakat
zavarba ejtő mód, ahogy az aritmetikai kifejezések kiértékelődnek
Smalltalkban, de szintén ennek köszönhető a nyelv egyszerűsége és elvi
tisztasága is.
Sok egyszerű nyelv van a programozási nyelvek világában, ám nagy
többségüknek ez korlátot is szab. Nehéz Basic nyelven nagy rendszert,
például grafikus felületet kezelő programot írni. A Smalltalk jól
skálázható, mert a sok apró alkotóelem együttes ereje jól kihasználható,
és fejleszthető. Alan Kay a nyelv kifejlesztése előtt mikrobiológiával is
foglalkozott, és egy olyan rendszer elkészítése volt a célja, ami hasonlít
a sejtekre és a testre, sok alkotóelem egy konzisztens egész
szolgálatában.
Nézzük most meg a kérdést a másik oldalról: mire van szükség egy tervezési
minta leírásakor, milyen követelményeknek kell eleget tennie a nyelvnek. A
fő követelmény, hogy a példaprogram jól adja vissza a lényeget, a megoldás
ötletét. Ez minden esetben egy olyan rendszer, aminek osztályok illetve
objektumok a részesei, és a köztük fennálló kapcsolatok játsszák a
főszerepet. A példaprogramban tehát deklarálni kell osztályokat illetve
objektumokat, és világossá tenni a köztük fennálló kapcsolatokat, mint
öröklődés, aggregáció, műveleti paraméter, stb. Egy jól illusztráló nyelv
tömör és érthető.
A Smalltalk valóban tömör, és az a tapasztalat, hogy a nyelven programozni nem tudók is értik a példaprogramokat. Ennek az oka valószínűleg az, hogy a Smalltalk szintaxis annyira egyszerű, hogy a program nem rendelkezik a programozási nyelvekre általában jellemző "hókuszpókusz" jelleggel, ami a nyelvet nem ismerőket sokkal inkább a nyelv szintaxisának megértésére késztet, mintsem a program lényegének megértésére.