Na co všechno je dobrý LISP?

Viky

Re: Na co všechno je dobrý LISP?
« Odpověď #30 kdy: 28. 03. 2011, 20:19:19 »

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?

Nechci se vás nikterak dotknout, ale co vás tedy vede k polemizování o něčem, co dle svých vlastních slov neznáte?
Přeložit zdroják a pak ho spustit vám opravdu ani zdaleka nedává ty samé možnosti, jako je to v LISPu (mimochodem - tuto vlastnost nabízel už 8bitový BASIC na Atari 800XE).
Dále nechápu ty narážky na závorky. Když jsem přecházel z FORTRANu na C, měl jsem podobný pocit u C - samá závorka a samý středník.
Nevím - asi bych to přirovnal k práci v reálném a komplexním oboru. V tom reálném se dá nakonec spočítat to samé, co pomocí komplexních čísel, ale je to pracnější a méně elegantní, ale zato "bez toho opruzu s imaginárními čísly".


Re: Na co všechno je dobrý LISP?
« Odpověď #31 kdy: 28. 03. 2011, 20:29:25 »
Nechci se vás nikterak dotknout, ale co vás tedy vede k polemizování o něčem, co dle svých vlastních slov neznáte?

Nedotkl. A jestli můžu poprosit, tykejte mi.

Já nepolemizuju, ale pokládám otázky. A ty otázky pokládám právě proto, že tu věc nevím a chtěl bych se o ní něco dozvědět.

Přeložit zdroják a pak ho spustit vám opravdu ani zdaleka nedává ty samé možnosti, jako je to v LISPu.

Jaké možnosti konkrétně? (bez jinotajů typu srovnání s reálnými a komplexními čísly prosím, já jsem jednoduchý člověk :)

Pokud mám možnost vygenerovat zdroják turingovsky kompletního jazyka a spustit ho *v rámci daného procesu*, nenapadá mě moc *praktických* věcí, které bych tímto způsobem nemohl udělat...

(pokud máte namysli nějakou abstraktní akademickou čistotu toho, jak to udělat, tak to řekněte rovnou a potom - pokud máte chuť a čas - ukažte nějaký konkrétní příklad něčeho, co jde napsat až překvapivě čistě oproti jiným moderním jazykům)

Re: Na co všechno je dobrý LISP?
« Odpověď #32 kdy: 28. 03. 2011, 22:07:05 »
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ě...)

můžete si v těch CLI jazycích nadefinovat svoji vlastní konstrukci typu "for" nebo "while"?

nemyslím teď vlastní funkci, ale konstrukci, kterou byste v programu vždy pohodlně zapsal jako (while podminka telo-cyklu) a ona se chovala jako while-cyklus, tedy podmínku vyhodnotila vždy při jejím testu znovu... a přitom by nešlo o věc zadrátovanou přímo v jazyce, ale věc, kterou jste si takto napsal sám. tak přesně tohle dovedou lispová makra, viz můj článek

http://www.root.cz/clanky/lispova-makra-aneb-programovatelny-programovaci-jazyk/

Kit

Re: Na co všechno je dobrý LISP?
« Odpověď #33 kdy: 28. 03. 2011, 22:14:33 »
Jaké možnosti konkrétně? (bez jinotajů typu srovnání s reálnými a komplexními čísly prosím, já jsem jednoduchý člověk :)

Pokud mám možnost vygenerovat zdroják turingovsky kompletního jazyka a spustit ho *v rámci daného procesu*, nenapadá mě moc *praktických* věcí, které bych tímto způsobem nemohl udělat...

S Lispem teprve začínám, takže mi spousta souvislostí zatím uniká, ale zkusil jsem si jednoduchý tutoriál na http://lisperati.com/casting.html . Stačí, když si projdeš tím kurzem a dostaneš odpovědi na mnoho otázek.

Dnes mě mrzí, že jsem se tento jazyk začal učit až tak pozdě. Asi mě tenkrát odradily závorky a tečka-dvojice. Je velmi těžké změnit zažité paradigma programování, i když procedurálně se v Lispu dá také psát. To však nechci.

