Na co všechno je dobrý LISP?

stewe

Re: Na co všechno je dobrý LISP?
« Odpověď #45 kdy: 28. 03. 2011, 23:28:33 »
dalsia vec je napr. znovupouzitelnost kodu, sice nieco mozete naprogramovat namieru, ale znova to niekde pouzit, s tym mozete mat urcite problemy, dlhsie to trva, musite to prekopat a podobne, co sa vam pri programovani typu "import java.util.*;" asi odpada :)


Inkvizitor

Re: Na co všechno je dobrý LISP?
« Odpověď #46 kdy: 28. 03. 2011, 23:28:43 »
Nechtěl jsem do toho zasahovat, ale to, že je ten les závorek nečitelný, to je naprostý blud.

Takhle ostře jsem to myslím neformuloval, ale že mi Lisp přijde méně čitelný než některé jiné jazyky, je prostě fakt. Zvyknout se na to určitě dá, ale to se dá i na solva pasná s přehozenými znaky nebo s hrupkamy. Akorát můj mozek musí vynaložit větší námahu.

Základní rozdíl mezi tím vaším "metajazykem" Lisp a třeba céčkovými typy jazyků je ten, že v lispu má každý řádek hutný význam, natož céčkové zdrojaky jsou roztahané, plné deklarací a podobně. Tudíž z toho plyne, že kolikrát kratičká funkce napsaná v lispu dělá to samé, jako 100 řádků v céčku a časově pro pochopení té funkce a proletění 100 řádků to vychází na stejno, ne-li pro lisp na kratší dobu. V tom je ten Váš "závorkový problém" a kolikrát mám problém s čitelností v mých programech, třeba, když se používá více cyklů v maticích a potřebuji těch matic více a z firmy mi napíší třeba po půl roce, že je to třeba upravit... (foreachem to udělat nejde a prasácky to napsané taky není)

Jazyk C jsem ani nezmiňoval. To je úplně mimo dosah naší diskuse. Jsou ale jazyky, které nejsou plné deklarací ani roztahané, přestože jejich syntaxe je od Lispu vzdálená na míle daleko.

Prefix/infix/postfix neřeším. No comment, to není problém jazyka, ale Vás, omluvte mou prostořekost.

Pokud to má být narážka na moji vlastní nedostatečnost, tak to neberu a ne z toho důvodu, že by mě to nějak uráželo. Těžko totiž lze tvrdit například o programátorech v Haskellu, Concurrent Cleanu nebo SML, že by nebyli schopni používat všechny funkce v prefixu. To, že tyto jazyky umějí definovat vlastní infixové funkce (operátory) a že se toho zhusta využívá, podle mě svědčí o tom, že se to může hodit i vysoce inteligentním lidem. Pokud chcete tvrdit, že prefixový operátor je pro někoho stejně přirozený jako infixový (zvlášť pokud vyšel ze standardního školského prostředí), neberu Vám to. Ale chtěl bych takového člověka vidět.

Rozšiřitelnost a agnosticismus. No, já nevím, tento jazyk byl a zřejmě bude vždy pokusným prostředím pro konstrukty pro ostatní programovací jazyky. Razí teorii, která se mi velmi líbí a to: "Pokud máme tu možnost dát uživateli silné nástroje, tak mu je dejme." O tom svědčí samotná plná programovatelnost toho jazyka, možnost psaní maker, úprava všech částí REPLu. Vím, že určitě nastane připomínka: "A co bezpečnost jazyka?". Většina lidí, co v tom někdy něco lehce dělala o tom ani neví, takže to nemohou ani řešit nebo prostě na to nemají buňky. Zároveň takový "programátor" je cvičená opička, která se musí držet za ručičku, aby náhodou něco nepokazila.

Jistě, v Lispu lze simulovat leccos a zřejmě i vymyslet nějaký konstrukt, který zatím nikde jinde není (dnes už nicméně asi není důvod ty konstrukty testovat v Lispu, protože existuje spousta komfortních způsobů, jak rozšiřovat jazyky a zkoušet nové věci - interní DSL, kombinátorové parsery apod.). Nicméně v Lispu to je bez toho syntaktického cukru. Každopádně bych v Lispu chtěl vidět něco jako algebraický datový typ. Wikipedia tvrdí, že v Common Lispu jsou, nicméně jsem například nikde nenašel životaschopnou implementaci, která by byla verifikovatelná v čase překladu.

To, že je někdo super programátor, neznamená, že nedělá chyby a že je dobré (z praktického hlediska) za každou cenu nechat kód volně plynout bez jakýchkoli omezení. K Lispu mám respekt, ale (jak už jsem psal v jiných diskusích), považuji statické typy čím dál častěji za užitečnou vlastnost. A nevím, jestli declare z Common Lispu poskytuje typovou kontrolu třeba na úrovni Haskellu (zdravím přítele volnomyšlenkářského komiksu). Rád se nechám poučit.

