Ehm...upřímně, já nevím, kdo z lisperů může pohrdat novinkami. Řekl bych, že asi nikdo: Oni je totiž prakticky všechny vymysleli, minimálně tedy ty nejpodstatnější.
Mimochodem, spousta lidí dělá weby v lispu. Vzhledem k popularitě obou jazyků na absolutní čísla samozřejmě vede Python, ale procento lisperů dělající weby v lispu vůči celkovému počtu lisperů se asi nebude moc lišit od procenta všech pythonistů dělajících weby v pythonu vůči všem pythonistům.
Teoretická elegance není podstatná. Ta je možná důležitá pro vývoj kompilátoru, ale z hlediska programátora je spíš na škodu, protože existuje určitá množina běžných operací, které chceme obvykle v programu provádět, a ta se zrovna nekryje s nějakou teorií. Myslím, že se tomu obecně říká "vzory" (patterns). Takže pokud máte minimalistický jazyk (jako Lisp nebo Smalltalk), tak z principu (minimalismu) nepokrývá mnoho těchto vzorů, a:
1. Beztak se je programátor musí naučit, akorát bude používat podivnou syntaxi, která je dána minimalismem jazyka.
2. Nejsou v tom jazyce přímo dány, a tedy je pravděpodobnější, že je každý použije v trochu jiné podobě, a tím se sníží srozumitelnost cizího kódu.
...a právě proto je neodmyslitelnou součástí Lispu eliminace tzv. vzorů prostřednictvím syntaktických transformací všeho druhu (proto všechny ty makrosystémy). :-) Je to jednoduché, sám říkáte, že je ta elegance důležitá pro autora kompilátoru - hlavním motivem Lispu je právě zapojit (aspoň občas, nikdo neříká, že pořád!) programátora jako spoluautora jazyka i kompilátoru. Je zajímavé, jak to koresponduje se svobodným softwarem: Tak, jako je uživatel postaven prakticky na roveň autorovi co do práv, i v Lispu je aplikační programátor postaven prakticky na roveň autorovi kompilátoru, co do možností.
Tedy tvrdím, že v 99% věcí napíšete v praxi čitelněji a snáz v Pythonu právě proto, že se nesnaží být naprosto elegantní, ale jenom tak nějak prakticky elegantní.
Je to podobné jako v matematice - samozřejmě by matematici mohli pro komunikaci používat jazyk logiky prvního řádu, ale bylo by to velmi těžkopádné, právě z důvodu určitého minimalismu. Proto v praxi používají aritmetické symboly a integrály, byť jde o velmi speciální záležitosti (z hlediska matematické logiky).
Souhlasím. A proto se neprogramuje pomocí bitových posuvů a podmíněných skoků, ani pomocí beztypových lambd. Myslím, že Python i Lisp jsou na tom co do praktické expresivity vyrovnaně. To, co píšete, platí spíš pro Scheme, ale jak tím vysvětlíte existenci velice praktických a značně neteoretických (== „jsou předmětem všelijakých flejmů mezi samotnými lispery“... ;-)) maker LOOP a ITERATE? (Případně naprosto geniální věc jménem SERIES, ale to už pro některé může smrdět funkcionální magií... ;-))
Trošku si rýpnu - vždyť Python Lisp compiler existuje od roku 1985... ;-) Mám pocit, že jsem pár takových návrhů (kompilátor jazyka Python do/v Lispu) viděl, ale vzhledem k tvrzení předchozí věty se dost špatně hledají Googlem.PS. Pokud jsou kompilátory Lispu rychlejší než kompilátory Pythonu, proč někdo nenapíšete překladač Pythonu do Lispu, hm?
Existuje velice malá množina slov / obratů, které se používají skoro pořád a ten obrovský zbytek jenom občas. Python se snaží udělat používání této malé množiny velice jednoduché trochu na úkor použití toho zbytku. Já sám jsem se snažil LISP pochopit a používat (konkrétně Common LISP), ale docela tvrdě jsem narazil. Udělat v něm cokoliv je totiž neskutečně komplikované, hlavně kvůli té minimalistické syntaxi a sémantice. Naproti tomu Python je až brutálně jednoduchý (seznamy. slovníky, intensionální seznamy atd). LISP můžu obdivovat, ale programovat bych v něm nechtěl.Máte samozřejmě pravdu. Ale všechno je asi dost subjektivní otázka vkusu a hlavně způsobu myšlení – přesně z toho důvodu má Perl všechna ta zájmena ($_, $1, $2 a podobně...) Viz třeba stránka http://www.wall.org/~larry/natural.html. (Larry Wall je lingvista a na návrh Perlu to asi mělo vůbec největší vliv.)
Přijde mi, že každý jazyk má nějakou tu svou množinu "sweet spotů", leckdo třeba upozorňuje, že a=b+c je jednodušší než (setf a (+ b c)) a nepochybně má pravdu, ale relativní frekvence výskytu takových věcí ve skutečném kódu asi nebude obdobná, už jen proto, jak zřídkavou operací je v kanonickém Lispu nebo Scheme přiřazení (viz SICP, třeba... ;-)). Zarytí odpůrci Lispu přitom taktně mlčí o 0+–aritě operátoru #'+ ( (+), (+ 1), (+ 1 1), (+ 1 1 1 ... 1)), která má své uplatnění, a o tom, že díky tomu umí věci jako (apply #'+ sekvence-dat-libovolne-delky-klidne-treba-i-prazdna).
Ještě lepší jsou věci jako (reduce #'+ data), kterým stačí i specializovaná binární verze operátoru, kterou kompilátor může snadno inlinovat. Z hlavy mě nenapadá pythonovská verze, která by byla kratší a nebylo to přitom volání pomocné funkce. (BTW, komu chybí v Lispu pythonismy, může si je tam dopsat, infix už existuje snad od nepaměti. :-))
Ergo, každý jazyk se snaží nějak komprimovat kód, ale většina zavržení z řad potenciálních uživatelů IMHO pochází buď z nepochopení správného stylu, nebo ve zjištění, že „mi to takhle prostě nesedne“. To samozřejmě není zločin. :-) No a pak jsou tu ty věci jako srozumitelnost. Pokud někdo přichází z Cčka, pak Python pro něj s největší pravděpodobností právě Python bude tím pravým Lispem. ;-) Což myslím jen a jen pozitivně. Já se tak nějak snažím pokud možno vrtat ve všem, a to i pokud mi jazyk přijde ne úplně pochopitelný, páč je mi jasné, že opravdu špatnou věc, by podstatná masa lidí nepoužívala (z určitých úhlů pohledu mají výdohy dokonce i Cobol a Java... ;-)), ale z nějakého důvodu mě to k těm závorkam pořád vrací. A nic s tím nenadělám, jsem ztracený případ:-)
Jenže kolik informačních systémů je vytvořeno v LISPu? Podobně bych se mohl ptát na jiné oblasti, na kterých stojí a padá IT (manažerské systémy, bankovní systémy a konečně i desktop aplikace).
Jenomže ne všechno v computingu jsou tabulky a databáze a tak. Veliké procento těchhle aplikací je spáno v konzervativních prostředcích prostě proto, že na to jsou nástroje, software, „best practices“. Ale co jinak? Co když člověk řeší úkol, o kterém je obtížné dokonce i uvažovat, natož rovnou nadatlovat kus kódu podle nějakých patternů a firemních směrnic? Jo, jde především o AI, ale ta čím dál tím víc proniká do mainstreamu. (Já třeba soukromě řeším natural language processing jako koníček a vůbec inteligentní práci s textem.)
Já myslím, že i ty informační systémy by z Lispu velice profitovaly. Franz dělá masivní objektovou databázi AllegroCache (lispovský ekvivalent smalltalkovského Gemstone), s některými velice působivými vlastnostmi. Jak jich dosáhli? Využili rozšiřitelnosti jazyka. To mi s logikou prvního řádu nejde moc dohromady.
Tím neříkám, že by všichni měli začít dělat v Lispu. Je to věc každého, co použije, a většina lidí je snad rozumná. Ale když se objeví takové hovado jako tonda, tak se zkrátka nemůžu neozvat. Ten jazyk nepřežil padesát let jen tak pro nic za nic, stejně jako třeba Cobol, který je sice divný, nepružný, ale pro původní účel byl navržen dost dobře. (Myslím, že teď nemluvím z cesty. Ten jazyk měl velice konkrétní cílovou skupinu.) Na Wall Streetu třeba rádi používají pro informační systémy jazyk K, kvůli jeho vlastnostem, přitom jak čtu tuhle diskuzi, z jazyka K by polovině čtenářů asi vypadaly vlasy. :-D Je mi velice zatěžko označit nějaký jazyk jako odpad, přesto tak někteří činí. Přiznám, že sám nechápu moc pointu existence Visual Basicu a částečně i Javy a C++. Ale tondovi jsem se holt nemohl neozvat. :-)
Asi by to chtělo nějaký uspořádat lispfest nebo lispcon pro zájemce, mohli bychom tam i přinést nějaké šlehačkové dorty. :-)