Gramatiky v IT

Qeek

Re:Gramatiky v IT
« Odpověď #30 kdy: 15. 05. 2017, 10:08:40 »
No mě by právě spíš zajímalo, jestli někdo ví o skutečně existujících aplikacích, kde to opravdu funguje. Fantazírovat můžem o lecčems a moc v tom nevidím smysl :)

v Unity3D je (podle https://www.diva-portal.org/smash/get/diva2:832913/FULLTEXT01.pdf) možné použít L-systémy (DBKG, https://cs.wikipedia.org/wiki/L-syst%C3%A9m) ke generování rostlin.

Samozřejmě se s gramatikami potkává člověk každý den (jen o tom neví), protože každý stavový protokol je možné vyjádřit regulární gramatikou. Takže i TCP je aplikovaná gramatika v praxi.


balki

Re:Gramatiky v IT
« Odpověď #31 kdy: 15. 05. 2017, 11:14:55 »
Vite co? Prestanme se bavit o tech neshopnych. Nejsou nijak zajimavi.
Že se s nimi pracuje v překladačích, to asi všichni víme a většinu z nás to asi nechává celkem chladnými, protože překladač nikdy navážno dělat nebudem. Existují nějaké jiné příklady z praxe? Třeba jánevím nějaké zpracování signálů elegantně vyřešené pomocí nějaké gramatiky? Něco, čím by se i normální smrtelník mohl inspirovat a říct si "Ha! Tohle taky musím někde použít!"?

Regulerna gramatika - stavovy automat.  Ked mas malo pamate a potrebujes menit program v zariadeni, implementujes ho vseobecne ako stavovy automat. Osobne som to pouzival na sledovanie stavu TCP-IP komunikacie a na regulovanie ventilov. Uplne easy vec. Mas nejaky stav, dojde nejaky vstup, prepnes na iny stav. Wow vec? Pouziva sa to v riadeni dopravy.

Bezkontextovu gramatiku som zatial pouzival len na sledovanie parovania udalosti, ci nedochadza k zlym stavom. (Zasobnikovy automat, alias pushdown automata)

Asi som uviedol dost nudne veci, ale pri niektore problemy je vhodne modelovat ako gramatiky, zjednodusi sa program, aj jeho formalne overovanie.

Z wow veci viem akurat, ze sa to pouziva v genetike a v lingvstike.

Ivan

Re:Gramatiky v IT
« Odpověď #32 kdy: 15. 05. 2017, 12:24:36 »
Že se s nimi pracuje v překladačích, to asi všichni víme a většinu z nás to asi nechává celkem chladnými, protože překladač nikdy navážno dělat nebudem. Existují nějaké jiné příklady z praxe? Třeba jánevím nějaké zpracování signálů elegantně vyřešené pomocí nějaké gramatiky? Něco, čím by se i normální smrtelník mohl inspirovat a říct si "Ha! Tohle taky musím někde použít!"?

Nemusis zrovna psat prekladac, abys' potreboval napsat parser nejakeho programovaciho jazyka. Vsechny nastroje jako je Eclipse Xtext, SonarQube, OpenGrok musel nekdo vytvorit. Anebo alespon jejich pluginy.

Priklad z praxe. Mas rozsahly projekt v nejakem polo-mrtvem pocitacovem jazyce, a potrebujes zjistit, ke kterym tabulkam v databazi pristupuje. Muzes to vsechno precist "rucne" anebo si na ty zdrojaky napises parser.

Napsat parser neni az tak tezky, jsou na to ruzne generatory. A vysledek je efektivnejsi nez si rict "pouzijeme jako programovaci jazyk XML", anebo "pouzijeme pro dotazavaci DSL jazyk podmnozinu javascriptu".

Tady muzes videt kolik parseru je volne k dispozici pro ANTLR https://github.com/antlr/grammars-v4.


Re:Gramatiky v IT
« Odpověď #33 kdy: 15. 05. 2017, 12:49:23 »
Samozřejmě se s gramatikami potkává člověk každý den (jen o tom neví), protože každý stavový protokol je možné vyjádřit regulární gramatikou. Takže i TCP je aplikovaná gramatika v praxi.
Tohle je (zde rozšířený) klam, že jestliže jde X modelovat pomocí Y, tak samotná existence X je důkazem užitečnosti Y.

Je dost možný, že evidenci došlých faktur jde popsat pomocí pojmů hinduistické filosofie. Přesto to v praxi nikdo nedělá, čili naléhavost problému evidence došlých faktur není (sama o sobě) důkazem užitečnosti hinduistické filosofie.

Qeek

Re:Gramatiky v IT
« Odpověď #34 kdy: 15. 05. 2017, 13:01:18 »
K původní otázce:
jen by mě zajímalo, čím jsou BG zvláštní, že se pro tuto úlohu hodí

IMO fakt, který k tomu přispívá nejvíce je, že BKG je nejjednodušší gramatika, která umožňuje párovat závorky.

Pokud nakoukneme do světa moderních prog. jazyků, tak dokonce zjistíš, že jich je spousta kontextových. Příklady kontextových jazyků: C, Java, JavaScript, Python, Ruby.  C++ je dokonce Turingovsky úplný (díky šablonám a od C++11 constexpr funkcím).

Tohle je (zde rozšířený) klam, že jestliže jde X modelovat pomocí Y, tak samotná existence X je důkazem užitečnosti Y.

Obecně máte pravdu. V případě nějakého stavového protokolu se gramatika může hodit pro jeho popis a na základě této gramatiky provést verifikaci (např. dokázat, že neexistuje takový stav, který by zapříčinil deadlock).


Re:Gramatiky v IT
« Odpověď #35 kdy: 15. 05. 2017, 21:12:12 »
V případě nějakého stavového protokolu se gramatika může hodit pro jeho popis a na základě této gramatiky provést verifikaci (např. dokázat, že neexistuje takový stav, který by zapříčinil deadlock).
No, to už je jiná. Ovšem na tohle se, AFAIK, gramatiky běžně nepoužívají.

P.S. Mimochodem, to, že je regulární gramatika ekvivalentní stavovému automatu, neznamená, že když na něco použiju stavový automat, tak jsem použil gramatiku. (Regulární) gramatika a stavový automat jsou dvě různé věci.

Ivan Nový

Re:Gramatiky v IT
« Odpověď #36 kdy: 15. 05. 2017, 21:48:36 »
V případě nějakého stavového protokolu se gramatika může hodit pro jeho popis a na základě této gramatiky provést verifikaci (např. dokázat, že neexistuje takový stav, který by zapříčinil deadlock).
No, to už je jiná. Ovšem na tohle se, AFAIK, gramatiky běžně nepoužívají.

P.S. Mimochodem, to, že je regulární gramatika ekvivalentní stavovému automatu, neznamená, že když na něco použiju stavový automat, tak jsem použil gramatiku. (Regulární) gramatika a stavový automat jsou dvě různé věci.

Na základě gramatiky lépe zkontrolujete co ten regulární automat dělá. Jinak i regulární výrazy jsou zápisem pravidel regulární gramatiky.

Re:Gramatiky v IT
« Odpověď #37 kdy: 15. 05. 2017, 21:58:44 »
Na základě gramatiky lépe zkontrolujete co ten regulární automat dělá.
Nevím. Mně přijde intuitivně srozumitelnější zápis stavového automatu.

Jinak i regulární výrazy jsou zápisem pravidel regulární gramatiky.
A?

Ivan Nový

Re:Gramatiky v IT
« Odpověď #38 kdy: 15. 05. 2017, 22:09:39 »
Na základě gramatiky lépe zkontrolujete co ten regulární automat dělá.
Nevím. Mně přijde intuitivně srozumitelnější zápis stavového automatu.

Jinak i regulární výrazy jsou zápisem pravidel regulární gramatiky.
A?

No rozhodně na základě dvaceti pravidel si uděláte lepší představu o přijímaném regulárním jazyku, než na základě 150 ifů zanořených do sebe. Proto taky jsou regulární výrazy tak populární.

No a vidíte, že myšlení na úrovni vytváření gramatiky běžně používáte, když prohledáváte řetězce pomocí regulárních výrazů.

Re:Gramatiky v IT
« Odpověď #39 kdy: 15. 05. 2017, 22:53:02 »
No rozhodně na základě dvaceti pravidel si uděláte lepší představu o přijímaném regulárním jazyku, než na základě 150 ifů zanořených do sebe. Proto taky jsou regulární výrazy tak populární.
Proč bych měl stavový automat zapisovat pomocí zanořených ifů?! Běžně se zapisuje takhle:



Můžete k tomuhle automatu napsat příslušnou gramatiku, schválně co bude zřetelnější a bude se nad tím snadněji přemýšlet ;)

