Na co všechno je dobrý LISP?

bedna

Re: Na co všechno je dobrý LISP?
« Odpověď #15 kdy: 28. 03. 2011, 08:44:42 »
K bodu 5: Souhlasím s tím, že párování závorek pomůže "rozšifrovat" zdrojový text, nicméně to neznamená, že se tím program stane výrazně čitelnějším. Čitelnost znamená "kouknu se a vidím" a ne "otevřu si editor, jezdím kurzorem sem a tam a hledám".

...

Zkrátka a dobře, vždycky je to něco za něco. Obrovská flexibilita LISPu je výhoda, o tom není sporu. Problém "metajazyků" typu LISP je dvojí:

Nechtěl jsem do toho zasahovat, ale to, že je ten les závorek nečitelný, to je naprostý blud.

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í)

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

Zhoršená čitelnost, viz. víše, musí se přemýšlet, jojo a ne datlovat. Opět, prosím, omluvte mou prostořekost, ale enbylo to myšleno na Vás, ale obecně.

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.

Nechtěl jsem začít žádnou hádku a podobně, pouze doufám, že jsem rozumně argumentoval. A abychom předešli případným problémům, v Lispu dělám bakalářku (ovládání robotů, jejich vizualizace a regulární jazyk pro jejich ovládání), v PHP dělám už 6 let v komerční sféře, odkojen jsem byl na BASICu a pak hned C, C++ a nyní převážně C# na firemní aplikace a školní kravinky.


program

Re: Na co všechno je dobrý LISP?
« Odpověď #16 kdy: 28. 03. 2011, 10:15:51 »
Zdravím,
nerozjíždějte tady prosím zase flame na téma, komu vyhovuje který jazyk. Kdo to má číst? Jinak k původní otázce.

V LISPu se dá dělat pochopitelně vše, co se algoritmů týče, ovšem dnes spíše na úrovni hobby a akademie. Ne proto, že by ten jazyk byl špatný, ale chvíli to trvá, než si na něj člověk zvykne a tak se mu spousta lidí vyhýbá a díky tomu jsou problémy s knihovnama (věnuje se tomu málo lidí). Já jsem se například s LISPem dost zastavil ve chvíli, když se mi nepodařilo rozchodit GTK.

Nic méně LISP pořád zůstává hodně dobrým jazykem na skriptování v aplikacích a na AI. Ta čitelnost je jen otázkou zvyku, mě se v něm dělá mnohem lépe, než třeba v Haskelu (srovnání s C je hodně kostrbaté). A hlavně LISP je naprosto skvělý výukový nástroj. Navíc v LISPu je možné dělat vše pro OS Emacs  :)

Možná bych původní otázku doplnil o svůj stop-problém (ať se taky někam dostanem :) ) -> jak normálně udělat GUI v LISPu?

bedna

Re: Na co všechno je dobrý LISP?
« Odpověď #17 kdy: 28. 03. 2011, 12:03:07 »
Možná bych původní otázku doplnil o svůj stop-problém (ať se taky někam dostanem :) ) -> jak normálně udělat GUI v LISPu?

http://www.lispworks.com/documentation/lw60/CAPUG-M/html/capiuser-m.htm


blah

Re: Na co všechno je dobrý LISP?
« Odpověď #18 kdy: 28. 03. 2011, 12:03:32 »
Bedna je evidentne z UPOLu ;)... Nemyslim si, ze by rozjizdel nejakou hadku a muzu s nim jen souhlasit, jeho argumenty jsou opodstatnene. Common Lisp je jazyk bez syntaxe, komu syntaxe z nejakych duvodu nevyhovuje, muze si ji jednoduse zmenit - je to programovatelny jazyk. Vetsinou ale clovek prijde na to, ze syntaxi menit nepotrebuje (jak uz nekdo zminil vyse).

Situace s knihovnami neni na prvni pohled az tak jednoducha, ale to jen kvuli tomu, ze clovek musi investovat do studia toho, jakym zpusobem se na ne napojit (napr. asdf). Pokud do toho systemu clovek pronikne, nakonec zjisti, ze univerzalnost jazyka neni zadnym zpusobem omezujici. Nicmene prave toto je zasadni prekazka, ktera spoustu lidi od experimentu s Lispem odradi.

Jeste bych podotknul, ze implementaci jazyka existuje cela rada a zejmena ty komercni distribuce (napr. LispWorks) disponuji velmi pokrocilymi nastroji (nejen) pro editaci a tvorbu GUI.

Preji tazateli hodne stesti a trpelivosti: Common Lisp je bezesporu spravna cesta, kterou by se kazdy informatik s otevrenou hlavou mel vydat.

blah

