Pro ty, kteri nevi, co znamena zkratka LISP: "Lost In Stupid Parentheses".
? To byl pokus o vtip? (LISt Processing, http://www.elwoodcorp.com/alu/table/lisp.htm)
Znate nejaky jazyk, ktery by byl silnejsi nez Lisp, Scheme, nebo nektery z rodiny jejich nasledniku, a mohl byste jej uvest?
Ano, byl to pokus o vtip (nekde jsem jej cetl).
Ne neznam, ale nedokazal jsem jeste prijit na silu LISPu, nebot mi spoustu casu a nervu zabiraji prave ty zavorky.
Tedy shrnuto: Nezpochybnuji silu LISPu, ale jeho uzivatelskou pritulnost
Uzivatelska privetivost lispu se ukaze prave tehdy, kdyz v nem zacnete neco delat. Je snadne se potkat s problemy, jenz v lispu elegantne vyresite za par chvil, ale v jinych jazycich, napr C se upisete k smrti, za predpokladu ze to predtim nevzdate (nebo si nenapisete interpret lispu v C). Pokud Vam vadi zavorky. skuste Dylan :).
A k tem zavorkam, od tech je tady emacs. (Ostatni dosadi za emacs svuj oblibeny editor, jenz zvlada praci se zavorkami)
Syntax podobnu LISPu, ale bez zatvoriek, ma aj Forth. Pouziva sa napr. v OpenBoot (Sun) a OpenFirmware (Apple). V oboch pripadoch, keby bolo pouzite C, vysledok by asi nebol taky, aky je.
Souhlasim. Lisp je opravdu super. Bez vetsich znalosti a s tutorialem na kline jsem za chvili (=par hodin) zbastlil do emacsu rozsireni na vytvareni trid a pridavani member functions a member variables do trid pro C++. Doted me stvalo, ze jakakoli modifikace tridy znamena modifikovat dva soubory. Psat to v C(++), ac je to muj oblibeny jazyk, by byl opravdu des... A zavorky mi nedelaji nejmensi problem.
(na okraj: mozna je nekde na netu neco takoveho k dispozici, ale ja si to chtel vyzkouset napsat sam, tak me nekamenujte :)
Jazyk silnejsi nez Lisp? No, uprimne receno prakticky jakykoliv moderni jazyk. Pokud zustaneme jenom u funkcionalnich jazyku, tak treba Haskell. V proceduralnich jazycich samozrejme muze byt nepohodlne prepsat nejake funkcionalni konstrukce -- coz ale rozhodne neznamena, ze maji nizsi vyjadrovaci schopnost. Funguje to i obracene: mnohe procedury se v Lispu pisi sakra tezko.
Nejsem zadny programatorsky guru, a cisty lisp se nachazi spise nekde na okraji mich zajmu. Ale rad bych se seznamil s nejakym prikladem konkretni procedury jenz se v lispu pise obtizne. Muze te mi jej kdyz tak poskytnout na muj mail.
doporucil bych pro zacatek seznameni s ceskou gramatikou ...
no tak treba myslim ze drivery nebo 3d engine v LIStPu musi stat za to ;-)
Cykly. V Lispu se daji udelat jenom pomoci rekurze, coz je silene pametove neefektivni.
Pametove neefektivni? Nechapu jak, proc, nac, zac? Kazda slusna ucebnice scheme zacina, ci ma nekde v uvodnich kapitolach, problematiku tail recursion. Jiny priklad by nebyl?
Infix znamená 3+2, prefix je (+ 3 2).
Kromě Perlového rozšíření existuje i spousta dalších, například Pythonové (hledat na Parnassu)
Dekuji za opravu.
Notace je Lispu je samozrejme prefixova. To vite, pozdni ranni hodiny s clovekem udelaji sve ;). Ale na hranatou osklivou polskou kalkulacku ze zacatku osmdesatych let si vazne pamatuji.
S _prefixovou_ notaci (ne infixovou, a navic reverzni, coz ta lispova neni) se nepocitalo na "starsich polskych kalkulackach" ale na kalkulackach Hewlett-Packard. To ze se ta notace jmenuje "reverzni polska" znamena jen ze ji vymyslel nejakej polak (jako narodnost, ne ten anarchista).
Mam dojem, ze na HP kalkulackach se zadavaly vyrazy v _postfixove_ notaci.
Pr. 1+2= se zada [1] [Enter] [2] [Enter] [+]
Vyrazy se velmi jednoduse vyhodnocuji za pomoci zasobniku (stack). Klavesa [Enter] na kalkulackach uklada cisla na zasobnik a operatorove klavesy "+" "-" atd. vyberou operandy (cisla) ze zasobniku, provedou operaci a vysledek ulozi zpet na zasobnik. Vrchol zasobniku je pritom zobrazen na displeji.
Postfixovou notaci pouziva i jazyk Forth.
Vyhoda postfixove notace (narozdil od infixove a prefixove) je v tom, ze _VUBEC_ nejsou potreba zavorky.
je asi pravda ze LISPu se podarilo prekonat svou totalni zmatenosti i perl....:-)))
Jinak script-fu vidim rozebrany poprve a koukam, ze ty funkce az prilis svym nazvem a pouzivamin pripominaji GTK widget... to asi nebude nahoda?
Jsi na dobre ceste, ale kazdy program v LISPU, ktery nekonci minimalne sedmi zavorkami je pravdepodobne chybny. Tri je vazne malo a jestre ti k nim chybi ty otviraci.
Jinak je LISP celkem jednoduchy, zavorky ti pomuze parovat editor a pokud to budes psat s odsazovanim a jednu funkci na radek, tak to pujde i celkem cist.
Coz ,obavam se, se o Perlu rici neda
GTK = Gimp ToolKit, takze ne, neni to nahoda - GTK+ vzniklo, aby mohl byt napsat GIMP :)
Mno,
LISP je sice docela sileny, ale neni zas tak spatny.
BTW: napsal jsem interpret microLISPu (muj vlastni, jednoduchy
klon LISPu) v PHP+MySQL. Jede na tom firemni soft a nutno rict
ze docela fajn. Napsat interpret LISPu (dle meho) je vec opravdu
elementarni.
BTW: nevite nekdo o nejakem peknem tutorialu LISPu - potrebuju,
aby se to nekdo naucil a nemam cas to vysvetlovat.
TNX
>(pro pamětníky - stejně se počítalo na starých polských kalkulačkách). Takto vypadá sčítání (+ 1 1)
Hehe tak to mne pobavilo. Toto je samozrejme odvracena polska notace a s kalkulackami vyrabenymi v Polsku ma tolik spolecneho jako s kalkulackami vyrabenymi kdekoliv jinde. I nejnovejsi kalkulacky HP umeji v teto notaci pracovat pac redukuje pocet uhozu.
Musim se pousmat jak autor clanku nekde neco pochytil a dela machra ;-)
>Musim se pousmat jak autor clanku nekde neco pochytil a dela machra ;-)
Autor clanku (to jako ja) spis vubec netusil, ze jiny pouzivany nazev prefixove notace ma s polskem taky neco spolecnyho, ale jestli vas to alespon pobavilo, taky dobre (alepon k necemu ten clanek byl). :)))
Mluvit o sile LISPU a rikat ze ji maloco predci je smesne. Uvedomte si jak jste omezeni na to co vam dovoluje jazyk a nejake knihovny.
Chcete srovnavat LISP s C++ ? Cha, v C++ si muzu napsat tridu CList (prip. CAsocArray) se vsemi potrebnymi LISPovskymi funkcemi a neprisel jsem ani o kus universality a efektvity C++. V C++ si proste udelam co chci.
Jak jsem se jiz zminoval, nejsem zadny LISP guru, spise se s LISPem, presneji se Scheme a Dylanem seznamuji. Samozrejme ze ve vsech techto jazycich udelate vsechno uz proto, ze si proste muzete napsat simulator procesoru :). Nicmene chcete-li srovnavat universalitu a efektivnost C++ a Lispu, mel by jste LISP znat. Takto srovnavate jen C++ se svou predstavou LISPu.