Často si říkám – čím to, že většina nadčasových počinů zůstává mnohdy bez povšimnutí. A to i přesto, že nás mohou v mnohém obohatit a výborně posloužit. Ve světě programovacích jazyků lze za takový nadčasový počin označit čistě objektový jazyk Smalltalk. Přestože v následujících řádcích nestihnu přiblížit všechny jeho rysy a možnosti, budu se vás snažit pro Smalltalk alespoň pozitivně naladit. Zájemci o hlubší poznání Smalltalku pak na konci článku naleznou vhodně zvolené odkazy, které jim pomohou k jeho dalšímu již podrobnějšímu poznání.
Proč se Smalltalk jmenuje Smalltalk, vysvětluje jeho tvůrce Alan C. Kay následovně. Za prvé vyjadřuje pojmenování snahu dosáhnout takového jazyka, v němž by práce co nejvíce připomínala nenáročný rozhovor. Za druhé je toto pojmenování vzdorující reakcí dobovému zvyku, kdy se pro jména systémů volila božská velkolepá jména jako Zeus, Odin, nebo Thor, přičemž samo o sobě tyto systémy toho moc neuměly. Pojmenování Smalltalk se zdálo být natolik neškodné, že pokud by skutečně něco hezkého udělal, mohli být uživatelé jen příjemně potěšeni.
Historicky hledejme počátky Smalltalku na počátku sedmdesátých let. Tehdy si v Palo Alto Research Center (PARC) firmy XEROX pohrávala Learning Research Group (LRG) pod vedením Alana Kaye s myšlenkou vyvinout levný a malý počítač. Jeho ovládání mělo být řešeno perem nebo dotykem prstů. Používat se pak měl jako dynamická kniha, která by mimo jiného, jak autoři uvádějí, nahradila školní učebnice. Od toho název Dynabook.
Protože Dynabook měl sloužit každému, od předškolních dětí až po dospělé, bylo potřeba najít jazyk, který by byl s minimálními znalostmi srozumitelný širokému spektru uživatelů. Z tehdy dostupných jazyků se jako nejpřijatelnější jevil funkcionální jazyk LISP, ale byl odmítnut pro nevyhovující zapouzdření dat. Velmi populární procedurální jazyky pak byly odmítnuty z důvodu vysoké složitosti, která narůstá s délkou kódu.
První implementace jazyka nazvaného Smalltalk-71 se dnešním verzím mnoho nepodobala. První „smalltalkovský“ systém, Smalltalk-72, byl vytvořen v roce 1972 Danem Ingallsem. Kódován byl v Basicu a dokázal zvládat základní aritmetické operace. Přes verze Smalltalk-74, Smalltalk-76 a Smalltalk-78 skončil Smalltalk u verze Smalltalk-80, jejíž implementace se používá dodnes. Pod termínem Smalltalk však nevnímáme pouze pouze programovací jazyk, ale i knihovnu tříd a vývojové prostředí. Ačkoliv jsou tyto tři zmiňované věci koncepčně odděleny, velmi blízce spolu souvisejí.
Jazyk Smalltalk je velmi malý a v porovnání s jinými jazyky toho moc nedělá. V základě umožňuje pouze definovat proměnné, přiřazovat proměnným objekty a zasílat objektům zprávy. Zvládnout tedy ve chvilce celý jazyk Smalltalk není žádný problém.
Základem „smalltalkovských“ systémů je knihovna tříd. Tato knihovna nabízí stovky znovupoužitelných tříd, se kterými se setkáme v každém „smalltalkovském“ programu. Tyto třídy dále poskytují základní funkcionalitu, která je u většiny jazyků vlastní přímo programovacímu jazyku.
Vývojové prostředí je implementováno užitím tříd z knihovny tříd. To znamená, že kód, kterým je vývojové prostředí napsáno, je sám součástí knihovny tříd. Protože jsou všechny zdrojové kódy knihovny tříd volně dostupné, jsou volně dostupné i zdrojové kódy vývojového prostředí. V praxi to znamená, že celé vývojové prostředí je výborným příkladem, jak je možno psát program ve Smalltalku. Dále je pak možno změnit si cokoliv, co se nám v prostředí nelíbí.
Tvorba samotného programu ve Smalltalku se oproti klasickým jazykům diametrálně liší. Zatímco v klasických jazycích začínáme budovat aplikaci na zelené louce, ve Smalltalku je od počátku součástí naší aplikace i vývojové prostředí. Nad tímto vývojovým prostředím pak požadovanou aplikaci vytváříme a v případě potřeby vývojové prostředí k obrazu vytvářené aplikace přizpůsobujeme. Na závěr, kdy máme aplikaci vytvořenou, odstraníme vše, co v aplikace nechceme. Na základě tohoto poznatku můžeme říct, že naše aplikace je celý Smalltalk.
Implementací Smalltalku je mnoho. Mezi nejznámější patří VisualWorks, VisualAge a Squeak. Poslední jmenovaná implementace Squeak je nabízena zdarma, a tak ji mohu vřele doporučit k vyzkoušení.
Jak je v našem seriálu zvykem, uvádíme vždy klasický příklad „Hello World“. Dnes si však nejenom „Hello World“ vypíšeme na obrazovku, ale také si ho řekneme. Dle libosti máme na výběr jestli mužským, nebo ženským hlasem. V příkladu je zvolen ženský hlas. Příklady jsou psány pro implementaci Squeak.
Ukázka programu Hello, World!:
Transcript show: 'Hello, World!'
Ukázka mluveného programu Hello, World!:
Speaker woman say: 'hello world'.
Největší využití Smalltalku v současné době nalezneme jako výukového nástroje objektového programování. A to jak pro dospělé, tak i pro děti. Další využití Smalltalku pak můžeme nalézt při tvorbě firemního i běžného softwaru.
Odkazy:
Naučte Squeak a Smalltalk své děti
Knihy věnované Smalltalku a Squeaku
Seriál na serveru www.root.cz věnovaný Smalltalku a Squeaku
Článek vyšel původně v časopisu LinuxEXPRES. Autor článku Lukáš Faltýnek.
Článek je uveřejněn s GNU FDL licencí (anglicky).
BTW hodne smalltalkovskych rysu ma Ruby, coz je ovsem dnes siroce pouzitelny jazyk (coz se bohuzel diky absenci knihoven o smalltalku rici neda). To jen tak na okraj, nemuzu si to odpustit, protoze pro mne Ruby proste rulez ;)
I o Ruby jsem napsal článek, brzy se zde objeví :-). Můžete se tedy těšit.