jehovista

Re: Na co všechno je dobrý LISP?
« Odpověď #47 kdy: 28. 03. 2011, 23:39:41 »
Chapu to spravne tak, ze LISP je dnes uz vlastne jen prostredek k tomu, aby se mohlo par asocialnich zivlu vymezovat a placat se po ramenou?
P.S. S LISPem mam neminimalni zkusenosti a jako jazyk se mi libi, ovsem nektere vypady jeho priznivcu jsou opravdu smesne.

Re: Na co všechno je dobrý LISP?
« Odpověď #48 kdy: 28. 03. 2011, 23:53:16 »
považuji statické typy čím dál častěji za užitečnou vlastnost.

Taky jsem k tomu dospěl. A když mě chytla zoufalost, co že teda budu používat místo Pythonu, objevil jsem Boo :)

P.S. tímto příspěvkem nikoho k ničemu nevybízím a nic neprosazuju. Flame o statickém typování jsem si už jeden zažil a myslím, že jeden za život je tak akorát dost ;)

jan.palencar

Re: Na co všechno je dobrý LISP?
« Odpověď #49 kdy: 28. 03. 2011, 23:54:55 »
@Stewe Keby si napriklad pouzil Clojure tak zistis ze cely java.util.* nepotrebujes pretoze to tento jazyk ma sam v sebe ako zakladne konstrukty. Doporucujem pozriet http://rosettacode.org/wiki/Category:Programming_Tasks.

Kazdy jazyk vie specificky riesit dobre len urcitu podmnozinu problemov.
Vzdy je potreba si zvolit vhodny jazyk k danemu problemu. LISP ako taky ze si ten jazyk mozem napisat vlastny okolo problemu. Potazmo Clojure a to este bezi v JVMke.

Moja ziva skusenost je ze pri tvorbe posledneho projektu v Jave, som robil nasledovne kroky.
Preniesol som DATA z WS, Presunul ich cez vrstvy architektury, zmenil som stav a dal som o tom vediet spat. No a pri tomto som naozaj napisal hodne niecoho comu sa hovori boilerplate code.

GL.


Kit

Re: Na co všechno je dobrý LISP?
« Odpověď #50 kdy: 28. 03. 2011, 23:56:49 »
dobra poznamka, ja som s lispom prebehol nejake tutorialy a mne sa zda, ze velmi dlho trva, kym cele to "myslenie" spravne pochopite a ste schopni ho aplikovat do praxe. lisp je sice flexibilny, ale prave flexibilnost prispieva k neprehladnosti a vyvoj v tom jazyku moze trvat dlhsie ako v "konvencnom", proceduralnom, jazyku. peniaze = cas. cim ste schopni dodat funkcne riesenie rychlejsie, tym lepsie pre vas, az na specificke pripady jazyk nezohrava ulohu. ja myslim, ze programovanie v lispe, ked naozaj nieco chcete naprogramovat, je zdlhavejsie ...
Tohle mi připadá velmi trefné. Kvalitní zápis programu v Lispu je sice vývojově zdlouhavější, ale výsledný kód je výrazně kratší a je efektivnější. Záleží na prioritách.

Re: Na co všechno je dobrý LISP?
« Odpověď #51 kdy: 29. 03. 2011, 00:02:06 »
Kvalitní zápis programu v Lispu je sice vývojově zdlouhavější, ale výsledný kód je výrazně kratší a je efektivnější.

Efektivnější než co?

JS

Re: Na co všechno je dobrý LISP?
« Odpověď #52 kdy: 29. 03. 2011, 07:44:50 »
Dosť bolo teórie o tom aký je lisp úžasný jazyk, je mi jasné že LISP je z pohľadu teórie veľmi flexibilný, ale je lisp použiteľný aj v praxi? Mohol by sem nejaký znalec jazyka LISP napísať čo konkrétne sa dá v LISPe robiť? aké sú pre LISP frameworky knižnice, prostredia atď. či pre lisp existuje nejaký základný framework, nejaké frameworky na tvorbu GUI, MVC webové frameworky, entreprise frameworky, ORM frameworky, Frmeworky na prácu s grafikou, multimédiami, hrami atď. a či pre lisp existuje podobný archív knižníc ako napr. CPAN pre perl? Čo sa týka vývojového prostredia v akých IDE sa vyvýjajú LISPové aplikácie? Je pre lisp nejaké RAD vývojové prostredie, ktoré by umožňovalo podobne rýchly vývoj aplikácií ako NetBeans, IntelliJ IDEA, alebo Visual Studio? Keby som si vybral LISP znamenalo by to že by v tom programátori dokázali písať aplikácie rýchlejšie a za nižšiu cenu ako v .NET alebo Jave?