Re: Na co všechno je dobrý LISP?
« Odpověď #19 kdy: 28. 03. 2011, 12:08:35 »
Jeste mala poznamka: LispWorks je skvela distribuce, nicmene komercni (Personal Edition je zdarma a pro zacatky postacujici). Ja osobne ale preferuji sbcl (distribuce lispu) + slime (na emacs napojene IDE), protoze clovek vidi do strev a ma absolutni kontrolu nad tim, co se deje. Jakmile si na to clovek jednou zvykne, bude extremne efektivni, coz je ostatne deviza vsech pokrocilych Lispovych programatoru...


Viky

Re: Na co všechno je dobrý LISP?
« Odpověď #20 kdy: 28. 03. 2011, 14:17:26 »
LISP je podle mě jedním z několika mála jazyků, v němž by si měl člověk, který se chce považovat za opravdového programátora, zkusit vyřešit nějaký jen trošičku komplikovanější problém. Tím si ten jazyk ochmatá a jak už tu bylo napsáno - i kdyby v něm už nikdy více neměl nic dělat, v žádném případě to nebude ztracený čas. Člověk získá určitý jiný pohled na to, jak se dají řešit problémy pomocí počítače.
A dále - opět, jak už tu bylo napsáno - LISP vyniká spíše v problémech, jejichž povaha je abstraktnější a struktura komplexnější. Abych byl konkrétnější: stejný problém by byl v jazyku typu C++ řešen pomocí hromady komplikovaných, nepřehledných datových typů a algoritmů postavených na spoustě košatých podmínek a vnořených cyklů, pracujících se spoustou pomocných proměnných, u nichž je problém najít jim vhodný název, aby se v tom dalo vyznat ne po roce, ale druhý den. Objektové programování v těchto problémech nepřináší prakticky žádnou výhodu (OOP je výhodné pro zpřehlednění rozsáhlých problémů, ovšem s jednoduchou strukturou vzájemných vazeb). To, nač by v C++ byla třeba komplikovaná struktura dat a rozsáhlá, leč konečná množina komplikovaných algoritmů pro práci s ní, to se v LISPu vyřeší jednoduchou strukturou dat a nekonečně velkou množinou jednoduchých algoritmů pro práci s ní, jež se ovšem dá vygenerovat konečnou množinou jednoduchých metaalgoritmů.
Kdo tento rozdíl v přístupu pochopí, ten ho dokáže velmi efektivně zhodnotit a také rozhodnout, kdy ho použít a kdy ne (a třeba raději zvolit jiný jazyk). Kdo ne, tomu bude LISP vždycky připadat nepřirozený a "jiný". To ale není vinou LISPu - to je vinou nepochopení lispového pohledu.

LISP se tedy typicky používá tam, kde je třeba činit rozhodnutí na základě různorodých vstupních parametrů a/nebo různorodé výstupní hodnoty nastavovat. Dá se efektivně použít na řízení v průmyslu, v dopravě, v robotice, na simulaci/modelování/vyhodnocování ekonomických procesů, k AI-části enginu počítačových (i jiných ;-) her, k realisaci expertních systémů atp.

bedna

Re: Na co všechno je dobrý LISP?
« Odpověď #21 kdy: 28. 03. 2011, 14:26:36 »
Srdíčko mé zaplesalo, pěkně jste to napsali, já v tom hledal jen okličky a ano, pan Krupka je ten, kdo mi tuto cestu ukázal. ::)

PS: Co nosí bernardýn v soudku na krku?: - co kdybych napsal ruma?  ;D

marwyn

Re: Na co všechno je dobrý LISP?
« Odpověď #22 kdy: 28. 03. 2011, 14:31:58 »
Nedávno jsem si trochu hrál s programovacím jazykem LISP. Docela mě překvapilo, jak je jednoduchý a přitom univerzální.

Rád bych se tady zeptal, na co všechno se LISP používá, případně na co všechno by se dal použít?

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

Viky

Re: Na co všechno je dobrý LISP?
« Odpověď #23 kdy: 28. 03. 2011, 16:31:26 »
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 ;-)

blizz

Re: Na co všechno je dobrý LISP?
« Odpověď #24 kdy: 28. 03. 2011, 19:21:16 »
LISP = Language Intended for Smart People, ale k tomu inteligencí méně obdaření jedinci nemohou dojít nikdy ;-)

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?

Re: Na co všechno je dobrý LISP?
« Odpověď #25 kdy: 28. 03. 2011, 19:24:08 »
6) ma to zvrhlou obracenou syntaxi - ano, syntaxe v podobe "OPERACE OPERANDY" vypada spise jako assembler, nez jako vyssi jazyk, ale zdani klame - prave a pouze diky tato syntaxe lispu dava jeho silu.
[...]
... a ze by navic znemoznila spoustu skvelych jazykovych konstrukci.

