lispovské jazyky jsou fajn v akademické sféře (třeba Racket pro ověřování nových jazyků), ale používají se i někde v komerční praxi? Četl jsem jen o Scheme v nějaké verzi Final Fantasy,ale jinak moc ne. Na druhou stranu v Tiobe indexu je Scheme podezřele vysoko, dokonce nad Scalou, což je až podezřelé :-)
> Na druhou stranu v Tiobe indexu je Scheme podezřele vysoko, dokonce nad Scalou, což je až podezřelé
protoze se donedavna pouzival a nekde jeste pouziva jako jazyk pro vyuku nejen programovani
https://mitpress.mit.edu/books/structure-and-interpretation-classical-mechanics-second-edition
https://www.amazon.com/Functional-Differential-Geometry-MIT-Press/dp/0262019345
Cvicne jsem ted hodil LISP do jobs.cz a nic. A popravde jsem ani nic nepotkal, kdyz jsem pred casem hledal aktivne (ne tedy LISP, ale pobavil jsem se s dost lidmi a dost firmami). Samozrejme je mozne, ze nekde existuje rezervoar LISPovych jobu, ktery neni z mista, kde se pohybuji, vubec videt, ale byl bych trochu skeptik.
Nemohu nepripomenout Dijkstruv essay s krasnym nazvem "On the fact that the Atlantic Ocean has two sides"
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD611.html
Jinak prijde mi, ze ted se obe strany celkem blizi k tomu, ze se budou pouzivat Ceckova vetev a ML vetev v ruznych kombinacich.
Lispovské jazyky se používají zejména jako embedded, ale ne nutně v embedded sféře, jestli mi rozumíte.
Příklad: Racket používá herní vývojové studio Naughty Dogs, takže třeba mezi herními recenzenty nejpopulárnější hra tohoto roku, The Last of Us II, má herní logiku naprogramovanou v Racketu (a to se přitom všude uvádí, že Racket FFI je spíše dělaná na volání Céčkovských funkcí - a hle, jde to i obráceně).
Jiný příklad specificky pro Gambit-C je implementace LambdaNative určená speciálně jako multiplatformní jazyk pro tvorbu GUI (viz. http://www.lambdanative.org a příklady tam).
To je podle mně celkem zajímavá možnost vývoje plně multiplatformního GUI (LambdaNative je postavená nad Gambitem a widgety nad OpenGL, takže bude fungovat víceméně všude, Linux, Android, Mac, Win, ...).
Mimochodem, trochu jsem byl rozčarován z výkonu kompilátoru v testu, přitom pro úkony běžící primárně v jednom vlákně by mělo jít o jednu ze dvou nejvýkonnějších implementací (tou druhou je Chez Scheme). Ostatní jsou o minimálně jednu ligu níž - viz. https://ecraven.github.io/r7rs-benchmarks
Díky za doplnění, zrovna o tom The Last of Us jsem nevěděl a je to pěkné pro propagaci.
Re překadač: popravdě jsem taky čekal víc, ale nakonec to vypadá, že bez JITu (třeba trasovacího) prostě ty Scheme přakladače moc nezvládají zjistit, kdy přepnout na výpočty v nativnich floatech nebo integerech.
Ještě nám zbývá Stalin, ten je hodně zajímavý a nevím, proč to na tom https://ecraven.github.io/r7rs-benchmarks neuvedli (blbý jméno?)
Takže ještě jednou dík!
Aha, takže v Naughty Dog používali Racket v minulosti pro éru Playstation 3 - čili Racket použili pro The Last of Us (2013), ale už ne pro druhý díl. V obou případech jde ale o zajímavé použití Lispovkých jazyků (vzhledem k faktu, že u her se nejčastěji na skriptování používá něco jako Lua nebo dnes možná Python).
Na https://ecraven.github.io/r7rs-benchmarks ten Stalin je v tabulce - akorát že spolu se SISC a TinyScheme jako jediné tři implementace nedokončily ani jeden test (možná špatně zkompilované ? - autor neuvádí použitý OS). Já mám podobný problém s Cyclone Scheme.
Pokud si dobře vzpomínám, tak Stalin byl vydaný ještě pro R4RS a měl nějaké speciální optimalizace, díky kterým nebyl stoprocentně kompatibilní se standardem. No a jestli jsou ty testy dělané podle R7RS... možná ani není překvapující, že 10+ let starý kus SW propadl.
"Scheme přakladače moc nezvládají zjistit, kdy přepnout na výpočty v nativnich floatech nebo integerech"
Typicky Scheme objekty (interně) jsou ukazatele, no a ukazatele jde optimalizovat pro použití jako (nativní) integer celkem jednoduše (protože ukazatele jsou celá čísla, na většině platforem navíc vždy dělitelná 8 nebo 16-ti). S ostatními typy je samozřejmě problém, tam se musí použít typová inference, což má právě třeba Stalin.
Aha toto pouzivaji, pekne pekne https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
S tím Game Oriented Assembly Lisp (GOAL) jste mě zmátl - vůbec jsem o něm do dneška nevěděl.
Jak jsem se teď díval, tak GOAL má (dle Wikipedie) poslední uvedenou verzi v roce 2012, což by odpovídalo přechodu Naughty Dog na Racket v roce 2013. Podle mě jsou tak obě hry The Last of Us (+ další za posledních 7 let) napsané v Racket.
jj i podle těch slajdů to vypadá, že nakonec přešli GOAL -> C++ -> Racket :)
OT: je to dávno, ale hra Abuse - ve své době dost populární - je taky psaná v LISPu. Samozřejmě low level věci měli v C++, ale logiku v Lispu (https://github.com/antrad/Abuse_1996)