Keby som nevedel o com je rec, tak to po precitani prvej tretiny vzdam. Bolo by, podla mna, lepsie popisat z coho sa zvycajne kompilator sklada ( lexer, parser, code-generator, optimizer, linker ), spomenut comu sa bude serial venovat ( parser, lexer ) a teoriu vysvetlovat az pri prikladoch.
Dufam, ze autor sa nevzda a bude pokracovat :-)
V dalsom diely by to chcelo prakticky priklad pre yacc.
Mohol by to byt standardny priklad primitivna kalkulacka ( iba plus a minus ), ktora sa bude postupne rozsirovat ( dalsie operatory, zatvorky, precedencia, asociativita, pridanie lexiky, if-then-else, cyklus ...)
Ani jsem to poradne necetl, jen jsem to prolitl. Muj nazor je, ze takovehle clanky nemaji moc smysl. To by tady brzy mohla zacit vychazet ucebnice "zaklady prace s pocitacem".
Vsem, kdo maji o tuhle problematiku zajem doporucuji navstivit jakekoli VS knihkupectvi a chtit skripta "Zaklady prekladacu" nebo pro hlubsi souvislosti i "Teoreticka informatika".
Ani jsi to poradne necetl? :-)
Myslim ze je vcelku neadekvatni prirovnavat "zaklady prace s pocitacem" a "Prekladace, formalni
jazyky a automaty" ;-)
A ktomu zajmu... Myslim, ze takove prispevky jsou vcelku fajn, nebot tak teprve clovek,
ktery do problemu moc nevidi, pozna jestli je jeho zajem skutecne realizovatelny.
Nevidim nejmensi duvod proc, i kdyby autor (ahoj smrtaku) cerpal z VS skript, nemel dat verejnosti obraz o formalnich jazycich a prekladacich. Myslim si, ze je dobre dat verejnosti, ktera dosud neprisla do kontaktu s touto tematikou, alespon strohou informaci o tom co to je, jak to funguje a odkud ma dale cerpat informace. Toto tema je velmi zavaznou problematikou a ja osobne autorovi fandim, ze se do toho pousti a budu ho jen podporovat.
Neni zadny problem vytvorit kritiku na neco jiz vytvoreneho, ale tvorit kritiku znamena i dukladne prostudovat original a slova "Ani jsem to moc necetl" povazuji za smesna..
To Autor: Doporucil bych zverejneni literatury odkud bylo cerpano a doufam,ze bude nasledovat 2 issue.
S pozdravem John
"Ani jsem to moc necetl", protoze jsem bez problemu absolvoval FEI VUT obor informatika a par prekladacu uz v zivote napsal. Prilis ctivy ten clanek taky neni.
Muj prispevek mel jen naznacit, ze pro informatiky je to nanic, protoze proti skriptum jsou tam navic snad jen nepresnosti. Ostatni pokud to chteji opravdu _umet_, tem taky nezbyde, nez si ta skripta (ci jinou literaturu) sehnat.
Namitka nebyla vznesena ani proti autorovi, ani proti clanku, spise proti tematu (v tomto rozsahu to proste dobre napsat nejde). Z diskuse jsem pochopil, ze spousta lidi si to nemysli, takze se omlouvam.
Chcel by som autorovi podakovat za jeho clanok a verim, ze ho i pripadny maly zaujem o serial neodradi. Mozno pre tych, co to vidia prvy krat sa to zda byt dost zlozite. Ja som cosi preberal v skole, mam urobit predkompilator a tento clanok velmi pekne a zrozumitalne zhrnuje vsetko to co je potrebne a podstatne. Inak suhlasim s vlkom-hlavne to s tym prikladom. :-)
Vzhledem k tomu, ze jem martyriem prekladacu a teoreticke informatiky musel projit na VS, tak bych mel nasledujici pripominky:
1. Pokud ma byt cilem clanku naucit lidi alespon elemntarnim vecem, ktere vyuziji v praticke implementaci napr. parsovani konecneho konfiguracniho souboru, je treba jeste vice teorie (jinak se budou divit, proc jim ta jeji sqele optimalne navrhnuta gramatika nejde zapsat apod.) a je skoda, ze z te teorie je vzat pouze ten zaklad.
2. Pokud to ma byt pouze kucharka - jak neco udelat - vykaslete se na teorii, konstatujte fakta a hotovo
3. Ve skriptech o velikosti radove stovky stran (do 150 bych to nevidel, jak psal nekdo - tedy Teoretickou informatiku + Prekladace) je praktickych veci cca 30-50%, podstatny je tam matematicky aparat a dokazovani tvrzeni, pokud budeme ucenym panum verit, velikost se rapidne zmensi
4. Skoda, ze clanek nevznikl asi pred 4 roky, ucilo by se mi na zkousky lepe, a na statnice jak by smet...
5. Vim o sobe, ze nejsem teoretik, nicmene nesouhlasim s tim, ze by mela byt nejprve teorie, pak praxe nebo naopak - je to totiz ciste individualni. Mohu-li mluvit za nekolik lidi v mem okoli, kteri museli nejprve projit Teoretickou informatikou (1 semestr), pote Prekladacema (lexikalni analyza atd. yacc, lex apod.) a Programovacima jazykama (predmet vesmes postaveny na matematickem aparatu Lambda kalkul, hezky budu si umet pokecat s martany (tvrdi do Prof. Hruska), prakticky uplatneni jsem zatim nenasel) byl problem ta teorie bez praktickeho vyznamu (neprosli jsme TEI a museli za rok opakovat), na druhou stranu uznavam, ze ZAP (ZAklady Prekladacu) bez zakladu TEI neni mozny, ale ten rozsah byl nad nase sily:-) (BTW dalo se studovat i TEI2 - pro masochisty:->)
1. Ano VUT FEI VTI mam za uspesne sebou:-)
2. O lehkych pisemkach si u Prof. Cesky (mam za to, ze postoupil:->, ty obhajovaci prace v tandemu Ceska, Hruska, Honzik byly vazne humorne, za tyto predvedene vykony Vas (nas) bezne vyhazuji, hlavne ze si to vzajemne podepisou) nech jen zdat a pilne se snaz pochopit teorii, s praktickymi priklady bez ni nic nezmuzes...
Podle me je takovy clanek k nicemu. Pro parsovani jednoduchych konfiguraku neni potreba nejaka slozita priprava (gramatika, automaty, atd), obejdu se lehce bez nich. Na druhou stranu musim rict, ze pro *kvalitni* pochopeni programovani prekladacu je tento clanek spis prekazkou, prave proto ze opomiji matematicke zaklady (moje zkusenosti rikaji, ze bez nich to opravdu nejde). Presto budu dal se zajmem sledovat snazeni autora.
Zdravim.
Je to nahodicka, ale zrovna predvcerom som do skoly pisal nejake veci o parseroch.
Nasiel som celkom slusny perlovy modul Parse::RecDescent, na ktorom sa da naucit dost vela. No a tento modul ma pribaleny aj maly tutorial, ze co su prekladace a tak. Odporucam stiahnut ten modul a precitat si ten tutorial, je napisany vazne polopatisticky.
BTW v tom tutoriale je to vysvetlovane na prikladoch. Velmi sa mi pacil priklad rozhovoru 2 senilnych dedkov naprogramovany s tymto parserom.
Predem diky za ohlas. Kdyz jsem clanek posilal na roota, obaval jsem se, ze je to moc slozite. Neverim vsak, ze k pochopeni veci je potreba matematicky aparat. Rozhodl jsem se nechat aparat aparatem a vzit to hezky po lopate. Takze, dalsi clanek bude o lexikalnich analyzatorekch, pokracovat budeme LL(k) gramatikami, vezmeme to pres kratoucky priklad rucne psaneho LL(k) analyzatoru rekurzivnim sestupem, pokracovat budeme yaccem, rekneme si, co znamena takove to kdyz se yacc spusti s -v, LR(k) gramatiky.
Cely matematicky aparat jsem popsal v tomto clanku a myslim, ze komu to alespon trochu zapaluje to musel pochopit a to doslovne.
Priznavam, ze jsem ten clanek jen tak preskocil, protoze tuhle teorii mam uz par let za sebou a vim, ze to vypada strasne, ale kdyz se v tom clovek zorientuje a nauci se cist matematicky zapisy, je to vlastne nesmirne prosty :-)
Tesim se na pristi pokracovani a slibuju, ze to budu cist pozornejc - musim se totiz priznat, ze Prekladace (s Mirkem Benesem?) byl muj oblibenej predmet a par jsem si jich pro vlastni poteseni napsal...
No na jednu stranu je mozne, ze tento uvod do teorie nekomu neco rekne, ja osobne se spise ztotoznuji s nazorem, ze ten kdo o tom nic nevi bude zmatenej a ve sve nevedomosti bude pokracovat ;-)
Ale pokud to tedy jako teorie staci nemely by se alespon vyskytovat v teto teorii chyby, ktere genialniho laika jeste vice zmatou ;-(((
V clanku je pouze jediny priklad 'pruchodu' gramatikou G1 - a to pro slovo jazyka cbbaab a je v nem chyba to nadsenemu laikovi mnoho nepomuze (IMHO).
Chtelo by to vice kontrolovat vysledny text zvlaste kdyz je diky omezenemu prostoru velice ... rekneme strucny.
(..... ->cbbAab -> cbbAab -> ..... pricemz zadne pravidlo A -> A v G1 neni)
Kdyz jsem pred lety pachal jednoduchy jazyk a mel jsem pouze anglicky manual bisona (GNU yyac) a neumel jsem anglicky, tak jsem se sice metodou pokus-omyl k necemu dopracoval, kdyz jsem pak nasel dokumentaci k flexu (GNU lex), tak jsem to i vylepsil, ale dodnes poradne nevim, proc mi to stale vyhrozuje nejakymi "reduce-reduce conflict".
Tim chci rici, ze takovy serial, ktery osvetli pravidla a meze gramatiky povazuji za velice uzitecny, zvlaste bude-li provazen i jednoduchymi priklady. Prvni dil je, myslim, rozumny kompromis mezi odbornou teorii a popularnim vykladem.
Ano, presne co pisete byl jeden z bodu me kritiky, obavam se, ze clanek (a jelikoz jsme teorii jiz skoncili, tak serial) Vam tyto problemy a matematicky aparat na detekci ci reseni prave techto veci neni k nicemu a jak poznamenali jini spise v urcitych ohledech to uskodi...
kdyby si autor odpustil uvod plny zavadejicich
informaci (preklad stroj. jazyka nema s prekladem
prirozeneho jazyka prakticky nic spolecneho, ostatne
angl. ma na to dve slova compile a translate,...)
a dal si praci lepe (nemusi znamenat sloziteji) vystvetlil nektere pojmy a tvrzeni, asi by clanku
rozumelo vic lidi
Je velmi dobre, ze ste sa odhodlal napisat clanok na takuto temu, ale vobec sa mi nepaci styl pisania. Zakladne pojmy su len tak hadzane do textu, pricom sa castejsie vysvetluju az za ich uvedenim a to este velmi zjenodusujucim pojmom, ktory urcite mnohych ludi pomyli. Hned nato sa tieto pojmy pouzivaju, ako keby bola teoria perfektne vysvetlena.
Pouzivaju sa tu vselijake zlozite pojmy (asi pre tie "hloubave hlavinky") a spolu s tymi prisernymi gramatikami (to sa nedali uviest nejake jednoduchsie) mi to pripada, ako keby ste chceli ohurovat.
Celkovo sa mi to zda, ze vedomosti sice mate, ale podanie je prilis chaoticke, co sa skor alebo neskor vypomsti citatelom.
Tymto nechcem autora odradit, ani ho osocovat, ci urazat, ale ako sam napisal a pri studiu urcite pochopil, je tato problematika zlozita a neda sa vsetko vysvetlit na par stranach.
Dufam, ze to nebolo velmi krute.
No kdyz ono je to tezky. Zacnu-li byt trochu formalnejsi, velmi se snizi okruh lidi co muzou clanku porozumet. Kdyz to budu psat tzv. "vic pro blbecky", pak se to zase nebude libit tem, co by to raci formalneji. Clovek si nevybere :-(. Takze jsem se snazil zvolit vhodny kompromis a vlastne ani nevim, jestli se mi to povedlo nebo ne. To by meli posoudit jini.
Clanek mel vesmes objasnit co je to gramatika a k cemu je to dobre a to doufam splnil. Jeji realne pouziti snad pozdeji.. :-)
Samozrejme, ze clovek si nevyberie a styl pisania je koniec-koncov len a len na Vas. Mozno by vsak nezaskodilo, to po sebe precitat s tym, ze akoze o problematike nic neviem a co z toho textu pochopim. Tak sa da vela zistit, ale chce to aj nejaky cvik.
Inac suhlasim s vlkom (e-mail na zaciatku diskusie), ze to skor malo zacat vysvetlenim procesov, z akych pozostava preklad, naco to je, kde a preco pouzivat gramatiku, uviest nejaku primitivnu a mozno by stacilo na zaciatok iba BNF miesto EBNF, ... Vsetky tieto veci vysvetlit iba strucne, ale nestratit medzi nimi navaznost, aby sa chapalo naco je to vsetko dobre. Tak sa zachova aj formalizmus (teoria) a neoradi to praktikov.
Ale serial este len zacal. Uvidime neskor.
Prajem vela vytrvalosti.
diky za clanek - tyto clanky, dle meho nazoru, delaji root zajimavym.
Nicmene, autor by si mel ujasnit, zda bude psat kucharku (pak se nemusi o teorii zminovat) anebo odborny clanek (pak by nezaskodila vetsi presnost, ctenar odborneho clanku ho nesmi NEJAK pochopit, ale musi mit sanci pochopit ho ZCELA JEDNOZNACNE - to, bohuzel, neni u tohoto clanku mozne).
Nechci byt hnidopich a budu rad, kdyz clanek bude pokracovat.
Studoval som fyziku, zivim sa programovanim. O teme som pocul, mam o nej intuitivne tusenie. Citim vsak absolutny nedostatok backgroundu. Snazim sa ho nejako minimalizovat, ale nejako mi to z kniziek samemu ide hrozne pomaly. TAKYTO CLANOK JE TO, NA CO SOM CAKAL. Nakopnut spravnym smerom, potom sa aj knihy budu luskat lahsie.
Posielam nejake Q. Ak bude aj pokracovaie poslem znova.
PISTA
Mily Ondreji,
pustil ses na prilis tenky led. Netvrdim, ze FJA nejdou vysvetlit popularne, ale Tobe se to (nic ve zlem) moc nepodarilo. Nektere veci opomijis nebo neni dostatecna motivace: napr. by slo uvest treba zjednodusenou pascalovskou gramatiku, z tech aabbcc nemusi byt kazdy chytry, ale kdyby tam mel neco jako
Program -> begin Body end;
Body -> Prikaz; Body
Prikaz -> If | Write | Read ...
treba by mu to lip docvaklo. Parsovani konfiguraku je sice dobra motivace, ale nijak dal jsi to nerozvedl. Pritom by mozna dobre stacilo predvest problem parsovani dvojiteho if-then-else, kde je dobry reduce-reduce konflikt.
Podle me nema cenu ctenare presvedcovat, ze je rozdil mezi gramatikou a automatem. V beznem zivote se pouzivaji pouze CFG a takove speky laik neoceni. Myslim, ze trepani krabici ctenare spis zmate nez uvede do problemu.
Taky jsi opomenul pri definovani zakladnich pojmu na terminaly a neterminaly. Kdybych nevedela, co to je, byla bych v te chvili asi vyrizena.
Zkus v pristich dilech dukladneji oddelit prakticke od prilis akademickeho. Dbej na to, abys nemluvil o necem, co nebylo dopredu vysvetleno. Jestli nekdo z Tveho vykladu pochopi LL(1), budes u me frajer.
Hodne zdaru v dalsi praci
Popelucha
V jednom odstavci píšeš:
Na první pohled se může zdát, že gramatika a automat jsou naprosto totožné pojmy. Zdání však klame. Chápeme-li automat jako program resp. algoritmus, uvidíme, že ne pro každou gramatiku lze sestavit automat, který generuje stejný jazyk jako tato gramatika. Bude-li zájem, mohu zde předvést neformální důkaz. (Upozorňuji, že zabere minimálně dva další články :-)))
Automat jazyk negeneruje, ale rozhoduje (tedy pokud bereme v úvahu automaty (tj. i TS) s výstupem ANO/NE). Nicméně pro každou gramatiku (typu 0) můžeš napsat turingáč a obráceně. Pokud jsi chtěl říct, že nemusíš vždycky dostat odpověď, tak jsi to řekl trochu nešťastně. (tak - a teď doufám, že jsem si nepoplet pojmy já:-)
Nicméně jinak dobrý - aspoň se lidi dozví, že překladače a to celé není nějaká magie, ale že to má celkem slušný matematický základ.
Ahoj Ondro,
Popelucha mela pravdu a rekla to pekne vystizne:-) Ocenuji tvou snahu, ale myslim, ze tema FJA (formalni jazyky a automaty) je pro nezasvecene prilis slozite.
Vysvetlovat neco jen tak povrchne bez hlubsich souvislosti postavenych na strohe teorii nema prilis vyznam.
Na druhou stranu pokusit se popsat yacca ci bisona
by snad slo. Teorii nech stranou, vezmi jen opravdu
minimum a ukazuj prakticke priklady. Drzim pesti.
Jeste mala poznamka ohledne prekladacu na FEI. Studuju
FI (http://www.fi.muni.cz), ale z doslechu jsem nabyl
dojmu, ze tam ty prekladace a informatika obecne zas
tak tezke nejsou:-)
Tom