it-swarm-eu.dev

Je LISP v dnešním světě stále užitečný? Která verze je nejpoužívanější?

Snažím se v pravidelných časových intervalech učit nový programovací jazyk. Nedávno jsem četl, jak jsou LISP a jeho dialekty na úplném opačném konci spektra z jazyků, jako je C/C++, což mě dost zvědalo, abych o tom věděl víc. Dvě věci mi však nejsou jasné a hledám pro ně návod:

  1. Je LISP stále praktikován/používán v dnešním světě, nebo jde o starší jazyk jako FORTRAN/COBOL? Myslím tím, že se kromě zachování existujícího kódu vůbec používá na nových projektech?

  2. Jaký je nejčastěji používaný dialekt? Narazil jsem na Scheme a Common LISP jako na 2 nejčastější dialekty a chtěl jsem, abys vyjádřil názor na to, který z nich je nejoblíbenější/nejužitečnější, a ten by byl nesmírně potěšen, kdybys mohl navrhnout nějaké zdroje pro začínajícího hodnostáře.

I když dychtivě učím jazyk, který je zásadně odlišný od procedurálních jazyků, na které jsem zvyklý, nechci do něčeho investovat zbytečné úsilí, pokud je zcela zastaralé - přesto bych se ho naučil, pokud by byl profesionálně „mrtvý“, ale jen s akademickou perspektivou ...

116
TCSGrad

Raději se mi líbí Scheme, pokud chcete pracovat s JVM, měli byste se podívat na Clojure, což je LISP, který je navržen pro práci v JVM. A ano, LISP stojí za to se naučit, jak mocný takový minimální design může být! Lidé, kteří vytvořili LISP, měli některé věci opravdu v pořádku. Je úžasné, kolik nových skvělých funkcí moderních jazyků LISP v 60. letech mělo!

Pro vložené schéma zkuste guile: http://www.gnu.org/s/guile/

59
Zachary K

Odpověď na otázku 2 „Nejpoužívanější dialekt“:

Závisí na tom, jak interpretujete „Nejpoužívanější“. Zde jsou některé matematické ubrousky pro dolní meze o tom, kolik využití každého z mála vybraných dialektů dostanete.

Většina nezpracovaného kódu

  • Pravděpodobně schéma (všechny dialekty) kvůli vzdělávací aplikace
    • 270 škol ... Asi 50 studentů/rok, 500 řádků kódu/student, 10 let běhu. 1 000 000+ řádků na základě ubrouskové matematiky.
    • 500 000 řádků rakety v samotné raketě a jejích nástrojích.
  • Pravděpodobně běžný LISP kvůli AI a spoustě otevřeného zdrojového kódu a produkčního kódu (viz výrobní kód).
  • Možná Emacs LISP kvůli ...
    • Samotný Emacs: přes 1 000 000 řádků
    • Množství emacs LISP napsaných veřejně - 237 modulů, asi 200 řádků/modulů je 40 000 + řádků jen na EmacsWiki, pravděpodobně mnohem více v ELPA
    • Plus aplikace napsané v emacs LISP, .emacs soubory atd.
  • Clojure
    • Těžko odhadnout. Většinou menší tečky. Mohlo by to být hodně.

Vítěz: Schéma nebo Common LISP. Příliš mnoho neznámých.

Většina „produkčních“ kódů

Vítěz: Hádám obyčejný LISP . Myslím, že můžeme odpovědět na otázku 1 na základě použití Common LISP a Clojure.

Většina koncových uživatelů

  • Společný LISP
    • Zákazníci softwaru ITA, včetně Orbitz, Bing Travel a Kayak.com - pravděpodobně miliony.
  • Clojure
    • Citigroup (bez podrobností), Akamai (bez podrobností), simple.com, mnoho dalších. Pravděpodobně miliony.
  • Systém
  • Emacs LISP - většinou programátoři, většinou na unixových platformách. Může to být milion.