No a vidíte, že myšlení na úrovni vytváření gramatiky běžně používáte, když prohledáváte řetězce pomocí regulárních výrazů.
A tvrdil jsem snad opak?!

Ivan Nový

Re:Gramatiky v IT
« Odpověď #40 kdy: 15. 05. 2017, 23:08:45 »
No rozhodně na základě dvaceti pravidel si uděláte lepší představu o přijímaném regulárním jazyku, než na základě 150 ifů zanořených do sebe. Proto taky jsou regulární výrazy tak populární.
Proč bych měl stavový automat zapisovat pomocí zanořených ifů?! Běžně se zapisuje takhle:



Můžete k tomuhle automatu napsat příslušnou gramatiku, schválně co bude zřetelnější a bude se nad tím snadněji přemýšlet ;)

No a vidíte, že myšlení na úrovni vytváření gramatiky běžně používáte, když prohledáváte řetězce pomocí regulárních výrazů.
A tvrdil jsem snad opak?!

No ale ten obrázek je de facto grafický zápis pravidel gramatiky. To jste se trochu střelil do nohy.

Re:Gramatiky v IT
« Odpověď #41 kdy: 15. 05. 2017, 23:21:03 »
No ale ten obrázek je de facto grafický zápis pravidel gramatiky. To jste se trochu střelil do nohy.
OMG! Je to de facto zápis gramatiky, protože pro ten automat existuje regulární gramatika. Ale tohle je prostě automat. Automat je automat a gramatika je gramatika.

