Konceptuálně o Smalltalk
Smalltalk je čistě objektově-orientovaný jazyk. Na rozdíl od Javy, C# a dalších hybridních jazyků poskytuje jednoduchou syntaxi, která nemá problém se vejít na pohlednici:
Tohle je veškerá syntaxe, kterou potřebujete znát k vývoji enterprise systémů založených na objektově-orientovaných konceptech. Hlavními z nich jsou:
- objekt,
- zpráva,
- polymorfismus (plný polymorfismus, neomezený jen dědičností!)
Dalšími koncepty jsou:
- třídy (pro znovupoužitelnost a generalizaci),
- dědičnost,
- jmenné prostory, balíčky a další kategorizační prostředky.
Ve Smalltalku je všechno objekt, dokonce si s čísly se pracuje jako s plnohodnotnými objekty:
9 + 6
znamená “pošli zprávu + objektu 9 s argumentem 6″. Třídy jsou také plnohodnotnými objekty, tudíž je podporována plná reflexe i upravování tříd za běhu (on-the-fly).
Koncept a syntaxe Smalltalku pochází z 80. let 19. století. Díky konceptuálně čistému a jednoduchému návrhu bylo a je možné implementovat všechna, dokonce i ty nejsložitější, rozšíření a řešení pomocí této “syntaxe na pohlednici” a současně dosáhnout čistoty a jednoduchosti. Některé příklady řešení ve Smalltalk:
- Seaside: čistě objektově-orientovaný web framework
- Distribuované programování
- Objektově-relační mapování
- XML serializace
Správné používání Smalltalku se promítá v systémech, které jsou flexibilní a snadno se udržují, a tím podporují v dnešní době velmi oblíbený agilní vývoj.
Smalltalk lze nejlépe využít jako živý systém (Většina implementací běží jako živý systém, ačkoliv nemusí, například GNU Smalltalk je založen na skriptování.): obraz běžící na virtuálním stroji, obdobně jako Java. Nicméně ve Smalltalku, systém je programován za běhu (on-the-fly), takže můžete měnit běžící systém a to bez nutnosti rekompilace nebo restartu.
Přestože Smalltalk není main-stream jazykem, rozhodně není off-topic. Většina dnešních objektově-orientovaných jazyků může být jistém smyslu považována za podmnožinu Smalltalku zanechávajícího ohromný odkaz. Například Objective-C je velmi podobný Smalltalku, ale “všechno není objektem”, takže syntaxe je komplikovanější a obsahuje koncepty, které jsou zaměřeny na implementaci a optimalizaci, což stírá koncepční srozumitelnost. Java, C#, Ruby a ostatní pomalu dospívají k schopnostem Smalltalku, avšak si sebou nesou přítěž ve formě své syntaxe a optimalizací. Tato situace je z větší části důsledkem vývoje hardware. Dnes už není tak častá potřeba programování zaměřeného na optimalizaci, zatímco programování zaměřené na koncepty je diskutováno víc a víc…
Smalltalk v CCMi
- Učíme Smalltalk naše studenty bakalářského programu v předmětech BIE-OMO (anglická verze) a BI-OMO (česká verze). Kurz je postaven vynikajícím kurzu prof. Nierstrasze.
- Několik našich bakalářských prací se zaměřuje na Smalltalk.
- Používáme Smalltalk jako prototypovací jazyk při práci na projektech.
- Používáme open-source implementaci
Další informace
- CCMi’s wiki stránka o Smalltalku
- Knihy od Stéphena Ducasse (zdarma)
- Learnable Programming — Designing a programming system for understanding programs — Článek k pochopení proč může být syntaxe Smalltalku lepší než Cčkovská.
- Today’s Smalltalk: A Second Look At The First OO Language (článek)
- What is Object Oriented Programming: A Critical Approach (článek)
- Dan Ingalls: Object-Oriented Programming — Přednáška z roku 1989, která je nyní aktuální…
- Swimming with the Fish — Krátká úvaha o programování in Smalltalk
Pharo
- Pharo: Alive and Kicking — přednáška z návštěvy Stéphana Ducasse na FIT v prosinci 2013
- Pharo is Yours — přednáška Stéphana Ducasse