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ť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ť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ť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”.
Aplikácie a praktické využitie
upraviť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ť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ť- Oficiálna stránka (v angličtine)
Zdroje
upraviťTento článok je čiastočný alebo úplný preklad článku Racket (programming language) na anglickej Wikipédii.