Zřetězený programovací jazyk - Concatenative programming language
A zřetězený programovací jazyk je bez bodu počítač programovací jazyk ve kterém všechny výrazy označují funkce, a vedle sebe výrazy označuje složení funkce.[1] Zřetězené programování nahrazuje funkční aplikace, což je běžné v jiných programovacích stylech, s složení funkce jako výchozí způsob sestavení podprogramy.
Příklad
Například posloupnost operací v aplikačním jazyce, jako je následující:
y = foo(X)z = bar(y)w = baz(z)
... je napsán v zřetězeném jazyce jako posloupnost funkcí bez parametrů:[2]
foo bar baz
Funkce a postupy psané zřetězeným stylem nejsou úroveň hodnoty, tj. obvykle nepředstavují datové struktury, na kterých pracují, s explicitními názvy nebo identifikátory; místo toho jsou úroveň funkcí - funkce je definována jako a potrubí posloupnost operací, které přebírají parametry z implicitní datové struktury, na které fungují všechny funkce, a vrací výsledky funkce do sdílené struktury, aby ji mohl použít další operátor.[3]
Kombinace kompozice sémantika s syntax zrcadlící takovou sémantiku činí zřetězené jazyky vysoce přístupnými algebraické manipulaci s programy;[4] i když může být obtížné psát matematické výrazy přímo do nich.[5] Zřetězené jazyky lze implementovat efektivním způsobem pomocí a stohovací stroj, a jsou běžně přítomny implicitně v virtuální stroje v podobě jejich instrukční sady.[5]
Hodně z původní práce na teorii zřetězených jazyků provedl Manfred von Thun.[Citace je zapotřebí ]
Vlastnosti
Vlastnosti zřetězených jazyků jsou výsledkem jejich kompoziční syntaxe a sémantiky:
- Redukce libovolného výrazu je zjednodušení jedné funkce na jinou; nikdy není nutné se zabývat aplikací funkcí na objekty.[6]
- Libovolný podvýraz lze nahradit názvem, který představuje stejný podvýraz. Toto se v konkatenační komunitě označuje jako factoring a používá se značně ke zjednodušení programů na menší části.
- Syntaxe a sémantika zřetězených jazyků tvoří algebraickou strukturu a monoidní.[7]
- Zřetězené jazyky lze přizpůsobit implementaci inspirované lineární logika kde ne odpadky je kdy generováno.[8]
Implementace
První zřetězený programovací jazyk byl Forth, Ačkoli Radost byl první jazyk, který si říkal zřetězený. Jiné zřetězené jazyky jsou Faktor Onyx, PostScript, a RPL.
Většina existujících zřetězených jazyků je založeno na zásobníku; to není požadavek a byly navrženy další modely.[9][10][11] Zřetězené jazyky se aktuálně používají pro vložený, plocha počítače, a webové programování, tak jako cílové jazyky a pro výzkumné účely.
Většina zřetězených jazyků je dynamicky zadáno. Mezi výjimky patří staticky napsané Kočičí jazyk.[12]
Viz také
Reference
- ^ „Christopher Diggins: Co je to zřetězený jazyk“. Drdobbs.com. 2008-12-31. Citováno 2013-07-01.
- ^ "Název kódu nemá hodnoty". Concatenative.org. Citováno 13. září 2013.
- ^ "Zřetězený jazyk". Concatenative.org. Citováno 13. září 2013.
- ^ „Odůvodnění pro radost, funkční jazyk“. Archivovány od originál dne 15.01.2011.
- ^ A b „Proč je důležité zřetězené programování“. Citováno 13. září 2013.
- ^ „von Thun, Manfred: Joy ve srovnání s jinými funkčními jazyky“. Archivovány od originál dne 06.10.2011.
- ^ „von Thun, Manfred: Matematické základy radosti“. Archivovány od originál dne 2010-07-31.
- ^ „Henry Baker: Lineární logika a permutační komíny - Forth bude první“. Home.pipeline.com. Archivovány od originál dne 2014-07-24. Citováno 2013-07-01.
- ^ „Zřetězený jazyk XY“. Nsl.com. Citováno 2013-07-01.
- ^ „Programovací jazyk Enchilada“. Enchiladacode.nl. Citováno 2013-07-01.
- ^ „Programovací jazyk Om“. Om-language.org. Citováno 2013-07-01.
- ^ "Specifikace kočky". Cat-language.com. Archivovány od originál dne 2015-02-05. Citováno 2013-07-01.