Hlavní navigace

Squeak: návrat do budoucnosti (1)

Pavel Křivánek

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.

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

Našli jste v článku chybu?

9. 2. 2004 0:52

PaD (neregistrovaný)

Vzdyt SmallTalk vznikal jako operacni system... akorat to v tech dobach nezvaladal hardware. Je to celkem genialni myslenka mit vsechno napsane v jednom.

Dalsi cesky web o smalltaku je www.smalltalk.cz, ale je nejaky mrtvy...



7. 4. 2009 5:40

xxx-hribek-xxx (neregistrovaný)
Pro koho je tento clanek urceny? Pro toho kdo smalltalk davno zna ci se jej uci anebo pro uplneho zacatecnika, ktery by se o nem chtel neco dozvedet.

Je treba z neceho vychazet. Ale kdyz temer kazda druha veta obsahuje latinske ci anglicke slovo pak je clanek velmi necitelny. Sam jsem s tim problemy nemel, ale ukazat to nekomu, kdo nebyl aspon na informaticke vysoke skole a neznal smalltalk ci OO tak by se po par odstavcich ztratil.

Na FIT se berou predmety jako "zaklady softwaroveho inz…



Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Vitalia.cz: Poznáte poctivé suroviny na pečení cukroví?

Poznáte poctivé suroviny na pečení cukroví?

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

120na80.cz: Jmelí je více léčivé než jedovaté

Jmelí je více léčivé než jedovaté

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA