Na co všechno je dobrý LISP?

Re: Na co všechno je dobrý LISP?
« Odpověď #210 kdy: 01. 04. 2011, 14:17:47 »
Ono totiž právě to je největší umění - dokázat něco netriviálního vystihnout několika slovy tak, aby to pochopil každý - a pokud to tu někteří neustále požadují, nejspíš si ani sami neuvědomují, jak náročný požadavek ve skutečnosti mají.

Jednoduchý příklad z výše zmíněného textu:

Mám data v xml:
Kód: [Vybrat]
<todo name="housework">
    <item priority="high">Clean the house.</item>
    <item priority="medium">Wash the dishes.</item>
    <item priority="medium">Buy more soap.</item>
</todo>

Lispovsky je zapíšu trochu stručněji:
Kód: [Vybrat]
(todo "housework"
    (item (priority high) "Clean the house.")
    (item (priority medium) "Wash the dishes.")
    (item (priority medium) "Buy more soap."))

Tak a teď ta data chci nějak hezky vypsat. Běžný postup by byl vytvořit "složitou" soustavu smyček, které ta data budou postupně procházet a vypisovat, zatímco v Lispu napíšu "jednoduché" makro a tím "vytvořím nový jazyk". Makro vlastně jakoby magicky (SPEL) data promění přímo v kód, který můžu spustit a který ta data vypíše. Makro vypadá takhle:
Kód: [Vybrat]
(defmacro item (priority note)
    '(block
         (print stdout tab "Priority: "
             ~(head (tail priority)) endl)
         (print stdout tab "Note: " ~note endl endl)))

Takže žádné příkazy na procházení, sám strom, obsahující data, se stal stromem data vypisujícím.

----------------------------------------------------

To bylo opravdu tak těžké takovýhle příklad uvést a ušetřit si tři dny plácání? A myslíte si, že vám někdo uvěří, jakého osvícení jste s lispem dosáhli, když o takhle jednoduchém úkolu (stručně vystihnout povahu maker) napíšete "jak *náročný požadavek* ve skutečnosti mají"?


JS

Re: Na co všechno je dobrý LISP?
« Odpověď #211 kdy: 01. 04. 2011, 14:28:19 »
To bylo opravdu tak těžké takovýhle příklad uvést a ušetřit si tři dny plácání? A myslíte si, že vám někdo uvěří, jakého osvícení jste s lispem dosáhli, když o takhle jednoduchém úkolu (stručně vystihnout povahu maker) napíšete "jak *náročný požadavek* ve skutečnosti mají"?

Ano, bylo to tezke, protoze jste nam tu tvrdil, ze makrum rozumite. Co porad po nas chcete? Abychom Ctrl+C,Ctrl+V zkopirovali neco z jine stranky? Neumite pouzivat prohlizec?

Re: Na co všechno je dobrý LISP?
« Odpověď #212 kdy: 01. 04. 2011, 14:32:46 »
Ano, bylo to tezke, protoze jste nam tu tvrdil, ze makrum rozumite.

Říkal jsem, že se domnívám, že základnímu principu rozumím - a nerozumím tomu, co je na něm tak kulervoucího - a proto bych tu kulervoucnost chtěl vidět na nějakém konkrétním příkladě.

A zákadnímu principu jsem skutečně rozuměl, jen jsem si myslel, že je trochu mocnější než jenom normální preprocesor.

Viky

Re: Na co všechno je dobrý LISP?
« Odpověď #213 kdy: 01. 04. 2011, 14:42:43 »
To bylo opravdu tak těžké takovýhle příklad uvést a ušetřit si tři dny plácání? A myslíte si, že vám někdo uvěří, jakého osvícení jste s lispem dosáhli, když o takhle jednoduchém úkolu (stručně vystihnout povahu maker) napíšete "jak *náročný požadavek* ve skutečnosti mají"?

Opět sorry, ale já ti fakt do hlavy nevidím, abych dokázal posoudit, který příklad budeš akceptovat a který odmítneš, protože se ti nelíbí. Nikde tu nikdo z nás netvrdil, že jsme pedagogové. Proto jsme odkazovali na jiné texty (což jsi usilovně odmítal) nebo tu padly asi pro člověka, který o tom nic neví, nevhodné příklady. Právě proto trvám na svém - jo, fakt to je náročný požadavek - vymyslet vhodný příklad nebo posoudit vhodnost příkladu z hlediska jeho pochopitelnosti. Ale to tvrdil už Komenský, že to není žádná legrace.
Ano, ten tebou uvedený příklad je pěkný a snad je z něj také patrno, že v Lispu člověk musí myslet trochu jinak, chce-li využít jeho potenciál a taky to, jak se ta makra dají také použít.