Vítěz: Schéma má tu nejlepší spodní hranici, protože na Uncharted jsou prodejní čísla, ale je to docela diskutabilní.

Závěr

Na závěr jsem zjistil, že velká jablka.

68
Jesse Millikan

Je LISP stále praktikován/používán v dnešním světě, nebo je to starší jazyk

Ano, je, ale musíte vědět, kde hledat. Lidé, kteří používají LISP, o tom nechtějí křičet příliš hlasitě, ale existuje několik příkladů několika vysoce postavených startupů, které to za posledních 20 let využily. To je také velmi populární u malých společností v Evropě.

Jaký je nejčastěji používaný dialekt?

Toto je platná otázka, ale není snadné odpovědět. Odpověď také nemusí být zvláště užitečná: mnoho implementací má zvláštní zaměření, takže je nejlepší je vybrat, pokud vyhovují vašemu konkrétnímu problému, spíše než na základě toho, jak je to jinak používáno. Místo toho vám řeknu něco o vašich možnostech a můžete se rozhodnout sami.

LISP je rodina jazyků a každý z těchto jazyků má rodinu dialektů a implementací. Dialektové dialekty spadají do dvou táborů „LISP“ a „Schémata“.

LISP: Až donedávna byl Common LISP králem. Byl to pokus sjednotit všechny nesourodé LISP a, aniž by byl laskavý, byl "C++" LISP. To znamená, že to byl OBROVSKÝ jazyk. Měl všechno. Během několika posledních let se objevil Clojure. Clojure je LISP, který běží na virtuálním stroji Java Virtual Machine) a snaží se zakořenit se ve funkční filozofii programování. Další LISPy jsou tradičně striktně multi-paradigmatem. Clojure je zajímavý, protože získává oba nejlepší a nejhorší z LISP a JVM. Stále existuje spousta výřečnosti jazyků založených na Javě a díky syntaxi jsou dost svobodné a snadné, takže mají spoustu knoflíků a tlačítek pro různé věci, ale oni V okolí datových typů mám nějaké opravd zajímavé nápady, zejména některé praktické způsoby, jak přišli s aplikacemi nápadů z funkčního programování.

Schémata: Schémata jsou přísnou podmnožinou LISP. Schéma byla vynalezena Steele a Sussmanem a v raném životě byla pozoruhodná pro použití v přednáškovém kurzu MIT Computing 101. přednáškový kurz.) Schéma je definována v „Revidované ^ n zprávě o algoritmickém jazykovém schématu (RnRS) "" Ano: mají tam matematický vtip. Schéma je standardizovaný jazyk tak, že ostatní LISP nejsou. To velmi pomáhá s přenositelností mezi implementacemi, ale není to stříbrná střela. Standardizační snahy jsou obvykle konzervativní a inovace v implementacích, zejména kolem věcí, jako jsou moduly, mají tendenci být různorodé. Existuje také řada SRFI (Scheme Request For Implementation), které je podobné procesu RFC IETF. Lidé jej podle potřeby standardizují malé věci.

Schémata se liší od systémů LISP v tom, že mají řadu náročných požadavků, které musí splňovat, jedním z nich je „optimalizace koncových volání“, která pomáhá zefektivnit rekurzi. Rekurzivní styly programování jsou proto v programu mnohem populárnější než v LISP. Schéma je také bez laskavosti jako „C“ LISP. To znamená, že je to malý jazyk a měli byste být schopni vše udržet ve své hlavě najednou.

V současné době existují dvě rodiny schémat: Ty založené na 5. verzi (R5RS) a ty na 6. verzi (R6RS). Složitost R6RS byla výrazně vyšší než u kteréhokoli z jejích předchůdců, a tolik implementací R5RS se rozhodlo ji přeskočit, doufaje, že R7RS bude podobnější R5RS než R6RS. Standardizační proces R7RS v současné době probíhá a pokusil se zahrnout jak přání implementátorů R5RS, tak i přání lidu R6RS standardizací malého základního jazyka v první pracovní skupině a poté pověřením druhé pracovní skupiny standardizovat větší funkce. To umožní, aby jazyk měl efektivní a užitečné implementace jak na malém zabudovaném hardwaru, tak na schopnějších počítačích.

