Racket
Racket je univerzálny, multiparadigmatický programovací jazyk, založený na dialekte Lispu Scheme. Bol navrhnutý ako platforma pre vytváranie a implementáciu programovacích jazykov. Používa sa aj na skriptovanie, vzdelávanie v oblasti informatiky a výskum. Názov Racket sa používa nielen na označovanie samotného programovacieho jazyka aj na označovanie celej rodiny programovacích jazykov a nástrojov podporovaných Racketom.
Základný Racket je známy pre jeho rozšírený makro systém, ktorý povoľuje vytváranie vnorených a doménovo-špecifických jazykov, jazykových konštrukcií (triedy, moduly, …) a samostatných dialektov Racketu s rôznou sémantikou.
Ide o slobodný a otvorený softvér rozširovaný pod licenciami Apache 2.0 a MIT. Rozšírenia a balíčky, ktoré napíšu členovia komunity môžu byť nahrané do Správcu balíčkov Racketu.
Vývoj[upraviť | upraviť zdroj]
V polovici deväťdesiatych rokov minulého storočia založil Matthias Felleisen korporáciu PLT. Najprv to bola výskumná skupina, po krátkom čase sa z nej však stal projekt orientovaný na vytváranie pedagogických materiálov (ako lekcie, úlohy, projekty, softvér,…) pre začínajúcich programátorov.
V januári 1995 sa skupina rozhodla vyvinúť vzdelávacie programovacie prostredie založené na Scheme. Matthew Flatt z libscheme, wxWidgets a niekoľkých ďalších voľných systémov spravil nahrubo prvú verziu MrEd, originálneho virtuálneho stroja pre Racket.
Počas nasledujúcich rokov, tím zložený z Flatta, Robbyho Findlera, Shrirama Krishnamurthiho, Cormaca Flanagana a ďalších vytvorili programovacie prostredie pre začínajúcich programátorov v Scheme a výskumné prostredie pre soft typing nazvané DrScheme. Hlavný vývojový jazyk, ktorý tento DrScheme podporoval sa nazýval PLT Scheme.
Tím medzitým začal organizovať workshopy pre stredoškolských učiteľov a začali ich učiť funkčné programovanie a navrhovať programy. Terénne testy s učiteľmi a ich študentmi im poskytli základné indície ako smerovať vývoj. Počas ďalších rokov pridalo PLT mnoho ďalších inovácií do DrScheme, vytvárajúc z neho kvalitné prostredie pre pegogické vytváranie programov. Napísali a vydali aj ich prvú učebnicu “Ako navrhovať programy”.
Vyšlo aj “The Racket Manifesto”, ktoré popisuje motívaciu, ktorá viedla k vývoju Racketu, vyhodnocuje ho a opisuje možnosti budúcich vylepšení.
Programovacie prostredie[upraviť | upraviť zdroj]
Jazyková platforma poskytuje self-hosted IDE nazvané DrRacket, webový server, grafické používateľské rozhranie a ďalšie nástroje. Keďže ide o skriptovací nástroj s knižnicami, môže byť použitý aj na skriptovanie unixového shellu. Dokáže parsovať argumenty z príkazového riadka a spracovať externé nástroje.
DrRacket IDE[upraviť | upraviť zdroj]
DrRacket (pôvodne DrScheme) sa používa najmä v úvodných informatických kurzoch, ktoré učia Scheme alebo Racket. Je obľúbený najmä pre jeho jednoduchosť a atraktivitu pre programátorov - začiatočníkov. IDE bolo pôvodne vytvorené na použitie s TeachScheme! projektom (teraz už ProgramByDesign), čo bol projekt niekoľkých univerzít na vzbudenie záujmu o štúdium iinformatika u stredoškolákov.
Editor poskytuje zvýrazňujúcu sa syntax a run-time chyby, párovanie zátvoriek, debugger a algebraický stepper. Jednou z jeho pre študentov priateľských vlastností je, že obsahuje podporu na niekoľkých “jazykových levelov”, teda študent začiatočník, pokročilý študent a pod. Ďalej má integrovanú podporu knižníc a sofistikované nástroje na analýzu pre pokročilejších programátorov. Naviac, modulovo-orientované programovanie je podporované modulovým prehliadačom, podporov refaktorovania a ďalšími vylepšeniami. Poskytuje integrovaný, kontextovo-senzitívny prístup k širokému hyperlinkovanému pomocnému systému nazvanému “Help Desk”.
Je k dispozícii pre Windows, MacOS, Unix a Linux.
Aplikácie a praktické využitie[upraviť | upraviť zdroj]
Racket bol navrhnutý ako jazyk so všeobecným využitím na vytváranie systémov. Teda distributívna verzia Racketu obsahuje rozsiahlu knižnicu, ktorá pokrýva systémy a sieťové programovanie, web development, jednotné prostredie k podliehajúcemu operačnému systému, dynamické prostredie pre cudzie funkcie (foreign function interface), niekoľko rôznych typov regulárnych výrazov, lexikálne a parsovacie generátory, logické programovanie a úplný framework pre grafické používateľské rozhranie.
Racket má aj rôzne vlastnosti praktické pre komerčný jazyk, napríklad schopnosť kompilovať samostatné spustiteľné súbory pod operačnými systémmi Windows, MacOS a Unix, unit testing framework a profiler a debugger obsiahnuté v integrovanom vývojovom prostredí (IDE).
Využíva ho niekoľko komerčných projektov a webových aplikácií. Napríklad stránka Hacker News beží na Arcu, ktorý bol vytvorený v Rackete a Naughty dog ho využíva ako skriptovací jazyk v niekoľkých videohrách.
Používa sa aj na výučbu algebry pre študentov cez herný dizajn v Bootstrap programe.
Ukážka kódu[upraviť | upraviť zdroj]
Takto vyzerá triviálny hello world program:
#lang racket
"Hello, World!"
Zbehnutím tohto programu dostaneme výstup:
Hello, World!
Tu je trochu menej triviálny program, ktorým získame Serpinského trojuholník s hĺbkou 8:
#lang racket
(require 2htdp/image)
(let sierpinski ([n 8])
(if (zero? n)
(triangle 2 'solid 'red)
(let ([t (sierpinski (- n 1))])
(freeze (above t (beside t t))))))
Používaním #lang príkazu zdrojový kód môže byť napísaný v rôznych dialektoch. Tu je ukážka programu pre faktoriál napísanom v Typed Racket, ktorý je staticky typovaný:
#lang typed/racket
(: fact (Integer -> Integer))
(define (fact n)
(if (zero? n) 1 (* n (fact (- n 1)))))
Webové odkazy[upraviť | upraviť zdroj]
- Oficiálna stránka (v angličtine)
Zdroje[upraviť | upraviť zdroj]
Tento článok je čiastočný alebo úplný preklad článku Racket (programming language) na anglickej Wikipédii.