Syntaxe Lispu je lepší proto, protože se celá syntaxe dá realisticky naučit během pár minut. Ať zrovna používáte jednoduché proměnné, pole, struktury, funkce, objekty (OOP), makra, smyčky, ify a jiné výrazy pro větvení kódu, deklarujete typy či cokoliv dalšího, tak všechno má stejnou syntaxi. Takže jakmile si na tu syntaxi (L-výrazy) zvyknete, tak je daleko jednodušší proniknout do podstaty toho, co daný kód dělá než u jiných jazyků, protože vůbec nemusíte přemýšlet nad syntaxí. Dost velký rozdíl oproti práci např. s takovým C++, kde třeba stačí chvilku s tou technologií nedělat, a už se jí pak musíte znova učit.
+ je zde ten fakt, že Lispovské seznamy jsou velice jednoduchý a univerzálně použitelný datový formát, který zjednodušuje implementaci kompilátorů. To už je ale téma formátu dat, nikoliv syntaxe jazyka (byť to spolu v tomto případě souvisí).
LISP syntax je špatná kvůli nadměrnému používání závorek, což činí kód vizuálně nepřehledným a složitým na čtení. Prefixová notace operací je neintuitivní, zvláště pro ty, kteří jsou zvyklí na tradiční infixové zápisy. Hluboké zanořování závorek zvyšuje složitost a pravděpodobnost chyb při jejich uzavírání, což často vede k těžko odhalitelným chybám. Výsledkem je, že tento jazyk neuspěl.
Syntax Hy je hodně inspirovaná Clojure, takže využívá více [] a {}. Upřímně, vizuální přehlednost nebo nepřehlednost je hodně subjektivní. Mě třeba syntaxe Clojure (a tedy i Hy) vyhovuje hodně a jazyky syntakticky podobné C mi nejsou na psaní příjemné. Zkrátka každý máme nějaké preference.
Ve výsledku je určitě v Lispu při řešení stejného problému těch závorek výrazně méně, než ve srovnatelném kódu např. v Javě nebo TypeScriptu.
Prefixová notace a seznam argumentů mi přijde jako chytrý tah. Vůbec není třeba řešit precedenci operátorů, protože žádné operátory nejsou. Umožňuje to úplně jiný druh přemýšlení a jednodušší práci s daty.
Žádný profesionální programátor kterého znám nemá v Lisp/ Scheme problémy se závorkováním, protože pracuje celou dobu strukturálně, kdy editor vnořuje/ vynořuje struktury a samozřejmě udržuje balancované závorky. Dále má většina těchto programátorů barevné závorky podle úrovně zanoření.
Za sebe jsem za Hy, Basilisp, libpython-clj apod. rád, protože mi umožňují s Pythonem a jeho ekosystémem pracovat z mého pohledu příčetnějším způsobem.
"LISP syntax je špatná kvůli nadměrnému používání závorek,"
Porovnejte si množství závorek u ekvivalentního kódu Lisp[u/ů] vs C++ nebo Javy.
Jednoznačně Lisp bude mít závorek více, ale je to fakt takový rozdíl ??
"Prefixová notace operací je neintuitivní"
Pro Vás třeba ano, pro mě je naopak velice přehledná - vyjma matematických funkcí, kde to dost zhoršuje čitelnost i pro mě. Všude jinde je to ale o zvyku.
"Hluboké zanořování závorek zvyšuje složitost a pravděpodobnost chyb při jejich uzavírání"
1) Shodu závorek má kontrolovat editor/IDE v reálném čase.
2) Dnešní moderní Lispovské implementace umožňují používat všechny tři typy závorek: (), {} i [] a kontrolují shodu typů závorek (u Common Lispu třeba ne, ale u Racket a Scheme se to v kódu používá běžně). Tím se dostáváte na úroveň výše zmíněné Javy a C++.
"Výsledkem je, že tento jazyk neuspěl."
Lisp neuspěl, protože:
1) s částí svých vlastností výrazně předběhnul svojí dobu. Např. Lisp byl průkopníkem GC v 70. a 80. letech - programátoři toto odmítali, protože nebyla dobře optimalizovaná a když už zoptimalizovaná byla, tak už měl Lisp pověst pomalého jazyka a pomalu se do IT světa sunuly tehdejší sexy jazyky jako Java a Perl/Python.
2) Common Lisp až relativně do nedávna (2005-2010) neměl dodatečné náležitosti (standardní knihovnu, make systém, ...) což umožnilo jazykům s "batteries included" (Python apod.) Lisp předběhnout. Dnes má Common Lisp už 15+ let ASDF (make systém) a Quicklisp (repozitář SW) a jsou tu knihovny, které se etablovaly a jsou defacto standardem pro ten jazyk (např. Bordeaux-Threads a Lparallel pro vícevláknové a paralelní programování) - to už ale bylo s dost velkým zpožděním oproti Javě a Pythonu. Některé další Lispy (různé implementace Scheme apod.) nemají dostatečné zázemí ani dnes.
Jednoznačně největší důvod neúspěchu Lispu je ale přístup programátorů, kteří jako odměnu za prošlapání cesty (GC, kompilátory, editory, historicky byl Lisp významný i v oblasti vývoje GUI) ukázali Lispu svoje prostředníčky a zadky.
25. 9. 2024, 15:06 editováno autorem komentáře