Ivan Nový

Re:Gramatiky v IT
« Odpověď #42 kdy: 16. 05. 2017, 08:18:04 »
No ale ten obrázek je de facto grafický zápis pravidel gramatiky. To jste se trochu střelil do nohy.
OMG! Je to de facto zápis gramatiky, protože pro ten automat existuje regulární gramatika. Ale tohle je prostě automat. Automat je automat a gramatika je gramatika.

A co je pro vás srozumitelnější, OFF -> turn off OFF, ... nebo [['turn off', 1, 1],['turn off', 2,1],...]] s čím pracujete ve své mysli, s pravidlem, nebo snad se seznamem? Z hlediska programu je výhodnější seznam, z hlediska víry v to, co dělá automat, je lepší gramatika.


Re:Gramatiky v IT
« Odpověď #43 kdy: 16. 05. 2017, 08:28:21 »
Z hlediska programu je výhodnější seznam, z hlediska víry v to, co dělá automat, je lepší gramatika.
Ve složitější gramatice ani rychle nepoznáte, jestli se stroj někdy zastaví. Ale jinak víru vám neberu. Hare Krsna!

Ivan Nový

Re:Gramatiky v IT
« Odpověď #44 kdy: 16. 05. 2017, 08:45:11 »
Z hlediska programu je výhodnější seznam, z hlediska víry v to, co dělá automat, je lepší gramatika.
Ve složitější gramatice ani rychle nepoznáte, jestli se stroj někdy zastaví. Ale jinak víru vám neberu. Hare Krsna!

To jednoduše nepoznáte v ničem. Tak v tom není rozdíl, mezi seznamem a gramatikou.