Hlavní navigace

Zmatení (programovacích) jazyků - Články označené nálepkou Pokročilé techniky

  • Sensus communis

    CSR (common sense reasoning) je jednou z nejdůležitějších oblastí umělé inteligence. Jak sám název napovídá, CSR úzce souvisí s formální logikou. Z pohledu implementace vyvstává otázka, jak lze CSR adekvátně reprezentovat a vyhodnocovat. Obecné znalosti (common knowledge) lidé získávají skrz jazyk a není důvod, proč by tomu mělo být v AI jinak. Jazyk je lineární reprezentací informací a jeho formální podobu lze interpretovat v duchu tzv. konjunktivismu, tj…
  • Answer Set Programming

    Nikdo jistě nepochybuje o užitečnosti logického programování. Znalost většiny vývojářů ovšem končí u Prologu (pokud vůbec), což je sice velmi elegantní a propracovaný jazyk, ale má i pár nevýhod. Moderní implementace nabízejí tabling, čímž zaručují vyvarování se nekonečné smyčky, pokud program splňuje „bounded term-depth property“, ale až na nečetné výjimky nepodporují disjunkci (protože trvají na Hornových klauzulích). Řešení poskytuje až ASP (dříve nazývané „stable models programming“).
  • Kognitivní asistent

    Jak se implementuje aplikace à la Siri? Protože právě na podobném projektu pracuji, popíšu (velmi stručně) jednotlivé moduly v pořadí, jak si předávají data. V závorkách uvádím anglické názvy pro snazší vygooglování. 1. Rozpoznání řeči (speech recognition). To si člověk na koleně nenapíše. Pro mobilní aplikace nabízí SDK například Nuance. Někdy je vhodné použít ne nejpravděpodobnější rozpoznaný text, ale celý chart (lattice)…
  • Usmívejte se, vyletí výjimka

    Dnes malá perlička z microsoftího světa. Nejprve o zlomyslných programátorech. Dostala se mi do ruky knihovna (DLL) pro .NET. Při použití v programu napsaném v C# vyhodila výjimku. RuntimeWrappedException. Dobrá tedy, někdo použil throw na objekt nedědící z Exception. Vezmu WrappedException, jenže tu nelze přetypovat, protože nějaký dobrák použil šablonu, takže C# onu třídu vůbec nevidí (nenašeptává, nepřekládá). Kontrolní otázka: pokud vím, že vyhozená třída má metodu UserData, jak ji zavolám?
  • Ptáci létají

    Každé malé dítě ví, že ${title}. Vyjádřeno formálněji, pokud x je pták, x létá. Modus ponens jako vyšité. Problém ovšem nastává, jakmile někdo namítne, že x může být pštros. Nebo tučňák. Nejen v přirozeném jazyce, ale obecně při logickém rozumování o světě velice záhy narazíme na nejasné hranice pojmů, pravidel a ontologie vůbec. Jinými slovy, svět kolem nás nejde dokonale formálně reprezentovat v klasické logice prvního řádu…
  • Kategoriální gramatika a sémantika

    Ještě před objevením frázových gramatik se jazyky popisovaly gramatikou kategoriální (KG), kterou v současné podobě vypracoval začátkem 50. let minulého století Yehoshua Bar-Hillel. Co do generativní síly je základní KG ekvivalentní bezkontextovým gramatikám. Výhoda KG spočívá v její jednoduché rozšiřitelnosti o sémantickou komponentu (což jde sice u bezkontextových gramatik také, ale ne tak elegantně)…
    7. 10. 2013 0:47
  • Databáze a C++: najdete řešení?

    Článek k zamyšlení pro ty, kdo opravdu dobře znají C++. Nejprve si přečtěte toto: Native Queries for Persistent Objects Málokoho asi překvapí, že objektová databáze včetně nativních dotazů, jak je popsána ve zmíněném článku, je implementovatelná v Javě a C# (existují také podobné projekty pro Smalltalk a další objektově-orientované jazyky). Výzvou je implementovat takovou databázi v C++. Co by měla umět?
  • Logické programování v C

    Předpokládám u čtenáře alespoň minimální znalost Prologu. Jak bychom mohli v C snadno implementovat princip logického programování (tedy zejména deklarativitu, nedeterminismus a unifikaci)? Mějme následující strukturu, která reprezentuje „prologovské“ proměnné (má-li str hodnotu NULL, považujeme proměnnou za volnou).
  • Turingovsky úplná bezkontextová gramatika

    Sofistikovaná syntaktická analýza si často nevystačí s prostou bezkontextovou gramatikou, proto vznikla její různá rozšíření. Jedním opravdu zajímavým je použití feature logic (FL) doplňující reprezentace v podobě syntaktických stromů. FL pracuje s termy. Každý term je buď konstanta nebo má tvar ft, kde f je (unární) funkční symbol a t term. Atomické formule mají tvar s≈t, kde s a t jsou termy. Formule se skládají rekurzivně pomocí běžných logických spojek (vystačíme s negací a disjunkcí).
    14. 8. 2013 10:45 (aktualizováno)
  • Unifikace, AC-unifikace, E-unifikace...

    Unifikace nám dnes připadá samozřejmá, byla však v rámci logiky objevena teprve v roce 1965 Johnem Alanem Robinsonem a původně sloužila pouze ke strojovému dokazování tvrzení. J.A.Robinson popsal první (nepříliš efektivní) algoritmus syntaktické unifikace, jejž sám používal pro vytváření instancí termů v predikátové logice (viz předchozí příspěvek o rezoluci).