Nyní budu konkrétnější:

PicoLisp je opravdu, opravdu cool LISP. Je to malé! Je to autor, který to napsal pro sebe, a jak to chápu, živil se tím od 80. let. Pokud jste někdy dostali příležitost zúčastnit se jeho přednášky, měli byste to udělat: je opravdu zajímavý a opravdu zná své věci a nezískáš ani nejmenší čich nic hlavního proudu nebo nudy.

Nejsem obeznámen s běžnými implementacemi LISP, takže se k nim nebudu dále vyjadřovat.

Guile je oficiální schéma GNU).

Raketa je schéma R6RS, ale v poslední době se zdá, že rozšířilo síť a snaží se „sloužit jako platforma pro tvorbu, návrh a implementaci jazyka“.

Chicken chce být praktickým schématem. Je založen na R5RS a zkompiluje se na C. Ukázalo se, že je to opravdu, opravdu důležitá výhoda, protože je naprosto triviální používat stávající knihovny C. Proto je Chicken pravděpodobně nejužitečnějším schématem pro nahrazení Perl, Python, Ruby atd. Jako běžného skriptovacího jazyka. Existuje několik lidí, kteří ji používají několik let výhradně pro všechny své potřeby. Má interaktivní REPL) a také kompilátor. Komunita (jak v seznamu adresátů, tak v IRC) je informovaná, přátelská a užitečná.

Podívejte se na implementaci se spoustou modulů: to ukazuje, že je široce použitelná a znamená, že je pravděpodobné, že bude mít něco, co pomůže s úkolem.

Hledejte implementaci s kompilátorem nebo přinejmenším něco, co není striktně IDE nebo REPL založené). Mnoho implementací určených pro výuku je velmi obtížné použít pro obecné účely skriptování.

Chicken bych doporučil, protože to používám. Použil jsem to ve svých osobních projektech a použil (a v současné době ho používám) profesionálně.

Nechci do něčeho investovat zbytečné úsilí, pokud je to úplně zastaralé - stále bych se to učil, pokud by to bylo profesionálně „mrtvé“, ale pouze s akademickou perspektivou ...

Schéma není profesionálně mrtvá, ale možná budete muset jít do určité míry, abyste jej v tomto kontextu použili. Něco jako Chicken je mnohem víc než jen akademické pronásledování a může snadno pokrýt téměř všechny základy všech jazyků na vysoké úrovni, které v současné době používáte.

43
andyjpb

Opravdu nemůžu mluvit pro všechny Lisps, ale Clojure je v současnosti rozhodně horký a relevantní jazyk. Londýnská uživatelská skupina Clojure, do které jsem šel začátkem tohoto týdne, měla přes 100 účastníků ....

Zjistil jsem, že je velmi poučné se učit LISP ve formě Clojure za poslední rok (po mnoha zkušenostech s Java a C #). Hlavními důvody jsou:

  • To má docela silný důraz na funkční programování (více než většina ostatních Lisps). Autor a BDFL Rich Hickey často uváděli Haskella jako jednu z jeho inspirací pro návrh jazyka, což znamená, že dostanete věci jako zcela neměnné datové struktury a líné nekonečné sekvence atd.
  • Makro metaprogramování - filozofie LISP „code is data“ je těžko pochopitelná, pokud jste ji vlastně nezažili, ale je to jeden z důvodů, proč jsou Lisps tak expresivní a produktivní
  • Fantastická podpora vícejádrové souběžnosti - vlastně si myslím, že Clojure je nejlepší jazyk pro současné programování právě teď. Viz http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey , kde najdete poučnou prezentaci o tomto

Rovněž se zdá být praktickou volbou pro skutečné použití z následujících důvodů:

  • Běh na JVM s velmi snadným Java interoperabilitiy vám umožňuje přístup ke všem knihovnám a nástrojům v ekosystému Java
  • Ve výchozím nastavení je to dynamický jazyk , díky čemuž je velmi vhodný pro vývoj a rychlé prototypování s téměř žádným kotlem. Můžete však přidat rady pro statický typ, abyste získali docela dobrý výkon tam, kde je potřebujete.

Osobně vím o lidech, kteří používají Clojure v několika investičních bankách a startupech. Také jsem si vybral Clojure jako primární vývojový jazyk pro svůj vlastní start, takže jsem ochoten dát své peníze tam, kde mám ústa :-)

