Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Odpověď na názor

Odpovídáte na názor k článku Mercury: Programování s pomocí instalatéra.

Ondřej Bojar
Ondřej Bojar (neregistrovaný)
8. 3. 2004 14:01

Re: Clanek

celé vlákno

Napsal jsem lingvistický modul do školního projektu. V systému "robůtků" běhajících po domě tenhle modul zajišťuje, že robot rozumí větám typu "Seber červenou knihu." "Dej ji na polici v knihovně." Pokud nelze z udaného popisu předmět určit, robot se zeptá: "Kterou červenou knihu, tu v pokoji nebo tu v kuchyni?" A správně rozumí odpovědi "Tu v kuchyni.".

Pak jsem napsal interpret vlastního jazyka na výběr "jednoduchých vět" (jeden typ "jednoduchých vět" jsou skutečně věty jednoduché, ale můžete napsat skriptík na výběr něčeho jiného) z textu. Základním stavebním kamenem jsou sestavy rysů a regulární výrazy nad sestavami rysů.

Pak jsem napsal kompilátor vlastního jazyka na přípravu tabulek do Perlu. Ten jazyk lze charakterizovat takto: popíšete cílovou tabulku jako slepeninu tabulek podsebou a vedle sebe, lepíte jakkoli se vám hodí, ale aby lepení bylo možné, tj. počet řádků/sloupců musí souhlasit. Dále popíšete, kde se berou vstupní data, např. SQL dotaz, a jak se vstupní data pro účely tabulky transformují. Pikantní na té transformaci je eliminace for-cyklů, speciálně vnořených. Když budu mít proměnnou seznam_cisel a v ní jednotlivá čísla uchovaná v položce cislo, tak se např. podíl jednotlivých čísel na součtu nechá vypočítat takto:

seznam_cisel {
cislo,
podil_cisla_na_souctu = cislo / ..:soucet
},
soucet = sum(seznam_cisel, cislo)

A pro kontrolu, že nám podíly sčítají do jedničky, můžeme přidat jeden řádek:
pro_kontrolu_soucet_do_1 = sum(seznam_cisel, podil_cisla_na_souctu).

Zmíněný kompilátor vyřeší všechny závislosti mezi proměnnými, přidá potřebné for-cykly a uloží program v Perlu, který tabulku generuje (např. ze zmíněných SQL dotazů.)

A pak ještě řadu drobností.

   
Chcete přispět jako registrovaný uživatel? Přihlaste se ke svému účtu.
Ochrana proti spamovacím robotům. Odpovězte prosím na následující otázku: Jaký je letos rok?
 

Pravidla pro diskutující

Přidáním čtenářského příspěvku do diskusí či fóra souhlasíte s tím, že budete dodržovat následující pravidla. Při jejich hrubém porušení se vystavujete riziku smazání příspěvku, jeho modifikaci, v krajním případě i zablokování přístupu do diskusí.

Redakce ze zásady nezasahuje do čtenářských diskusí a zavazuje se, že nebude mazat ani modifikovat příspěvky, kromě případů, kdy tyto porušují některé z následujících pravidel. V takové situaci je na zvážení redakce, zda příspěvek modifikuje s viditelným upozorněním, či přímo smaže. Redakce nikdy nemaže „nesouhlasné komentáře“ jen proto, že jsou nesouhlasné. Vítáme střet názorů, ale vždy v rámci slušné a kultivované debaty.

Příspěvky nesmí obsahovat:

  1. Vulgární či hrubé výrazy.
  2. Urážlivé výroky na adresu druhé osoby či skupiny osob.
  3. Texty, které mají za cíl jen vyprovokovat emotivní reakci (trolling).
  4. Rasové útoky či útoky na jakoukoliv jinou menšinu či skupinu obyvatel.
  5. Komerční nabídky a affiliate odkazy.
  6. Odkazy na warez, sériová čísla, licenční kódy, pornografii a další nevhodný materiál stejně jako žádosti o poskytnutí tohoto obsahu.
  7. Prokazatelně protiprávní obsah.

Informace o soukromí: U všech přidaných komentářů provozovatel ukládá IP adresu a hostname odesílatele. U neregistrovaných uživatelů se na webu zobrazuje část hostname, případně IP adresy, neumožňující identifikovat konkrétní počítač.

Povolené značky XHTML: a, br, code, em, li, ol, p, pre, strong, sub, sup, ul