přejít na obsah přejít na navigaci

Linux E X P R E S, Scheme

Scheme

Lukáš Faltýnek představí Scheme, jeden z dialektů jazyka Lisp, o kterém psal v jednom z minulých článků .


Scheme je velmi jednoduchý jazyk a jak se říká, dá se naučit i během několika hodin. Vždyť celá specifikace jazyka má kolem 50 stránek. Srovnáme-li to s LISPem, který jich má pře 1000, je to skutečně málo.

Na počátku zrodu jazyka Scheme stála potřeba Guye Steela a Geralda Sussmana z MIT (Massachussetský technický institut), vyzkoušet si některé aspekty modelu aktorů, který v roce 1973 veřejnosti představil Carl Hewitt. Protože LISP se k tomuto příliš nehodil, bylo potřeba navrhnout nový jazyk. Ten byl nakonec implementován v LISPu. A dokonce i syntaxí LISP hodně připomínal. Byl však o dost jednodušší, a odstraňoval některé z nepříjemných vlastností LISPu.

Protože autoři z počátku o navrhovaném jazyku smýšleli jako o pouhém prostředku, k vyřešení jejich úlohy, byl jazyk velmi jednoduchý. Jak se ale po chvíli ukázalo, jeho jednoduchost byla kladem. A v jazyce se velmi rychle dali napsat prototypy rozsáhlých projektů.

Původní název jazyka byl Schemer. Po vzoru dobových jazyků pro umělou inteligenci Planner a Conniver. Protože však autoři používali operační systém ITS, který limitoval délku souborů a adresářů šesti znaky, byly vždy soubory pro Schemer uloženy v adresáři Scheme. Z tohoto název Scheme, který tak nahradil Schemer.

Poprvé byl jazyk Scheme veřejně popsán v roce 1975 v práci Sussmana a Steela " Scheme: an interpreter for extended lambda calculus". V roce 1976 pak Sussman a Steele napsali dvě publikace ""LAMBDA: The Ultimate Imperative" a "LAMBDA: The Ultimate Declarative", v nichž popsali, jak řešit běžné programové konstrukce.

V roce 1978 byl jazyk Scheme standardizován. Základem se stala "Revidovaná zpráva o Scheme - dialektu LISPu. Tato zprava popisovala vývoj jazyka, poté co byla MIT implementace rozšířena o podporu inovativního kompileru. Další zpráva, která byla nazvána "Revize revize reportu Scheme, neboli neobvyklý LISP" byla publikována v roce 1985. Tradice revizi revize revize se zachovala a dnes je jiz na světě poslední pátá revize z února roku 1998.

K tomu, aby se člověk jazyk naučil, je potřeba kvalitní literaturu. Česká skripta od Davida Skoupila vhodnou knihou jsou. A tak je každému zájemci o Scheme doporučuji k přečtení.

Implementací Scheme existuje mnoho. A jak to již bývá existují implementace jak komerční, tak nekomerční. Bohužel mnoho jsem jich nezkoušel. Pro Linux bych doporučil QScheme, které je zdarma. Vyhovuje poslední páté revizi jazyka a má rozhraní pro knihovnu GTK. Jako multiplatformní implementaci bych pak doporučil DrScheme.

Základem jazyka Scheme jsou tečkové páry. Tečkový pár vypadá např. takto (1 . 2) a může například reprezentovat 2D souřadnice, imaginární číslo, nebo české a cizí slovo ve slovníku. Stejně jak tomu bylo u LISPu, tak se první část nazývá CAR a druhá CDR. Zacházení se seznamy je pak ve Scheme podobné jak v LISPu.

Scheme nerozlišuje mezi funkcí a hodnotou. Funkce může být vytvořena i třeba během výpočtu. Funkce vzniká vyhodnocením lambda kalkulu (výrazu). Pro nadefinování funkce pro více použití se používá speciální forma define. Cykly ve Scheme neexistují a jejich úlohu přebírá použití rekurze. Typickým příkladem rekurze je níže v příkladu uvedený výpočet faktoriálu.

Po zvládnutích těchto skript by vám neměl dělat žádný problém ani rozšiřující jazyk Skript-fu, který naleznete v GIMPu.

Pro vyhodnocování podmínek nabízí Scheme tři speciální formy. If, case a cond. If se až na formu zápisu nijak neliší od if, které používá většina ostatních jazyků. Forma cond dovoluje použít libovolné množství podmínek a návratovou hodnotu pro každou z nich. Forma case je podobná formě cond postupně vyhodnocuje seznamy a pokud nalezne odpovídající prvek, vrátí jeho příslušnou hodnotu. Slíbené příklady tradiční Hello World a faktoriál mohou ve Scheme vypadat takto.

Ukázka programu Hello, World!: 
(define (hello-world)
(display "Hello, World!")
(newline))
Program faktoriál
(define (fakt n)
(if (= n 0) 1
(* n (fakt (- n 1)))))

S praktickým využitím jazyka Scheme se dnes setkáme převážně na mnoha středních a vysokých školách. Další použití nachází jako rozšiřující jazyk v grafickém nástroji GIMP (script-fu) nebo textovém editoru Emacs.

Nahoru

Odkazy

Příspěvky

Scheme
16. 03. 2006, 15:43:35
Odpovědět  Odkaz 
Jeee, muj oblibeny jazyk.
Scheme
FMX 3. 12. 2008, 19:24:55
Odpovědět  Odkaz 
Zdravím, díky za pěkný článek k tomuto zajímavému jazyku.

Pokud by někdo měl zájem. Můžu jen doporučit skripta Olomoucké univerzity Palackého:
http://phoenix.inf.upol.cz/esf/ucebni/pp1a.pdf
http://phoenix.inf.upol.cz/esf/ucebni/pp1b.pdf

Popřípadě prezentace jednoho z vyučujících:
http://phoenix.inf.upol.cz/~dostal/xpap1.html

FMX

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Lukáš Faltýnek

Lukáš Faltýnek

Vystudoval informační management na Univerzitě Hradec Králové. Pracuje jako analytik/programátor. Láskou k počítačům vzplanul v roce 1986, kdy dostal svůj první počítač Atari 800 XL. S Unixem se poprvé setkal před dvanácti lety. Chvíli nato pak s Linuxem, který si pro jeho svobodu zamiloval. Je ženatý a má dvě děti. Mezi jeho koníčky patří literatura, kinematografie a cestování.


  • Distribuce: Ubuntu

| blog