Takove veci samozrejme existuji, ale nejsou zadarmo (LispWorks, Allegro CL). Co se tyce OSS knihoven, quicklisp.org. V podstate oboji uz tu padlo, co takhle precist si nejdriv poradne diskusi?

Jinak pokud budete mit dobre programatory, bude to rychleji a za nizsi cenu. Pokud budete mit lepice, vyjde to nastejno.

JS

Re: Na co všechno je dobrý LISP?
« Odpověď #53 kdy: 29. 03. 2011, 07:51:27 »
Pominu, že jsem se ptal na něco praktického - a definovat si vlastní while mi zrovna moc praktické nepřijde :)

Vazne? Znate diskusi o "Elvis operatorech" v Jave? V Lispu je tohle otazka na 2 radkove makro. Ano, vlastnost je to neprakticka - dokud nenarazite na situaci, kdy se sakra hodi.

Je proste faktem, ze vhodna makra umoznuji zkratit a zprehlednit kod zpusobem, kterym to funkce (ani tridy) nedokazi.

bedna

Re: Na co všechno je dobrý LISP?
« Odpověď #54 kdy: 29. 03. 2011, 09:16:10 »
Tak to ukončeme. Na co se Lisp používá tu bylo řečeno. Jestli má tento jazyk smysl - asi má, jinak by nebyl stále dále vyvýjen pro komerční užití. (na příkladu Lispworks - asi si to musí někdo kupovat, z čeho by zaplatili vývoj? open source komunita to nedělá) A kdyžtak koukněte tu http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (v další diskuzi), co se děje s Lispem. Že by si jej oblíbilo tolik studentů... :-) A kaněc filmá z mé strany.

marwyn

Re: Na co všechno je dobrý LISP?
« Odpověď #55 kdy: 29. 03. 2011, 09:50:51 »
LISP = Lost In Stupid Parenthesis, ale k tomu si musíte dojít sám, až Vás opustí to počáteční nadšení  ;D

LISP = Language Intended for Smart People, ale k tomu inteligencí méně obdaření jedinci nemohou dojít nikdy ;-)

Pokud vy programujete v LISPu, pak budete zřejmě výjimka potvrzující pravidlo.

nm - novomente

Re: Na co všechno je dobrý LISP?
« Odpověď #56 kdy: 29. 03. 2011, 12:40:28 »
Tak jsem trochu googlil a zjistil jsem, ze krome zde zminenych uziti LISPu jsou i dalsi, jako je treba semanticky web, webove planovani (dovolena, letecke a jine prepravni spolecnosi), take ve vojenstvi (AI) apod. Sice jsem nenasel nijak zavratne komercni pouziti, ale existuje toho docela dost.

Nekdo na zahranicnich webech psal, ze zajem o programatory v LISPu neni. Nekno jiny zase psal o tom, ze firem neni mnoho, ale zato ty firmy, co jsou, neustale hledaji programatory v LISPu, protoze je jich nedostatek.

Take jsem cetl pomerne dobre prirovnani, ktere vyjadruje, proc vetsina lidi radsi voli Cecko nebo Javu pred LISPem. To prirovnani zni asi tak, ze vam nekdo da za ukol opravit auto a nabidne vam k tomu 2 sady naradi. Jedna sada obsahuje par jednoduchych naradi se kterymi se da auto docela snadno spravit (Cecko, Java). Druha sada obsahuje dily, ze kterych si muzete sestavit opravdu jedinecne a skvele naradi, se kterym si pak auto jednoduse spravite (LISP). Vetsina lidi si pak radsi vybere tu sadu prvni.

Krome tohoto prirovnani jsem take cetl nazory, ze vetsina lidi od LISPu odrazuje uplne jine mysleni, ktere se pri programovani pouziva. Zatimco v Cecku a Jave etc. se mysli tak, ze nejprve udelej krok A, pak B, pak C, D a nakonec E. Tak v LISPu to je spise udelej krok A, pomoci ktereho udelej krok B s jejichz pomoci udelej krok C a D abyses zaverem dostal az k E.

Spolu s temito duvody se pak uvadeji dalsi odrazovaci duvody, jako ze LISPovsky kod neni blizky lidske reci a jejimu zapisu, ze se s LISPem bezne nesetkavaji studenti ve skole, ze je malo pracovnich mist pro programatory v LISPu, atd.

