Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Squeak: návrat do budoucnosti (1)

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.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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.

TIB2012

       

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

Školení: SQL pro začátečníky

Kdo nezná jazyk SQL jako kdyby nebyl. Tak lze stručně charakterizovat dnešní význam SQL v IT. Pokud se chcete naučit tento jazyk, tak navštivte naše školení SQL. Školení je určené začátečníkům, a proto se začíná od skutečných základů.

Kromě samotného SQL se účastíci školení seznámí i se základy PostgreSQL, což je databáze, která se díky své shodě se standardem ANSI SQL a komfortem, který poskutuje svým uživatelům, zvlášť hodí pro výuku SQL.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 2,90

Přehled názorů

OS
PaD 9. 2. 2004 00:52
Nový
├ 
Re: OS
hkmaly 9. 2. 2004 17:23
Nový
│
└ 
Re: OS
Jakub Hegenbart 5. 3. 2006 23:34
Nový
└ 
Re: OS
H. 9. 2. 2004 17:33
Nový
:-)
Jirka 9. 2. 2004 02:38
Nový
Supr návnada
Martin 9. 2. 2004 07:31
Nový
├ 
Re: Supr návnada
BrandIt 9. 2. 2004 10:03
Nový
└ 
Re: Supr návnada
Johanka the Editor 9. 2. 2004 11:08
Nový
 
└ 
Re: Supr návnada
Pavel Křivánek 9. 2. 2004 11:17
Nový
...
ienik 9. 2. 2004 07:48
Nový
└ 
Re: ...
Pavel Křivánek 9. 2. 2004 08:13
Nový
Tak jsem se přece jen dočkal :-)
Pavel Tišnovský 9. 2. 2004 07:50
Nový
└ 
Re: Tak jsem se přece jen dočkal :-)
Pavel Křivánek 9. 2. 2004 08:01
Nový
 
├ 
Re: Tak jsem se přece jen dočkal :-)
zoul 9. 2. 2004 09:06
Nový
 
│
└ 
Re: Tak jsem se přece jen dočkal :-)
Pavel Křivánek 9. 2. 2004 09:30
Nový
 
└ 
Re: Tak jsem se přece jen dočkal :-)
ahoj 9. 2. 2004 10:50
Nový
Pochvala
me 9. 2. 2004 09:13
Nový
smalltalk je hruza
Llama 9. 2. 2004 09:22
Nový
├ 
Re: smalltalk je hruza
Jakub Trávník aka jtra 9. 2. 2004 09:59
Nový
│
├ 
Re: smalltalk je hruza
Pavel Krčmář 9. 2. 2004 10:15
Nový
│
├ 
Jazyk x knihovna
Miloslav Ponkrác 9. 2. 2004 13:43
Nový
│
└ 
Re: smalltalk je hruza
Jan Vrany 9. 2. 2004 20:34
Nový
├ 
Re: smalltalk je hruza
Divous 9. 2. 2004 11:12
Nový
├ 
Re: smalltalk je hruza
bart 9. 2. 2004 23:47
Nový
│
└ 
Re: smalltalk je hruza
Michal Kara 11. 2. 2004 10:15
Nový
└ 
Re: smalltalk je hruza
Lopot 10. 2. 2004 14:29
Nový
ridici struktury
Martin 9. 2. 2004 10:40
Nový
├ 
Re: ridici struktury
Pavel Křivánek 9. 2. 2004 11:03
Nový
└ 
Re: ridici struktury
Jan Vrany 9. 2. 2004 20:23
Nový
 
└ 
Re: ridici struktury
Stoura 17. 2. 2004 00:13
Nový
 
 
└ 
Re: ridici struktury
memphis 19. 4. 2006 20:16
Nový
Diky!
OldFrog 9. 2. 2004 10:59
Nový
Návrat do budoucnosti?
Ladislav Thon 9. 2. 2004 12:34
Nový
└ 
Re: Návrat do budoucnosti?
Pichi 9. 2. 2004 12:51
Nový
 
└ 
Re: Návrat do budoucnosti?
Ladislav Thon 9. 2. 2004 12:55
Nový
 
 
└ 
Re: Návrat do budoucnosti?
Pavel Křivánek 9. 2. 2004 13:35
Nový
Squeak vs VisualWorks vs Smalltalk/X
Jan Vrany 9. 2. 2004 20:09
Nový
Achjo
xxx-hribek-xxx 7. 4. 2009 05:40
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem