Joy (programovací jazyk) - Joy (programming language)
tento článek případně obsahuje původní výzkum.Květen 2009) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Paradigma | multi-paradigma: funkční, zřetězující, orientovaný na zásobník |
---|---|
Navrhl | Manfred von Thun |
Vývojář | Manfred von Thun John Cowan |
Poprvé se objevil | 2001 |
Stabilní uvolnění | 17. března 2003 / 17. března 2003 |
Psací disciplína | silný, dynamický |
Hlavní, důležitý implementace | |
Joy0, Joy1, "Current Joy", "Joy Johna Cowana", "JoyJ (Joy v jvmm)" | |
Ovlivněno | |
Systém, FP, Forth | |
Ovlivněno | |
Faktor, Kočka, V, Trith |
The Joy programovací jazyk v počítačová věda je čistě funkční programovací jazyk který produkoval Manfred von Thun z La Trobe University v Melbourne, Austrálie. Radost je založena spíše na složení funkcí než na lambda kalkul. Ukázalo se, že má mnoho podobností Forth, nikoli kvůli designu, ale kvůli jakési paralelní evoluci a konvergenci. To bylo také inspirováno styl programování na úrovni funkcí z John Backus je FP.[1]
Jak to funguje
Radost je neobvyklá (kromě programování na funkční úrovni jazyky a některé esoterické, například unlambda ) ve svém nedostatku a lambda provozovatel, a proto nedostatek formální parametry. Abychom to ilustrovali na běžném příkladu, zde je ukázka, jak může být čtvercová funkce definována v imperativní programovací jazyk (C ):
int náměstí(int X){ vrátit se X * X;}
Proměnná x je parametr, který je nahrazen argumentem, který se má na druhou při volání funkce.
V funkční Jazyk (Systém ), lze definovat stejnou funkci:
(definovat náměstí (lambda (X) (* X X)))
To se v mnoha ohledech liší, ale stále používá parametr x stejným způsobem.
V Joy je funkce čtverce definována:
DEFINE square == dup *.
V Joy je všechno funkce, která vyžaduje a zásobník jako argument a ve výsledku vrátí hromádku. Například číslice „5“ nepředstavuje celočíselnou konstantu, nýbrž krátký program, který tlačí číslo 5 do zásobníku.
- The dup operátor jednoduše duplikuje horní prvek zásobníku zatlačením jeho kopie.
- The * operátor vyskočí ze zásobníku dvě čísla a posune jejich produkt.
Funkce square tedy vytvoří kopii horního prvku a poté vynásobí dva horní prvky zásobníku a ponechá čtverec původního horního prvku v horní části zásobníku, aniž by bylo nutné formální parametr. Díky tomu je Joy stručná, jak dokládá tato definice quicksort:
DEFINE qsort == [small] [] [uncons [>] split] [enconcat] binrec.
„binrec“ je jedním z mnoha Joy rekurzivní kombinátory, implementující binární rekurzi. Očekává, že v horní části zásobníku budou čtyři citované programy, které představují:
- podmínka ukončení (pokud je seznam „malý“ (1 nebo 0 prvků), je již seřazen),
- co dělat, pokud je splněna podmínka ukončení (v tomto případě nic),
- co dělat ve výchozím nastavení (rozdělit seznam na dvě poloviny porovnáním každého prvku s pivotem) a nakonec
- co dělat na konci (vložte čep mezi dvě seřazené poloviny).
Matematická čistota
V Radě význam funkce je homomorfismus z syntaktický monoidní na sémantický monoidní. To znamená syntaktický vztah zřetězení z symboly mapuje přímo na sémantický vztah složení z funkce. Je to homomorfismus spíše než izomorfismus, protože to je na ale ne jedna ku jedné; to znamená, že žádný symbol nemá více než jeden význam, ale některé sekvence symbolů mají stejný význam (např. „dup +“ a „2 *“).
Radost je zřetězený programovací jazyk: "Zřetězení dvou programů označuje složení funkcí označených těmito dvěma programy".[2]
Jeho knihovní rutiny odrážejí postupy ISO C, ačkoli současná implementace není snadno rozšiřitelná funkcemi napsanými v C.
Viz také
Reference
- ^ Manfred von Thun (12. prosince 2003). „Rozhovor s Manfredem von Thunem“. Citováno 31. května 2013.
Na začátku 80. let jsem narazil na slavný Backusův článek „Může být programování osvobozeno od von Neumannova stylu“ a okamžitě mě zaujala vyšší úroveň programování v jeho FP.
- ^ „Matematické základy radosti“. Archivovány od originál 7. října 2011.
externí odkazy
- Oficiální webové stránky Joy Programming Language (La Trobe University)
- Joy domovské zrcadlo
- Sestavená informativní sbírka o Joy
- okamžitě spustitelný Joy (GitHub-Archiv)
- Freneger, Paul (Srpen 2003). "JOY of dále". Oznámení ACM SIGPLAN. 38 (8).
- von Thun, Manfred; Thomas, Reuben (9. října 2001). „Joy: Forth's Functional Cousin“ (PDF). Sborník ze 17. konference EuroForth.
- Christopher Diggins (31. prosince 2008). „Co je to zřetězený jazyk“. Dr. Dobbs.
- Apter, Stevane. "Funkční programování v radosti a K". Vektor. Archivovány od originál dne 28. 8. 2008. Citováno 2011-02-28.
- mjoy, tlumočník v Delphi pro strojové kreslení (Podmnožina radosti)