Co rici zaverem. LISP se stava pouzivanejsim, jak je patrne z nekterych srovnavacich tabulek. Vice se take blizi doba vetsiho pouzivani ruznych druhu umele inteligence. Pro zajimavost muzu uvezt, ze jsem napriklad cetl, ze se chystaji takove webove sluzby, ze kazdy uzivatel bude mit sveho osobniho asistenta, ktery uzivateli bude navrhovat a planovat jeho pracovni a volny cas v zavislosti na tom, kde se uzivatel nachazi, kolik je v jeho miste hodin, co ma rad, jake ma povinnosti, jake ma charakteristicke vlastnost atd.

Mozna bych se mohl jeste zeptat, jestli tady na rootu je nekdo, kdo v LISPu programuje ve firme nejakou komercni vec, pripadne jestli je tu nekdo, kdo s LISPem pracuje na akademicke pude. A jestli muzete, tak bych vas poprosil, abyste napsali co ten program v LISPu bude delat - nejake konkretnejsi vysvetleni jeho vyuziti.

Diky


P.S. Ty jo kluci, co je to "flame". Prelozeno z anglictiny je to "plamen". To jako znaci plamennou diskusi? Jako ze to je fakt horka diskuse? Nebo jako ze se kolem tematu rozhori velka diskuse?

Re: Na co všechno je dobrý LISP?
« Odpověď #57 kdy: 29. 03. 2011, 13:32:11 »
Tak jsem trochu googlil a zjistil jsem. Co rici zaverem. LISP se stava pouzivanejsim, jak je patrne z nekterych srovnavacich tabulek.

Možná jsi použil špatné nástroje Googlu. Z jakých tabulek je patrné, že je Lisp stále používanější?

Já jsem našel něco jiného: http://goo.gl/DDBnR  (když si tam přidáš "C#", LISP úplně zmizí ze scény...)

A co se týče zaměstnání, tak třeba: http://goo.gl/RCfPf

Chapu to spravne tak, ze LISP je dnes uz vlastne jen prostredek k tomu, aby se mohlo par asocialnich zivlu vymezovat a placat se po ramenou?

Tak peprně bych to asi neřekl (ale zasmál jsem se, to jo :), ale ta diskuse tak vypadá :( Konkrétních argumentů jako šafránu, zato emotivních srovnání typu "jazyk pro programátory a ne pro cvičené opice", "reálná a komplexní čísla", "nářadí" habaděj...

Tak to ukončeme. Na co se Lisp používá tu bylo řečeno.

Ano :)

Viky

Re: Na co všechno je dobrý LISP?
« Odpověď #58 kdy: 29. 03. 2011, 13:38:35 »
P.S. Ty jo kluci, co je to "flame". Prelozeno z anglictiny je to "plamen". To jako znaci plamennou diskusi? Jako ze to je fakt horka diskuse? Nebo jako ze se kolem tematu rozhori velka diskuse?

Nenazýval bych to zrovna flamem. To je jako by ses na srazu diskotékových DJs vyptával, co si myslej o Bachovi, jestli má smysl se jím zabývat a jestli má smysl učit se hrát na piáno. Asi takovou relevanci má diskuse o LISPu tady a asi stejný smysl má hádat se o tom tady s někým. Bacha přece dneska už nikdo neposlouchá, nikde na žádné dýze ho nikdo nehrál, je to dávno překonaný. A učit se na piáno je pitomost - je to nepřehledný, nemá to žádnej display, žádný LEDky, žádnej mixák v tom není, ale zato se budeš ztrácet v té hromadě bílých a černých kláves, vůbec to není intuitivní a je to mnohem komplikovanější, než pustit MP3 v přehrávači, tak co s tím. Sice si na tom můžeš zahrát co chceš, ale potřebuje to někdo k něčemu, když máš miliony hotových empétrojek?

Re: Na co všechno je dobrý LISP?
« Odpověď #59 kdy: 29. 03. 2011, 13:44:42 »
To je jako by ses na srazu diskotékových DJs vyptával, co si myslej o Bachovi, jestli má smysl se jím zabývat a jestli má smysl učit se hrát na piáno. Asi takovou relevanci má diskuse o LISPu tady

Další zajímavá poetická parela do sbírky :) Skoro se mi zdá, že LISP člověka naučí hlavně tohle :)

Smím se zeptat, proč diskuse o LISPu tady nemá smysl? Je tu zjevně dost lidí, kteří o programovacích jazycích něco ví, s několika mají vlastní zkušenosti, včetně nějakých neprocedurálních, a pravděpodobně mají za sebou nějakou tu informatiku na VŠ.

V jakém už jiném prostředí by diskuse o LISPu měla smysl? V tom citovaném kroužku asociálů?