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

Linux E X P R E S, Scheme

Konference Cloud computing v praxi

Scheme

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


reklama

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

Top články z OpenOffice.cz

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

Přidat názor

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



 
 

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


Soutěž - reproduktory Trust

Redakční blog

Redakce

Redakce, 21. prosinec

Pište pro LinuxEXPRES

Baví vás Linux? Pište o něm, není to nic těžkého. LinuxEXPRES hledá nové autory.


Pavel Fric

Pavel Fric, 23. říjen

Nové motivy pro přehrávač Sayonara

Pomozte rozšířit možnost měnit vzhled programu za běhu


Pavel Fric

Pavel Fric, 28. únor

Lollypop


Všechny blogy »