27
mikera

V současné době se také učím LISP (a mám to rád). Používám Common LISP, ale také jsem si pohrával s SBCL , Arc (poznámka: to je verze LISP Paula Grahama, která, jak zmínil Vitor Braga vytvořil Yahoo store/Viaweb) a Allegro CL což je podobné Visual Studio pro LISP (umí vytvářet GUI, ale nikdy jsem to nepoužil).

Pokud jde o použití, LISP se v Artificial Intelligence hodně používá, ale budu upřímný, nejsem si jistý, kolik dalších „obecných“ použití pro LISP. Mnoho webových stránek, které byly vytvořeny v LISP, bylo původně přepsáno v jiných jazycích, takže je obtížné říci, že se používá při vývoji webových stránek (nehovorím, že tomu tak není, ale větší weby, které jej používají, již nečiní) ). Po rychlém vyhledávání (velmi rychle) je zde seznam softwaru napsaného v Common LISP z Wikipedia .

[ÚPRAVA] Pokud jde o profesionální použití LISP, existují tam místa, která by vás měla použít. Nejsou tak početní, jako řekněme Java nebo C # pracovních míst, ale existují). Myslím, že LISP je jedním z těch jazyků, který se používá pro interní aplikace a může poskytnout konkurenční výhodu, kterou společnosti "Nechci se vzdát reklamou, že používají LISP. Pamatuji si, když jsem viděl příspěvek na P.SE, který uvedl, že Smalltalk byl ve finanční aréně podobný.".

Rovněž schopnost ukázat, že se můžete učit různá paradigmata, může otevřít více dveří, i když v práci nepoužíváte LISP.

"LISP stojí za to se naučit pro hluboké osvícení, které budete mít, až ho konečně dostanete; tato zkušenost z vás učiní lepším programátorem po zbytek vašich dnů, i když nikdy sám LISP příliš nepoužíváte." - Eric Raymond, „Jak se stát hackerem“

[/UPRAVIT]

9
Jetti

Pokud se chcete dnes LISP naučit, podívám se na jednu z raket, což je rychlá implementace schématu (no, vlastně se trochu odchýlila od schématu, takže je to jeho vlastní dialekt) nebo clojure, které těží z JVM, na kterém běží, (takže jsou k dispozici gazily knihoven a navíc si můžete nechat interagovat s vlastním Java kód).

I když se nenaučíte, jak ji skutečně používat, naučit se je vždy prospěšné: naučíte se nové způsoby, jak přemýšlet a řešit problémy, dokonce i v jiných jazycích, jakmile jednou chvíli zabalíte svou mysl kolem LISP.

8
Fabien

Významná část backendu Amazonu bývala v LISP, ale nyní byla přepsána v C++, nebo jsem to slyšel (musím přiznat, že na to nemám spolehlivý zdroj).

Yahoo! Obchody jsou jedním z klasických příkladů webových aplikací LISP. Z Yahoo! Sláva obchodů, o kterých jste možná slyšeli Paul Graham . Graham je jedním z nejznámějších obhájců LISP a píše o tomto tématu rozsáhle. Možná budete chtít přečíst jeho stránky znát jeho body.

AutoCAD měl pro svůj makro systém dialekt LISP. Nevím, jestli to stále dělá.