Příjemně mě překvapila možnost vyvíjet aplikaci bez editoru přímo v prostředí Lispu. Jakmile funkci odladím, je zakomponována v systému a mohu ji použít jako další stavební kámen aplikace. Také je možné přidat i automatizované testy, pokud je pro vývoj potřebuješ. Přirovnal bych to k Excelu, ale bez omezení daného plochou tabulky.

Kit

Re: Na co všechno je dobrý LISP?
« Odpověď #34 kdy: 28. 03. 2011, 22:24:57 »
můžete si v těch CLI jazycích nadefinovat svoji vlastní konstrukci typu "for" nebo "while"?

nemyslím teď vlastní funkci, ale konstrukci, kterou byste v programu vždy pohodlně zapsal jako (while podminka telo-cyklu) a ona se chovala jako while-cyklus, tedy podmínku vyhodnotila vždy při jejím testu znovu... a přitom by nešlo o věc zadrátovanou přímo v jazyce, ale věc, kterou jste si takto napsal sám. tak přesně tohle dovedou lispová makra, viz můj článek

http://www.root.cz/clanky/lispova-makra-aneb-programovatelny-programovaci-jazyk/

To je asi argument, který se uživateli CLI (který má podobné konstrukce k dispozici) asi těžko vysvětluje. Ano, je možné si nadefinovat vlastní while, if nebo switch. To není problém. Ale uživatelé CLI už takové prostředky mají. Nehledě k tomu, že se to týká spíš procedurálního stylu programování.

Pádnější by mohly být argumenty pro práci s datovými strukturami. Jednoduchost vytváření seznamů, objektů, jejich vzájemná komunikace, nativní paralelizace procesů, ladění,...


blizz

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

A ako to súvisí s otázkou? Stále sa tu len teoretizuje, ale aká je využiteľnosť jazyka v praxi? Prečo keď je LISP taký perfektný jazyk, tak sa nepožíva vo vačšej miere? Ja som si tiež lisp vyskúšal, ale nenapadlo ma načo by som ho mohol použiť. vypisovalo to do konzoly nejaké písmená. Väčšinu knižníc ktoré robia niečo užitočnejšie si ajtak musím naprogramovať v inam jazyku a v lispe ich len pozliepať, neni potom náhodou skriptovanie v lispe len lepenie kódu?

Re: Na co všechno je dobrý LISP?
« Odpověď #36 kdy: 28. 03. 2011, 22:27:27 »
můžete si v těch CLI jazycích nadefinovat svoji vlastní konstrukci typu "for" nebo "while"?

nemyslím teď vlastní funkci, ale konstrukci, kterou byste v programu vždy pohodlně zapsal jako (while podminka telo-cyklu) a ona se chovala jako while-cyklus, tedy podmínku vyhodnotila vždy při jejím testu znovu... a přitom by nešlo o věc zadrátovanou přímo v jazyce, ale věc, kterou jste si takto napsal sám. tak přesně tohle dovedou lispová makra, viz můj článek

http://www.root.cz/clanky/lispova-makra-aneb-programovatelny-programovaci-jazyk/

Pominu, že jsem se ptal na něco praktického - a definovat si vlastní while mi zrovna moc praktické nepřijde :)

Ale i tak: nic, co by se nedalo zvládnout zmíněným překladem kódu on-the-fly. Jistě, můžete to mít za neelegantní. Ovšem to už jsme z oblasti "síla jazyka" v oblasti "elegantnost jazyka".

Ono totiž, pokud se nepletu (programovací jazyky nejsou žádné moje hobby) to, čemu říkáte "konstrukce" je obdoba toho, čemu se říká "konstrukce" třeba i v transparentní intenzionální logice - a od funkce se to liší právě tím, že to jde spustit. Takže pokud nejsem úplně mimo, tak mi vlastně říkáte, že LISP má něco, co se dá spustit. Ok. Ovšem to má např. i python a všechny CLI jazyky, jak jsem už říkal.

Re: Na co všechno je dobrý LISP?
« Odpověď #37 kdy: 28. 03. 2011, 22:29:38 »
To je asi argument, který se uživateli CLI [...] asi těžko vysvětluje.

Zatím to tak vypadá :)

Pádnější by mohly být argumenty [...]

Sem s nimi!

Inkvizitor

