Rebol - Rebol
Paradigma | jazykově orientované programování , výměna dat , funkční , prototypové , imperativní |
---|---|
Navrhl | Carl Sassenrath |
Vývojář | REBOL Technologies |
Poprvé se objevil | 1997 |
Stabilní uvolnění | 2.7.8 / leden 2011
|
Náhled verze | 2.101.0 / prosinec 2012
|
Psací disciplína | dynamický , silný |
OS | napříč platformami |
Licence | 2.7.8 je volně šířitelný software , 2.101.0 má licenci Apache 2.0 |
Přípony názvu souboru | .r, .reb |
webová stránka | www |
Ovlivněno | |
Self , Forth , Lisp , Logo | |
Ovlivněno | |
JSON , červená | |
|
Rebol ( / R ɛ b əl / REB -əl ; historicky REBOL ) je cross-platform výměna dat jazyk a multi-paradigma dynamický programovací jazyk navržený Carl Sassenrath pro síťovou komunikaci a distribuovaných výpočtů . To zavádí pojem dialecting : malé, optimalizované , doména-specifické jazyky pro kód a data, což je také nejvýznamnější vlastnost jazyka podle jeho návrháře Carl Sassenrath :
I když jej lze použít k programování, psaní funkcí a provádění procesů, jeho největší výhodou je schopnost snadno vytvářet jazyky nebo dialekty specifické pro doménu.
- Carl Sassenrath
Douglas Crockford , známý svou účastí na vývoji JavaScriptu , popsal Rebol jako „modernější jazyk, ale s několika velmi podobnými myšlenkami jako Lisp, protože je postaven na reprezentaci dat, která jsou poté spustitelné jako programy“ a jako jeden z vlivů JSON .
Původně byl jazyk a jeho oficiální implementace proprietární a uzavřený zdroj vyvinutý společností REBOL Technologies. Po diskusi s Lawrencem Rosenem byl tlumočník Rebol verze 3 vydán pod licencí Apache 2.0 12. prosince 2012. Starší verze jsou k dispozici pouze v binární podobě a není pro ně plánováno žádné vydání zdroje.
Program Rebol se používá k programování internetových aplikací (na straně klienta i serveru ), databázových aplikací, utilit a multimediálních aplikací.
Etymologie
Rebol byl zpočátku zkratka pro R elative E Xpression B ased O bject L anguage napsán velkými písmeny. Aby se program přizpůsobil moderním trendům v pojmenovávání jazyků, např. Změnou nahrazující historický název LISP výrazem Lisp , přestali programátoři praktikovat psaní REBOLu všemi písmeny. Sassenrath nakonec položil otázku pojmenování do debaty komunity na svém blogu. V následném psaní Sassenrath přijal konvenci psaní názvu jazyka jako Rebol .
Dějiny
Poprvé vydán v roce 1997, Rebol byl navržen po dobu 20 let Carl Sassenrath, architekt a primární vývojář AmigaOS , na základě jeho studia denotační sémantiky a použití konceptů z programovacích jazyků Lisp , Forth , Logo a Self .
- Společnost REBOL Technologies byla založena v roce 1998.
-
Tlumočník REBOL 2 , který se stal jádrem rozšířených edic tlumočníků, byl poprvé vydán v roce 1999.
- REBOL / Command , který přidal silné šifrování a přístup ODBC , byl vydán v září 2000.
- REBOL / View byl vydán v dubnu 2001 a přidal grafické schopnosti k základnímu jazyku.
- REBOL / IOS , rozšiřitelné prostředí pro spolupráci vytvořené pomocí REBOL, bylo vydáno v srpnu 2001.
- V prosinci 2002 byla vydána
Design
Snadnost použití
Jedním z návrhových principů Rebol je „dělat jednoduché věci jednoduchými způsoby“. V následujícím příkladu se dialekt vizuálního rozhraní používá k popisu jednoduchého programu Hello world s grafickým uživatelským rozhraním:
view layout [text "Hello world!" button "Quit" [quit]]
Takto vypadá podobný příklad v R3-GUI:
view [text "Hello world!" button "Quit" on-action [quit]]
Dialekty
Jazyky specifické pro doménu Rebol , nazývané dialekty , jsou mikrojazyky optimalizované pro konkrétní účel. Dialekty lze použít k definování obchodních pravidel, grafických uživatelských rozhraní nebo sekvencí obrazovek během instalace programu. Uživatelé mohou definovat své vlastní dialekty, znovu použít jakékoli existující slovo Rebol a dát mu v tomto dialektu konkrétní význam. Dialekty jsou interpretovány funkcemi, které specifickým způsobem zpracovávají bloky Rebol (nebo analyzují řetězce).
Příkladem Rebolových dialektických schopností je slovo return
. V dialektu výměny dat return
je jen slovo, které nemá žádný konkrétní význam. V udělej dialektu , return
je globální proměnné odkazuje na nativní funkce procházející zpět výslednou hodnotu funkce. V vizuální rozhraní dialekt (VID) , return
je klíčové slovo způsobuje rozložení motor simulovat návrat vozíku , pohybující se „vykreslování pero“ dolů na začátek dalšího řádku.
Rebolský tlumočník s grafickými schopnostmi musí rozumět a interpretovat mnoho dialektů. V tabulce níže jsou uvedeny ty nejdůležitější v pořadí podle důležitosti.
Název nářečí | Vyloženo | Účel |
---|---|---|
Dialekt pro výměnu dat |
load funkce
|
představuje data a metadata; společná platforma pro dialogy Rebol |
Dělat dialekt |
do funkce
|
programování |
Analyzovat dialekt |
parse funkce
|
porovnávání vzorů |
Dialekt specifikace funkce |
make funkce
|
definice funkce ; Funkcionální programování |
Dialekt specifikace objektu |
make funkce
|
definice objektu / dědičnost; prototypové programování |
Dialekt vizuálního rozhraní (VID) nebo RebGUI |
layout funkce nebo display funkce
|
specifikuje grafické uživatelské rozhraní |
Nakreslete dialekt |
view funkce
|
definuje grafické prvky (čáry, mnohoúhelníky atd.) |
Dialekt specifikace skriptu |
do funkce
|
definice skriptu |
Dialekt bezpečnostní politiky |
secure funkce
|
specifikuje bezpečnostní politiku |
Syntax
Syntaxe Rebol má volnou formu a nevyžaduje specifické umístění. Nicméně, odsazení se často používá pro lepší vyjádření struktury textu na lidské čtenáře.
Syntaktické vlastnosti různých dialektů se mohou lišit. Společnou platformou pro všechny dialekty Rebol je dialekt pro výměnu dat ; jiné dialekty jsou obvykle odvozeny od toho. Kromě toho, že je společnou platformou pro všechny dialekty, dialekt pro výměnu dat se přímo používá k reprezentaci dat a metadat, naplnění datových struktur, odesílání dat přes internet a jejich ukládání do datového úložiště.
Na rozdíl od programovacích jazyků, jako je C , dialekt pro výměnu dat nespočívá v deklaracích , prohlášeních , výrazech nebo klíčových slovech. Platný výměna dat dialekt textu tok je stromová struktura dat se skládá z bloků (kořen blok je implicitní, podbloků jsou ohraničeny pomocí hranatých závorkách ), parens (vymezen kulatých závorkách ), řetězce (ohraničeny uvozovkách nebo složenými závorkami vhodných pro multi -line strings; pro netisknutelné znaky se používá stříška ), adresy URL , e-mailové adresy, soubory, cesty nebo jiné souhrnné hodnoty . Na rozdíl od bloků ALGOL jsou bloky Rebol složené hodnoty podobné citovaným s-výrazům v Lispu . Skutečnost, že je kód psán ve formě bloků Rebol, činí jazyk homoikonický .
Bloky i pareny mohou obsahovat další složené hodnoty (blok může obsahovat dílčí bloky, pareny, řetězce, ...) nebo skalární hodnoty jako slova, set-slova (slova s příponou dvojtečky ), get-slova (slova s předponou dvojtečka), lit-words (slova prefixed by the apostrophe ), numbers, money, characters , etc., separated by whitespace . Všimněte si, že ve slovech jsou povoleny speciální znaky, takže a+b
je to slovo na rozdíl od a + b
, což je posloupnost tří slov oddělených mezerami.
Komentáře se mohou objevit za středníkem až do konce řádku. Víceřádkové komentáře nebo komentáře, které lexikální analyzátor ignoruje, lze psát pomocí „běžných“ datových typů, jako jsou víceřádkové řetězce.
Sémantika
Bloky obsahující jazyk specifický pro doménu lze odeslat jako argumenty konkrétním funkcím hodnotitele .
dělat
Nejčastěji používaným hodnotitelem je do
funkce. Ve výchozím nastavení se používá k interpretaci vstupu textu do konzoly tlumočníka .
Do dialekt interpretovaný do
funkcí je výrazově orientovaný dílčí jazyk dialektu výměny dat . Hlavní sémantickou jednotkou jazyka je výraz . Na rozdíl od imperativních programovacích jazyků sestupně od ALGOL se dělat dialekt nemá ani slova, ani prohlášení.
Slova jsou používány jako case insensitive proměnných . Stejně jako ve všech jazycích s dynamickým zadáním nemají proměnné přidružený typ, typ je přidružen k hodnotám. Výsledek, tj. Vyhodnocení slova, se vrátí, když do
funkce narazí na slovo . Pro přiřazení lze použít set-word tvar slova . I když nemají příkazy, lze pro imperativní programování použít přiřazení společně s funkcemi s vedlejšími efekty .
Subbloky kořenového bloku se samy vyhodnotí. Tato vlastnost se používá k datové bloky rukojeti, pro strukturované programování předložením bloky jako argumenty řídicích funkcí, jako if
, either
, loop
, atd., A pro dialecting, když je blok funkci předány specifické tlumočníkem.
Za zmínku stojí konkrétní problém, že složené hodnoty přiřazené proměnným se nekopírují. Chcete-li vytvořit kopii, musí být hodnota předána copy
funkci.
do
Fungovat normálně následuje předponu styl vyhodnocení , kde funkce zpracovává argumenty, které ho následují. Existuje však také hodnocení infix pomocí operátorů infix . Vyhodnocení Infix má přednost před vyhodnocením předpony. Například,
abs -2 + 3
vrací 1, protože přidání infix má přednost před výpočtem absolutní hodnoty. Při vyhodnocování infixových výrazů je pořadí vyhodnocení zleva doprava, žádný operátor nemá přednost před jiným. Například,
2 + 3 * 4
vrátí 20, zatímco vyhodnocení dávající přednost násobení by přineslo 14. Všechny operátory mají předpony. Do
obvykle hodnotí argumenty před jejich předáním funkci. Níže uvedený výraz:
print read http://en.wikipedia.org/wiki/Rebol
nejprve přečte stránku Wikipedia Rebol a poté předá výsledek print
funkci. Závorky lze použít ke změně pořadí hodnocení. Pomocí prefixového zápisu lze zabránit použití závorek ve výrazech.
Výhodou jsou jednoduchá pravidla priority:
- Při psaní výrazů není třeba „konzultovat“ tabulky priorit
- Když je definován nový operátor, není třeba přepisovat tabulky priorit
- Výrazy lze snadno přepsat z infixu na prefixovou notaci a naopak
stejně jako nevýhoda:
- Uživatelé zvyklí na běžnější pravidla priority mohou snadno udělat chybu
analyzovat
Tato parse
funkce se přednostně používá k určení, ověření, transformaci a interpretaci dialektů. Činí tak porovnáním výrazů analýzy za běhu.
Parse výrazy jsou psány v parse dialektu , který je stejně jako do dialect výrazově orientovaným dílčím jazykem dialektu pro výměnu dat . Na rozdíl od dialektu do používá dialekt syntaktické analýzy klíčová slova představující operátory a nejdůležitější neterminály , operátoři syntaktické analýzy infix nemají ekvivalenty předpon a používají pravidla priority ( sekvence má vyšší prioritu než volba ).
Lze zahrnout také akce, které je třeba provést během procesu syntaktické analýzy, a tuto parse
funkci lze použít ke zpracování bloků nebo řetězců. Na úrovni analýzy řetězce parse
musí zpracovat analýzu "nízké úrovně", s ohledem na znaky a oddělovače. Analýza bloků je vyšší úrovně, zpracování skenování probíhá na úrovni hodnot Rebol.
Syntaktický dialekt patří do rodiny gramatik reprezentovaných jazykem syntézy shora dolů nebo gramatikou syntaktického výrazu (PEG). Hlavní podobnost je přítomnost operátorů sekvence a výběru , které mají všichni členové rodiny. Syntaxe analyzovaného dialektu a podobnosti mezi analyzovaným dialektem a PEG jsou ilustrovány tímto přepisem příkladu PEG, který analyzuje aritmetický výraz:
Digit: charset [#"0" - #"9"]
Value: [some Digit | "(" Expr ")"]
Product: [Value any [["*"| "/"] Value]]
Sum: [Product any [["+"| "-"] Product]]
Expr: Sum
parse/all "12+13" Expr
Implementace
Oficiální implementace Rebol 2.7.8 je k dispozici v několika edicích ( / Core , / View , / Command , / SDK a / IOS ). Edice / Core a / View jsou volně redistribuovatelný software .
Běhové prostředí je uloženo v jediném spustitelném souboru. Vydání konzoly Rebol / Core 2.7.8 má velikost přibližně 300 kB a vydání grafické grafické uživatelské rozhraní Rebol / View 2.7.8 má velikost přibližně 650 kB.
Rebol / View poskytuje platformu nezávislý grafický a zvukový přístup a přichází s vlastní sadou nástrojů pro okna a rozšiřitelnou sadou stylů ( widgety GUI ). Rozšířená vydání, například Rebol / Command 2.7.8 nebo Rebol / SDK 2.7.8, vyžadují placenou licenci; přidávají funkce jako přístup k datům ODBC a možnost vytvářet samostatné spustitelné soubory.
Dědictví
- Rebol byl jmenován Douglasem Crockfordem jako jedna z inspirací pro JavaScript Object Notation .
- Rebol inspiroval open-source projekt Orca, který je interpretovaným jazykem podobným Rebol.
- Bor je interpretovaný homoikonický jazyk inspirovaný a podobný Rebol, který je určen pro vkládání jazyků specifických pro doménu. Je implementován jako knihovna C licencovaná podle podmínek LGPLv3.
- Programovací jazyk Red byl přímo inspirován REBOLu, ale implementační volby Red byly zaměřeny specificky na překonání jeho vnímané omezení.
Viz také
Reference
Další čtení
- Mikes, Nora (20. listopadu 1999). "Vniknutí REBOLu: Není to skriptovací jazyk, ani programovací jazyk - a ani nová Amiga. Nebo ano?" . LinuxWorld . Archivovány od originálu 24. března 2005.
- Příběh, Derrick (27. srpna 1999). „Rebol by mohl být jazykem pro nás ostatní“ . Recenze na webu . Archivovány od originálu 12. října 1999.