Lucid (programovací jazyk) - Lucid (programming language)
![]() | tento článek příliš spoléhá na Reference na primární zdroje.Dubna 2018) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Paradigma | Datový tok |
---|---|
Navrhl | Edward A. Ashcroft William W. Wadge |
Poprvé se objevil | 1976 |
Psací disciplína | Typický |
Hlavní, důležitý implementace | |
pLucid | |
Dialekty | |
GIPSY, granulární Lucid | |
Ovlivněno | |
JÁ PLAVU | |
Ovlivněno | |
SISAL, PureData, Lesk |
Jasný je programování toku dat jazyk určený k experimentování svon Neumann programovací modely. Byl navržen Billem Wadgeem a Edem Ashcroftem a popsán v knize z roku 1985 Lucid, programovací jazyk toku dat.[1]
pLucid byl první tlumočník pro Lucida.
Modelka
Jasný používá pro výpočet dat model založený na poptávce. Každé prohlášení lze chápat jako rovnici definující síť procesorů a komunikačních linek mezi nimi, kterými proudí data. Každý proměnná je nekonečný proud hodnot a každá funkce je filtr nebo transformátor. Opakování je simulován „aktuálními“ hodnotami a operátorem „fby“ (čten jako „následovaný“), který umožňuje složení proudů.
Lucid je založen na algebra historie, přičemž historie je nekonečnou posloupností datových položek. Z provozního hlediska lze historii chápat jako záznam měnících se hodnot proměnné, operace historie jako první a následující lze chápat způsoby, které naznačují jejich názvy. Lucid byl původně koncipován jako disciplinovaný, matematicky čistý jazyk s jedním přiřazením, ve kterém by se ověření zjednodušilo. Nicméně datový tok interpretace měla významný vliv na směr, kterým se Lucid vyvinula.[1]
Detaily
V Lucid (a dalších datový tok languages) výraz, který obsahuje proměnnou, která dosud nebyla vázaný před pokračováním počká, až bude proměnná svázána. Výraz jako x + y
před návratem s výstupem výrazu počká, až budou svázány x a y. Důležitým důsledkem toho je, že se vyhneme explicitní logice pro aktualizaci souvisejících hodnot, což má za následek podstatné snížení kódu ve srovnání s běžnými jazyky.
Každá proměnná v Lucidu je proud hodnot. Výraz n = 1 fby n + 1
definuje streamování pomocí operátoru 'fby' (a mnemotechnická pomůcka pro „následuje“). fby definuje, co následuje po předchozím výrazu. (V tomto případě proud produkuje 1,2,3, ...) Hodnoty v proudu mohou být adresovány těmito operátory (za předpokladu, že x je používaná proměnná):
'first x'
- načte první hodnotu v proudu x,
'X'
- aktuální hodnota proudu,
'next x'
- načte další hodnotu ve streamu.
'jako'
- operátor, který něco udělá „jakmile“ se daná podmínka stane skutečností.
'x na p'
- upon je operátor, který opakuje starou hodnotu streamu x a aktualizuje se na nové hodnoty, pouze když stream p vytvoří skutečný
dostupná hodnota. (Slouží ke zpomalení proudu x), tj .: x na str
je proud x s novými hodnotami objevujícími se na pravdě p.
Výpočet se provádí definováním filtrů nebo transformačních funkcí, které působí na tyto časově proměnné proudy dat.
Příklady
Faktoriální
fac kde n = 0 fby (n + 1); fac = 1 fby (fac * (n + 1)); konec
Fibonacciho sekvence
fib kde fib = 0 fby (1 fby fib + další fib); konec
Celkem sekvence
celkem kde celkem = 0 fby celkem + x konec;
Klouzavý průměr
running_avg kde součet = první (vstup) fby součet + další (vstup); n = 1 fby n + 1; running_avg = součet / n; konec;
prvočísla
prime kde prime = 2 fby (n kdykoli isprime (n)); n = 3 fby n + 2; isprime (n) = not (divs) asa divs nebo prime * prime> N kde N je aktuální n; divs = N mod prime eq 0; konec; konec
Diagram toku dat

Rychlé třídění
qsort (a) = pokud eof (první a), pak následuje a else (qsort (b0), qsort (b1)) fi, kde p = nejprve aDiagram toku dat
--------> kdykoli -----> qsort --------- | ^ | | | | | ne | | ^ | | ---> první | | | | | | | V | | | ---> méně --- | | | | | V V --- + --------> kdykoli -----> qsort -----> konc -------> ifthenelse -----> | ^ ^ | | | --------> další ----> první ------> iseod -------------- | | | -------------------------------------------------- ---------Střední kvadratická
sqroot (avg (square (a))) kde square (x) = x * x; avg (y) = průměr, kde n = 1 fby n + 1; průměr = první y fby průměr + d; d = (další y - průměr) / (n + 1); konec; sqroot (z) = přibližná chyba <0,0001, kde Z je aktuální z; přibližně = Z / 2 fby (přibližně + Z / přibližně) / 2; err = abs (čtverec (přibližně) -Z); konec; konecHammingův problém
h kde h = 1 fby sloučení (sloučení (2 * h, 3 * h), 5 * h); sloučit (x, y) = pokud xx <= yy, pak xx else yy fi, kde xx = x na xx <= yy; yy = y na yy <= xx; konec; konec;Diagram toku dat
Reference
- ^ Wadge, William W .; Ashcroft, Edward A. (1985). Lucid, programovací jazyk toku dat. Akademický tisk. ISBN 0-12-729650-6. Citováno 8. ledna 2015.
externí odkazy