deda.jabko

Re: Na co všechno je dobrý LISP?
« Odpověď #214 kdy: 01. 04. 2011, 14:46:25 »
ten priklad s tim XML je divny... ta kombinace dat/maker/vystupu neni zrovna ukazkovy priklad na makra, ale budiz, jestli jsi chtel videt toto...

Citace
A zákadnímu principu jsem skutečně rozuměl, jen jsem si myslel, že je trochu mocnější než jenom normální preprocesor.

...rika clovek, co si mysli, ze funkce eval je lepsi vynalez :-]] FYI, je to ,,normalni preprocesor'', ktery ma vyjadrovaci schopnosti a funkce stejne jako jazyk, coz z neho dela vcelku ,,nenormalni preprocesor''


Re: Na co všechno je dobrý LISP?
« Odpověď #215 kdy: 01. 04. 2011, 14:47:53 »
Nikde tu nikdo z nás netvrdil, že jsme pedagogové.

Ne, vy jste jenom tvrdili, že jste osvícení a že nejste cvičené opice. Jak už jsem řekl, vypadá to teď ex post trochu směšně ve světle toho, že jste nebyli schopní vypotit takovýhle triviální praktický příklad.

Ale to je jedno, nechme to být...

...koneckonců něco pravdy na tom je, že když je někdo osvícený, má ho největšího a nejdál dočůrá, tak to ještě neznamená, že dokáže stručně a srozumitelně vysvětlit triviální věc ;)

Re: Na co všechno je dobrý LISP?
« Odpověď #216 kdy: 01. 04. 2011, 14:48:56 »
...rika clovek, co si mysli, ze funkce eval je lepsi vynalez :-]]

Přečti si pořádně, co jsem napsal. A pak použij svou osvícenou mysl.

deda.jabko

Re: Na co všechno je dobrý LISP?
« Odpověď #217 kdy: 01. 04. 2011, 15:03:37 »
ehm...

Citace
V tom případě teda musím upravit tvrzení, že eval je stejně silný nástroj, jen trochu neohrabanější na tvrzení "eval je daleko silnější nástroj, i když trochu neohrabaný" - všechno, co se dá udělat makrem, se dá udělat evalem, ale ne naopak

Re: Na co všechno je dobrý LISP?
« Odpověď #218 kdy: 01. 04. 2011, 15:04:40 »
ehm...

Citace
V tom případě teda musím upravit tvrzení, že eval je stejně silný nástroj, jen trochu neohrabanější na tvrzení "eval je daleko silnější nástroj, i když trochu neohrabaný" - všechno, co se dá udělat makrem, se dá udělat evalem, ale ne naopak

No a? Na tom trvám.

koroptev

Re: Na co všechno je dobrý LISP?
« Odpověď #219 kdy: 01. 04. 2011, 15:13:53 »
JS:
"Priznam jsem, ze jsem to moc nestudoval, protoze me to tema prilis nezajima. Ale pri zbeznem pohledu si troufam tvrdit, ze *current-tail-marker* problem predstavovat nebude, protoze je to dynamicka promenna."

moc ti to neverim :-)
rovnez jsem to nijak nestudoval, navic Lisp, na rozdil od tebe (resp. v te roli tu vystupujes), neznam, ale prijde mi, ze v pripade mutually recursive (sakra, jak cesky?) volani to ty funkce (napr. licha, suda) musi nejakym zpusobem sdilet, neb do te promenne ukladaji misto skoku (resp. kontinuaci)
jak s tim asi zahybe nejaka jina rekurze spustena ve stejnou dobu?

Viky

Re: Na co všechno je dobrý LISP?
« Odpověď #220 kdy: 01. 04. 2011, 15:22:56 »
tak to ještě neznamená, že dokáže stručně a srozumitelně vysvětlit triviální věc ;)

...nebo třeba i dokáže, ale z toho ještě neplyne, že to každý je schopen pochopit. :)

JS

Re: Na co všechno je dobrý LISP?
« Odpověď #221 kdy: 01. 04. 2011, 15:26:19 »
jak s tim asi zahybe nejaka jina rekurze spustena ve stejnou dobu?

