Rebol - Rebol

Rebol
Rebol logo.png
Paradigma jazykově orientované programování , výměna dat , funkční , prototypové , imperativní
Navrhl Carl Sassenrath
Vývojář REBOL Technologies
Poprvé se objevil 1997 ; Před 24 lety  ( 1997 )
Stabilní uvolnění
2.7.8 / leden 2011 ; před 10ti lety  ( 2011-01 )
Náhled verze
2.101.0 / prosinec 2012 ; před 8 lety  ( 2012-12 )
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 .rebol .com
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 .

  1. Společnost REBOL Technologies byla založena v roce 1998.
  2. Tlumočník REBOL 2 , který se stal jádrem rozšířených edic tlumočníků, byl poprvé vydán v roce 1999.
    1. REBOL / Command , který přidal silné šifrování a přístup ODBC , byl vydán v září 2000.
    2. REBOL / View byl vydán v dubnu 2001 a přidal grafické schopnosti k základnímu jazyku.
    3. REBOL / IOS , rozšiřitelné prostředí pro spolupráci vytvořené pomocí REBOL, bylo vydáno v srpnu 2001.
    4. V prosinci 2002 byla vydána
    sada REBOL / SDK poskytující výběr jader, která se mají vázat, stejně jako preprocesor.
  • Rebol 3 [R3], nejnovější verze tlumočníka , měla alfa verze vydané společností REBOL Technologies od ledna 2008. Od svého vydání jako projekt Apache 2 v prosinci 2012 ji vyvíjí komunita Rebol.
  • 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]]
    

    R3-GUI Příklad Hello world

    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:

    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í

    externí odkazy