Schéma je čistý jazyk a velmi elegantní. Pravděpodobně to je můj oblíbený programovací jazyk, takže mě možná zaujme. Pokud bych teď chtěl napsat hlavní aplikaci, pravděpodobně bych napsal kosterní aplikaci v C, rozšířil a definoval obchodní pravidla ve schématu. To mi umožňuje používat schéma a využívat C - pro rychlost a naprostou dostupnost knihoven pro téměř všechno.

7
Vitor Py

Je LISP stále praktikován/používán v dnešním světě, nebo jde o starší jazyk jako FORTRAN/COBOL? Myslím tím, že se kromě zachování existujícího kódu vůbec používá na nových projektech?

Znám několik lidí, kteří dělají Lisps v některých startupech v Silicon Valley, a vím, že Amazon.com používá LISP od začátku (i když jsem slyšel, že jej z nějakého důvodu nahrazují C++?)

Ale jedna společnost, na kterou je třeba dát pozor, je Naughty Dog . Všechny jejich hry jsou psány s dialektem LISP. Původně válcovali vlastní, ale používali MZScheme v sérii Uncharted.

Jaký je nejčastěji používaný dialekt? Narazil jsem na Scheme a Common LISP jako na 2 nejčastější dialekty a chtěl jsem, abys vyjádřil názor na to, který z nich je nejoblíbenější/nejužitečnější, a ten by byl nesmírně potěšen, kdybys mohl navrhnout nějaké zdroje pro začínajícího hodnostáře.

Vsadil bych se, že Common LISP, Clojure, Scheme a Emacs LISP jsou čtyři nejpoužívanější dialekty, a z nich bych měl podezření, že Scheme je nejčastěji nasazený. Nemám samozřejmě co zálohovat, samozřejmě. :)

Raději se mi líbí SICP a Malý Schemer, jak navrhli jiní, ale také bych navrhl Land of LISP , což je docela zábavné čtení. :)

4
greyfade

Myslím, že to částečně záleží na tom, co s tím chcete dělat - pokud se díváte na prohlubování svých vhledů do různých konceptů programování a uděláte ze sebe lepšího programátora, pak bych řekl, že stojí za to se naučit alespoň modicum LISP. Pokud hledáte ještě další jazyk, který chcete přidat do svého životopisu s cílem získat práci s tímto jazykem, pravděpodobně byste se chtěli podívat jinde. Není tam tolik úloh LISP.

Osobně se snažím používat buď SBCL nebo nověji Clojure (a některé Emacs LISP, ale htat je, protože jsem dlouhodobý uživatel Emacs - snažím se naučit Emacs LISP, když se snažím učit LISP). Teď už musím jen najít čas, abych si s těmito jazyky mohl hrát ...

2
Timo Geusch

Nevím, že v LISP je spousta pracovních míst, rozhodně je nevidím. Ale pamatuji si dlouhé čtení o nějaké sondě NASA, kde provozovaly LISP a byly schopny vložit nový kód ze Země.

Také v New Yorku je skupina pro setkávání se spoustou obrovských věcí. Hádám, že pokud máte zájem a jdete do své skupiny pro setkávání v clojure, můžete najít příležitosti k práci v síti a najít práci (ne úlohy v clojure, ale věci jako Java/C++/atd.). Zdá se, že v oblasti New Yorku je to naprosto obrovské, jiné oblasti se mohou lišit.

LISP je také jiný způsob myšlení. LISP a SQL navíc vedou k použití tun vnořených výrazů. Použil jsem SQL za tunu a pak jsem si všiml, že LISP dává větší smysl. Pokud však máte potíže s zvykáním jazyka SQL na super vnořené závorky a výrazy při používání LISP, pravděpodobně bude výrazy SQL mnohem snazší zjistit.

Klasickým příkladem je, jak implementovat MAX (a, b, c). Dalo by se udělat spletitou funkci s partou if if. Nebo můžete jen říct

MAX (MAX (a, b), c)