Myslim, ze nezahybe, protoze jak rikam, je to dynamicka promenna. (Neni mi jasne, jestli tomu prikladu ve skutecnosti rozumis, jen se me snazis chytit za slovo, nebo nevis, co je dynamicka promenna.) To znamena, ze jeji redefinice pomoci let v dalsim scope jen zastini jeji predchozi hodnotu (zmeni se binding, nikoli hodnota).

koroptev

Re: Na co všechno je dobrý LISP?
« Odpověď #222 kdy: 01. 04. 2011, 15:30:41 »
aha, tak opet beru zpet, vypada to, ze to to makro zvladne; holt neznam zpusob prace s promennymi v CL
porad se mi nelibi fakt, ze nekde opakovane prirazuji do stejneho mista, ale v tomto pripade me nenapada dobry duvod/priklad, kterym bych demonstroval "zavadnost" tohoto jiny nez nejaky fundamentalismus, cili - diky za link, paklize se na CL budu divat, toto makro se mi bude velmi libit

nm - novomente

Re: Na co všechno je dobrý LISP?
« Odpověď #223 kdy: 01. 04. 2011, 18:21:12 »
Dovolte mi abych na okamzik vyrusil diskusi, ktera se z nazorove vyhraneneho za slova chytajiciho souboje (kdy jsem musel uz zasahnout) zmenila v programatorsko-politicke klani. Predeslou vetu prosim berte z nadhledem a nechytejte me prosim vas za slova, chtel jsem ve vas vzbutit jemny usmev.

Ale zda se, ze nase diskuse se stala druhou nejdiskutovanejsi diskusi na rootu (viz. uvodni stranka root.cz -> okenko Forum -> zalozka Nejdiskutovanejsi) a za jeste asi tak 15 prispevku bude na prvnim miste. A prilakala priblizne na 4000 zhlednuti, coz je asi tak vyssi prumer.

No ale, jak jsem uz zde rikal, snazim se z diskuse si vzdycky neco odnest. Takze co si odnasim. Nazory vynecham, to me moc nezajima a nechci nad tim premyslet, snad jen to, ze jsem se obcas dobre pobavil. Ale z uzitecnych veci si odnasim spoustu odkazu na spoustu stranek o Lispu (cca 1, 2, 3...pockat...um...zatim je to 37 odkazu). Vsechny nejsou primo z diskuse, ale z diskuse prameni a spusta z nich obsahuje spoustu materialu a dalsich odkazu, takze budu mit co delat.

Jinak jsem si odnesl i to, ze me ve skole ceka teda spusta prace, naucit se ruzny pojmy a ruzny veci, jako lambda kalkul, turinguv stroj, line lenosive ja nevim co, atd. To jsem zvedav, jestli tu skolu vubec dokoncim :)

Mezitim, co jsme tady ze sebe doslova zdimali nejake ty schopne odpovedi, tak jsem zahajil jeste na ABCLinuxu anketu o tom, v jakych programovacich jazycich tam navstevnici stranek programuji (podobnou anketu jsem zahajil i zde na rootu) a take jsem si precetl kratkou diskusi o LISPu take na ABCLinuxu, tak pro toho, koho by to zajimalo jsou zde odkazy:

anketa: root.cz...http://forum.root.cz/index.php?topic=1990.msg15433;topicseen#new

anketa: ABCLinuxu.cz...http://www.abclinuxu.cz/blog/novomente/2011/4/anketa-v-jakych-jazycich-programuji-duben-kveten-2011

o Lispu na ABCLinuxu.cz...http://www.abclinuxu.cz/poradna/programovani/show/306322

Z tech anket je zatim dost videt, jak malo LISParu navstevuje ty stranky.

Zaverem bych se jeste zeptal, jestli nekdo nema nejaky tip na dalsi stranky, jako jsou root nebo abclinuxu, o programovani, kam chodeji zkuseny programatori diskutovat?

JS

Re: Na co všechno je dobrý LISP?
« Odpověď #224 kdy: 01. 04. 2011, 22:16:27 »
Zaverem bych se jeste zeptal, jestli nekdo nema nejaky tip na dalsi stranky, jako jsou root nebo abclinuxu, o programovani, kam chodeji zkuseny programatori diskutovat?

Nic ve zlem, ale mne se to spamovani anketou moc nelibi. Kazdopadne, dobre stranky o programovani jsou http://stackoverflow.com/. Co se tyce ponekud akademickeho pohledu na programovaci jazyky, http://lambda-the-ultimate.org/. A konecne, existuje CL wiki http://www.cliki.net/index.