Smalltalk

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:

smalltalksyntaxTohle 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:

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 implementacipharo-logo

Další informace

Pharo

Gemstone (plně OO databáze)