Můžu se zeptat, jak by syntaxe (!) mohla dávat jazyku sílu, popř. znemožňovat nějaké konstrukce?

Jestli prefixová notace dává LISPu sílu, tak to znamená, že postfixový Forth tu sílu nemá? Nebo v čem je teda zakopaný pes?

(nemám absolutně v úmyslu rozjíždět jakýkoli flame, otázku myslím naprosto vážně)

Re: Na co všechno je dobrý LISP?
« Odpověď #26 kdy: 28. 03. 2011, 19:26:07 »
je mi jasné že LISP je z pohľadu teórie veľmi flexibilný

Z hlediska teorie je nejflexibilnější jazyk strojový kód. Pokud ho zapisujeme binárně, je navíc přímo úžasná jeho jednoduchá a přečistá syntaxe ;)

poustevnik

Re: Na co všechno je dobrý LISP?
« Odpověď #27 kdy: 28. 03. 2011, 19:46:04 »
6) ma to zvrhlou obracenou syntaxi - ano, syntaxe v podobe "OPERACE OPERANDY" vypada spise jako assembler, nez jako vyssi jazyk, ale zdani klame - prave a pouze diky tato syntaxe lispu dava jeho silu.
[...]
... a ze by navic znemoznila spoustu skvelych jazykovych konstrukci.

Můžu se zeptat, jak by syntaxe (!) mohla dávat jazyku sílu, popř. znemožňovat nějaké konstrukce?

Jestli prefixová notace dává LISPu sílu, tak to znamená, že postfixový Forth tu sílu nemá? Nebo v čem je teda zakopaný pes?

(nemám absolutně v úmyslu rozjíždět jakýkoli flame, otázku myslím naprosto vážně)

myslím, že tady se jedná o narážku na LISPová makra.
jde o to, že příkazy LISPu jsou syntakticky (i sémanticky) LISPové listy (seznamy) a ty je možné on-the-fly generovat a spouštět. V makrosystému daného jazyka tak máte zároveň zabudovanou i možnost pustit libovolnou funkci jazyka a z toho vyplývá označení LISPu za "programovatelný programovací jazyk". Tímto způsobem je možné v LISPu nadefinovat svoje vlastní syntaktické konstrukce (formy) bez nutnosti modifikovat kompilátor.

Re: Na co všechno je dobrý LISP?
« Odpověď #28 kdy: 28. 03. 2011, 20:03:44 »
myslím, že tady se jedná o narážku na LISPová makra.
jde o to, že příkazy LISPu jsou syntakticky (i sémanticky) LISPové listy (seznamy) a ty je možné on-the-fly generovat a spouštět. V makrosystému daného jazyka tak máte zároveň zabudovanou i možnost pustit libovolnou funkci jazyka a z toho vyplývá označení LISPu za "programovatelný programovací jazyk". Tímto způsobem je možné v LISPu nadefinovat svoje vlastní syntaktické konstrukce (formy) bez nutnosti modifikovat kompilátor.

Ok, to beru. To ale není vlastnost syntaxe, to je věc toho, jakým způsobem pracuje interpreter/kompiler.

I když LISP neznám, docela mě bije do očí tvrzení, že síla LISPU je v syntaxi, která ale nehraje žádnou roli, protože ji jde on-the-fly změnit  ;)

Druhá věc potom je, jestli tohle náhodou nebyla výhoda v jisté době a jiné jazyky ji už nedotáhly, přičemž mají jiné výhody... Jestliže např. jazyky pro CLI (.NET, mono) mají možnost on-the-fly přeložit zdroják a poté ho v rámci téhož programu spustit, nedává mi to úplně stejné možnosti i bez (sorry za to...) opruzu se závorkama?*

(znovu opakuju, že LISP neznám, takže se rád nechám přesvědčit, že umí něco, co např. ony CLI jazyky ne - ale potřeboval bych to polopaticky a pokud možno na konkrétním příkladě...)

-----
* teoretickou možnost on-the-fly pozměnit překladač tak, že místo závorek můžu psát třeba P a K je sice prima sranda, ale je to i k něčemu praktickému?

Viky

Re: Na co všechno je dobrý LISP?
« Odpověď #29 kdy: 28. 03. 2011, 20:08:44 »
LISP = Language Intended for Smart People, ale k tomu inteligencí méně obdaření jedinci nemohou dojít nikdy ;-)

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?

Stále si nerozumíme. LISP je jazyk určený lidem k programování, ne cvičeným opicím k lepení kódu. :D