Hlavní navigace

Squeak: návrat do budoucnosti (1)

9. 2. 2004
Doba čtení: 4 minuty

Sdílet

V tomto seriálu se seznámíme s programovacím jazykem Smalltalk a jeho implementací Squeak. S prostředím, v němž pojem open source není záležitostí licence, ale funkčnosti.

Přestože se budeme zabývat programovacím jazykem Smalltalk, neuvidíte z něj v tomto dílu ani čárku. Smalltalk totiž není zdaleka jen programovací jazyk. Je to celé prostředí s některými charakteristikami samostatného operačního systému. Nejdříve se seznámíme s tím, co mu dává naprosto unikátní vlastnosti, s jeho architekturou.

Smalltalk patří do rodiny jazyků, jež jsou překládány do mezikódu, který je pak interpretován virtuálním strojem. V případě Smalltalku se tomuto mezikódu říká bytecode. Má zásobníkovou architekturu a v podstatě skoro vůbec nic neumí. Pár jednoduchých operací se zásobníkem, občas řekne interpretu, že je potřeba si někam odskočit, a to je asi tak vše. Nenajdete v něm nic podobného sčítání, násobení ani nic jiného, co by zavánělo lopatou. Kromě skoků na běžné metody se totiž v bytekódu vyskytují i volání tzv. primitivních metod. Ty jsou vykonávány v útrobách virtuálního stroje. Ze zásobníku si vezmou parametry a na jeho vrchol vrátí výsledek. Primitivních metod je celá řada. Od již zmiňovaného sčítání přes čtení klávesnice až po práci se sockety.

Smalltalk je čistě objektově orientovaný jazyk. Všechno je tedy objekt, a proto vše může být stejným způsobem uloženo v paměti. Stará se o to objektová paměť. Každý objekt je v ní identifikován svým ukazatelem a mimo jiné obsahuje hodnoty svých instančních proměnných, což jsou většinou ukazatele na další objekty. Objektová paměť poskytuje interpretu pět operací. Přístup k instančním proměnným a změnu jejich hodnoty, přístup k ukazateli na třídu daného objektu, vytvoření nového objektu a zjištění počtu instančních proměnných. O rušení objektů se stará garbage collector.

Prostředí Smalltalku tedy sestává ze dvou hlavních souborů. Prvním je poměrně malý virtuální stroj a druhým je tzv. image, což je obraz objektové paměti. Zarazilo vás, že zde chybí kompilátor, debuger, linker, knihovny, a kdo ví, co ještě? Ve skutečnosti zde nechybí vůbec nic, ba naopak.

Celé prostředí Smalltalku je totiž naprogramováno samo v sobě. Kompilátor Smalltalku je součástí jeho samotného a je interpretován jako jakýkoliv jiný program v rámci virtuálního stroje. Editor, v němž se píší zdrojové kódy, je napsán ve Smalltalku, celé grafické prostředí, v němž se pracuje, je napsáno ve Smalltalku. Ale tím to ještě nekončí. Interpret Smalltalku má pouze jedno vlákno. Přesto Smalltalk zvládá multitasking levou zadní. To je možné jen díky tomu, že Smalltalk obsahuje dokonce i vlastní plánovač procesů, který je samozřejmě také napsán ve Smalltalku.

Tato architektura má celou řadu velmi příjemných důsledků. Pokud chcete Smalltalk přenést na jinou platformu, stačí, když pro ni upravíte virtuální stroj. Ten si pak načte image, která je na platformě naprosto nezávislá, a celý systém vypadá, běží a chová se úplně stejně a je úplně jedno, jestli virtuální stroj běží na Linuxu, Windows, MacOS nebo třeba na kapesním počítači. Všude budete mít k dispozici stejné prostředí s naprosto stejnými vlastnostmi. Dokonce ani není nutné, aby virtuální stroj běžel pod nějakým hostitelským operačním systémem.

Protože vše ve Smalltalku jsou objekty, i metody jsou samozřejmě objekty. Bez výjimky máte přístup k jejich zdrojovým textům, můžete je libovolně upravovat a znovu překládat. Za plného provozu, bez restartování. Za běhu tak můžete měnit libovolnou část Smalltalku včetně plánovače procesů nebo definice i těch nejzákladnějších tříd, jako je např. Number. Když vám to udělá radost, můžete si zkusit prohodit true a false. Zkrátka vaší fantazii, schopnostem a zvrácenosti se meze nekladou. Přitom se nejedná o nic složitého. Na čtyři, pět kliknutí se dostanete k definici jakékoliv metody.

Jakýkoliv program v rámci Smalltalku můžete zavolat, upravit nebo smazat, použít z něj cokoliv, co se vám právě hodí, zkrátka nad celým systémem máte absolutní kontrolu. Vzhledem k tomu, že celé vývojové prostředí je vytvořeno ve Smalltalku a běží samo v sobě, může to samé, co děláte vy, dělat i libovolný program. Třeba i upravovat sám sebe.

Kromě jádra a základních vývojových prostředků si s sebou Smalltalk nese i mnoho dalších více či méně užitečných programů. V image jeho implementace Squeak naleznete skoro vše, co vám přijde na mysl. Od šachů přes webový server až po syntézu mluvené řeči.

Samotný jazyk je až neuvěřitelně jednoduchý a velmi lehce čitelný. Nezná dokonce ani pojmy, jako jsou řídící struktury (if, for, while…). Jeho typová kontrola je natolik obecná a elegantní, že vlastně ani žádnou nemá. Přesto jeho naučení nevyžaduje tak zásadní změnu v myšlení, jako je tomu u funkcionálních nebo logických jazyků. Pochopit jeho základy vám nezabere více než několik minut.

CS24_early

Pokud vás tento letmý nástin vlastností Smalltalku zaujal, pak vězte, že jeho historie je neméně zajímavá a v tom, jak ovlivnil vývoj osobních počítačů, se mu vyrovná jen máloco. O tom ale až v některém z pokračování tohoto seriálu.

Odkazy:

www.whysmalltal­k.com
www.squeak.org
www.comtalk.net

Byl pro vás článek přínosný?