Re: Na co všechno je dobrý LISP?
« Odpověď #38 kdy: 28. 03. 2011, 22:39:50 »
nemyslím teď vlastní funkci, ale konstrukci, kterou byste v programu vždy pohodlně zapsal jako (while podminka telo-cyklu) a ona se chovala jako while-cyklus, tedy podmínku vyhodnotila vždy při jejím testu znovu... a přitom by nešlo o věc zadrátovanou přímo v jazyce, ale věc, kterou jste si takto napsal sám. tak přesně tohle dovedou lispová makra, viz můj článek

http://www.root.cz/clanky/lispova-makra-aneb-programovatelny-programovaci-jazyk/

No, Scala se sice nepoužívá primárně v CLI (ikdyž běží i tam), ale pro zajímavost:
Kód: [Vybrat]
http://www.zorched.net/2009/04/26/scala-and-adding-new-syntax/

Inkvizitor

Re: Na co všechno je dobrý LISP?
« Odpověď #39 kdy: 28. 03. 2011, 22:41:08 »

Re: Na co všechno je dobrý LISP?
« Odpověď #40 kdy: 28. 03. 2011, 22:44:35 »
S Lispem teprve začínám, takže mi spousta souvislostí zatím uniká, ale zkusil jsem si jednoduchý tutoriál na http://lisperati.com/casting.html . Stačí, když si projdeš tím kurzem a dostaneš odpovědi na mnoho otázek.

Dík za tykání!

Popravdě řečeno, kdybych si měl procházet tutoriál každého jazyka, o kterém někdo tvrdí, že je to nejgeniálnější jazyk planety, nic jiného bych do smrti nedělal. Pokud mi ten člověk neumí polopaticky říct, v čem je ten jazyk tak geniální, tak je dost pravděpodobné, že až tak geniální nebude...

Je velmi těžké změnit zažité paradigma programování, i když procedurálně se v Lispu dá také psát.

Jasně, mně se třeba hodně líbí (co do principu) Prolog a na škole jsem zakopl třeba i o Haskell (ten už mě zas tak nenadchl). Určitě je super zkusit si jiný způsob myšlení, ale opět popravdě řečeno, kdyby za mnou někdo přišel, ať mu naprogramuju GUI aplikaci na ukládání poznámek, tak bych musel být trochu magor, abych hnedka sáhl po Prologu...

Příjemně mě překvapila možnost vyvíjet aplikaci bez editoru přímo v prostředí Lispu. Jakmile funkci odladím, je zakomponována v systému a mohu ji použít jako další stavební kámen aplikace. Také je možné přidat i automatizované testy, pokud je pro vývoj potřebuješ. Přirovnal bych to k Excelu, ale bez omezení daného plochou tabulky.

Jo, tenhle princip se mi taky moc líbí, ale to opět není vlastnost jazyka, to je vlastnost toho prostředí. Nejen, že mi hned vytanul namysli SmallTalk, ale třeba i v MacOSu se hodně podobným způsobem standardně řeší GUI (neukládají se nějaké definice, ale "živé" serializované objekty). Čili opět nic, co by nešlo (z důvodu oné magické "síly jazyka" udělat i jinde - akorát to třeba nikdo nepotřebuje...)

Kit

Re: Na co všechno je dobrý LISP?
« Odpověď #41 kdy: 28. 03. 2011, 22:55:09 »
A ako to súvisí s otázkou? Stále sa tu len teoretizuje, ale aká je využiteľnosť jazyka v praxi? Prečo keď je LISP taký perfektný jazyk, tak sa nepožíva vo vačšej miere? Ja som si tiež lisp vyskúšal, ale nenapadlo ma načo by som ho mohol použiť. vypisovalo to do konzoly nejaké písmená. Väčšinu knižníc ktoré robia niečo užitočnejšie si ajtak musím naprogramovať v inam jazyku a v lispe ich len pozliepať, neni potom náhodou skriptovanie v lispe len lepenie kódu?
Lisp svou základní syntaxí odradí hodně začátečníků. I mně se to stalo. Není vůbec jednoduché pochopit jeho možnosti a schopnosti a využít je ve svůj prospěch. Dá se v něm programovat i stylem známým z mnoha jiných jazyků, ale takové programy jsou často mnohem delší a méně efektivní, než by mohly být. Tato zkušenost odradí experimentátora od dalších pokusů a raději se vrátí k zažitým postupům.