a použít dva jednoduché vnořené hovory ze dvou položek MAX, které jsou pro mě snadněji čitelné. I když je výkon problémem, možná byste to chtěli udělat i jinak, neobtěžoval jsem se spočítat počet srovnání při použití každé metody ... Také pokud implementujete MAX pomocí makra C nebo jinou metodou, která vyhodnocuje výrazy několikrát nemusíte získat očekávaný výsledek, protože výraz může být vyhodnocen vícekrát, takže pozor s vedlejšími účinky ...

2
Cervo

Dva další body:

Zaprvé, LISP je skvělý jazyk pro psaní kódu, ve kterém jsou interakce mezi funkcemi nebo daty často složité. V mnoha populárních jazycích, pokud jste zmatení, proč program dělá to, co dělá, musíte napsat speciální funkce, které vám umožní prozkoumat vnitřní stav programu v průběhu jeho trvání. V některých jazycích pak musíte počkat, až se váš kód zkompiluje. Samozřejmě mohou existovat nástroje, jako jsou debuggery, které s tím pomáhají. V LISP však potřebujete pouze způsob, jak zastavit program, a pak obvykle máte přístup k všechno v LISP. V obyčejném LISP, někdy jen napíšu ^ C, nebo vyvolám volání error do jediné funkce (což je jediná věc, která musí být překompilována a nemusíš nic dělat, abys ji překompiloval) . Jakmile program zastavím, okamžitě jsem hozen do debuggeru - ale debugger mi dává veškerou sílu LISP a mohu opustit debugger, volat specifické funkce atd. Mohu snadno prozkoumat jakoukoli datovou strukturu v mém programu. Většina schémat by měla umožňovat podobné postupy. LISP není v tomto ohledu jedinečný, ale to, co nabízí, přesahuje to, co nabízí mnoho populárních jazyků.

Za druhé: Pokud se chystáte experimentovat s jakýmkoli dialektem LISP, nedělal bych to bez (a) používání editoru, který odpovídá závorkám, a (b) učení správného odsazení LISP. Bylo by dobré použít editor, který bude aproximovat správné odsazení i pro vás. Formátování kódu ve stylu C/C++/Java je navrženo pro jazyky s menším počtem závorek/závorek/závorek než LISP. LISP pěkný styl tisku funguje dobře, jakmile se s ním obeznámíte, a neskončíte zmatení závorkami nebo plýtváním poloviny místa tím, že na jeden řádek zadáte jednu závorku.

2
Mars

Chtěl bych přidat nějaký pohled na Common LISP a Scheme. Vyhnul jsem se clojure kvůli JVM, takže na to nemám moc perspektiv.

Schéma je krásný výstižný, dobře definovaný jazyk. Trvalo mnoho rozhodnutí, která musela CL učinit kvůli dědictví, a zvolila čistší přístup. Například proměnné a funkce jsou ve stejném jmenném prostoru. Výchozí jazyk je menší a stručnější, což funguje dobře, aby vás naučilo nejrůznějším věcem, v nichž je LISP dobrý, například tlačí na využití rekurze namísto iterace, protože ve výchozím nastavení nemá žádné iterační smyčky a vyžaduje optimalizaci koncového volání . Schéma má velmi zajímavý hygienický makro systém, který má pro učení velkou hodnotu. Ale IMO, doporučil bych nejprve naučit se nehygienická makra ve stylu CL, z nichž většina (?) Dialektů schémat nabízí alespoň jednu implementaci, i když to není součástí specifikace. Protože se velmi zdá, že se chcete učit jazyk kvůli učení, doporučil bych Scheme, protože navíc je mnoho jeho konceptů snadno převedeno na jiné lupínky a obecně dynamické jazyky.

Nicméně, komunita Schéma je roztříštěná a zdá se, že kromě několika malých kapes se většinou věnuje výzkumu, jak dosáhnout skutečné práce ... Například každý dialekt má svého správce balíků a balíčky jsou většinou nepřenosné napříč dialekty, což je v komunitě programů obrovský problém.

