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