Programování v Lispu se jen velmi těžko popisuje, protože programátor si vlastně vytváří pro každou aplikaci vlastní programovací jazyk přesně na míru. Potřebuji rozhodování se třemi větvemi (< = >) ? Mohu si ho nadefinovat. Potřebuji aritmetický průměr? Udělám funkci s jedním parametrem - seznamem. Výsledkem funkce může být opět seznam - průměr + směrodatná odchylka. Potřebuji index ke třetímu sloupci databáze? Udělám ho jako binární strom nebo jako B-strom dle preferencí.

Programátor není v Lispu svázán možnostmi použitého jazyka. Konstrukce, které mu chybí (algoritmické či datové) si jednoduše dotvoří podle potřeby.

Re: Na co všechno je dobrý LISP?
« Odpověď #42 kdy: 28. 03. 2011, 23:14:33 »
Lisp svou základní syntaxí odradí hodně začátečníků. I mně se to stalo.  [...] Programování v Lispu se jen velmi těžko popisuje [...]

No zas abysme nemluvili o voze a o koze - myslím, že je nás tady víc (ne-li všichni), kdo ví, že existují různá paradigmata a čím se vyznačují. Dost z nás asi i v některém neprocedurálním jazyce umí něco napsat. Takže asi není potřeba popisovat, že v Lispu je všechno seznam a jak je to boží...

Ta otázka je trochu o něčem jiném - skoro bych to až vulgárně-manažersky napsal takhle: a kdo si tím někdy vydělal nějaké slušné peníze? Je těch lidí víc než u jiných jazyků? A jestli ne, proč ne? Tam myslím blizzboz mířil a mně to nepřijde jako špatná otázka, zvlášť vzhledem k úvodní otázce tématu. Rozhodně by to neznamenalo, že je blizzboz přízemní tupec, který nechápe krásu LISPu apod...

Není vůbec jednoduché pochopit jeho možnosti a schopnosti a využít je ve svůj prospěch. [...] ale takové programy jsou často mnohem delší a méně efektivní, než by mohly být. Tato zkušenost odradí experimentátora od dalších pokusů a raději se vrátí k zažitým postupům.

No super, konečně něco konkrétního o nějakém prospěchu :) Takže v LISPu se (údajně) programuje rychleji, zdroják je kratší a výsledek efektivnější. Sice nechápu, proč by takové super vlastnosti experimentátora měly odradit, ale ok :) Pak nám tedy zůstává otázka, proč firmy, které lidem za programování platí, nechtějí, aby jejich zaměstnanci pracovali rychleji a výsledek byl efektivnější. Není to třeba špatným marketingem? ;)

Ale já na marketing nedám! Takže můžu se někde podívat na LISPový ovladač nějakého hardware (efektivita), nebo vidět nějaký projekt, který vyvinul nějakou boží aplikaci v LISPu za dobu, o které se těm zlým a hloupým uživatelům CLI ani nezdálo?

Velikost zdrojáku ok, to beru. Akorát mi ještě nikdy nikdo nedal žádné peníze za to, že aplikaci, kterou jsem pro něj napsal, má superkrátký zdroják :)

Re: Na co všechno je dobrý LISP?
« Odpověď #43 kdy: 28. 03. 2011, 23:20:42 »
No super, konečně něco konkrétního o nějakém prospěchu :)

Pardon, omlouvám se, špatně jsem četl a reagoval na svoje čtení, ne na autora. Beru zpět - o žádném konkrétním prospěchu při použití LISPu zatím nic nezaznělo :)

stewe

Re: Na co všechno je dobrý LISP?
« Odpověď #44 kdy: 28. 03. 2011, 23:25:49 »
Citace
No super, konečně něco konkrétního o nějakém prospěchu :) Takže v LISPu se (údajně) programuje rychleji, zdroják je kratší a výsledek efektivnější. Sice nechápu, proč by takové super vlastnosti experimentátora měly odradit, ale ok :) Pak nám tedy zůstává otázka, proč firmy, které lidem za programování platí, nechtějí, aby jejich zaměstnanci pracovali rychleji a výsledek byl efektivnější. Není to třeba špatným marketingem? ;)

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 ...