Společný LISP se naopak zdá být mnohem pragmatičtějším přístupem k vývoji jazyka. Standard je takový, že mnoho LISP kódů je přenosných mezi implementacemi, mnoho kompilátorů je rychlé a dobře optimalizovaných. Existuje velká sada balíčků, z nichž mnohé jsou přenosné mezi implementacemi. A zdánlivě (poměrně) velké množství skutečných produktů se v jazyce vytváří. A řekněme quicklisp, správa balíků se cítí přiměřeně blízko tomu, co byste získali v moderní komunitě, jako je například Ruby nebo Node. CL však není bez nedostatků, má v tomto bodě ve srovnání se schématem velmi velkou specifikaci a dokonce i objektový systém CLOS, něco, co je tradičně psáno jako knihovna v Lisps, je součástí spec IIRC. A můžete cítit dědictví zakořeněné ve velkém množství systému. Standardní přístupový systémový přístup extrahování obrazu pro kompilaci se například cítí obzvláště tajemně.

Jinak jsem řekl, že nemůžu mluvit o clojure, a Emacs LISP je zjevně tou správnou volbou, pokud je vaším cílem psát rozšíření Emacs, a rozhodně to není vhodná volba pro jiný software.

TLDR; Pokud je vaším cílem učit se, doporučuji schéma. Pokud však chcete vytvořit software, doporučuji Common LISP ze dvou hlavních variant LISP.

1
Arelius

Právě teď mám dojem, že LISP se většinou používá v poradenských obchodech (nikoli to, že jej většinou používají poradenské obchody).

Je to považováno za trochu pobouření pro praktický software. Věřím, že většinou na to lidé nejsou zvyklí.

Tradičně je schéma poměrně akademickým dialektem LISP a obyčejný LISP byl průmyslovým dialektem.

LISP je zvláště užitečný pro symbolické manipulace a reflexní schopnosti.

Například kód, který jsem napsal, abych se naučil LISP, byl program, který konstruoval náhodné lambda funkce, vyhodnotil je a poté na nich pracoval, aby se minimalizoval rozdíl funkce s cílovou funkcí. To všechno byla přímá manipulace. V jazyce jako C++ nebo Java bych musel vymyslet reprezentaci funkcí, se kterými by počítač manipuloval.

1
Paul Nathan

Dalším faktorem, který je třeba zvážit při výběru dialektů LISP, které se mají učit, může být počet a kvalita implementací. Pokud má dialekt pouze jednu nebo dvě implementace, pak jste zaseknutí se svými vadami, dokud se tyto nedostatky neopraví, a vždy existuje šance, že lidé přestanou rafinaci implementovat. To samo o sobě není důvodem k tomu, aby se nepoužívalo jedno implementační dialekt LISP, ale je to něco, co je třeba vzít v úvahu. Výhodou schématu a společného LISP je to, že existuje mnoho implementací těchto dialektů. Oba jazyky mají zveřejněné standardy, takže relativně nedávné implementace pravděpodobně spouští stejný kód, většinou. Některé z těchto implementací byly již dlouho, ale stále se vyvíjejí: Jsou to nyní vysoce kvalitní implementace a stále se zdokonalují. (Například výše uvedený SteelIS Common LISP - SBCL - je extrémně rychlý. Zajímalo by mě, jak snadné by bylo učinit LISP na bázi JVM tak rychle.)

0
Mars

Z odpovědí jsem se toho hodně naučil. Děkuji všem, kteří přispěli k této poučné konverzaci.

Měl bych zmínit newLISP . Přestože se trochu liší od CL i schématu, implementuje mnoho velmi užitečných funkcí. Považuji http server, multi-processing funkce (Cilk) a funkce vzdáleného vyhodnocení za velmi čisté a snadno použitelné.

Jeden spustitelný soubor je malý, rychlý a obsahuje spoustu chladných baterií.

0
CyberFonic