Zmatení (programovacích) jazyků

  • 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
  • Ztraceno v překladu

    Nikdo jistě nepochybuje o tom, že kompilace je proces na všech úrovních velmi komplikovaný. A v praxi téměř vždy ztrátový. Pokud například překládám kód v C# do Javascriptu, „int x“ a „string x“ se přeloží do „var x“, čímž se ztrácí informace o typu. Při překladu do strojového kódu se samozřejmě z konceptů vyšší úrovně ztratí skoro vše.
    27. 9. 2013 17:01
  • Ontologická promiskuita

    Logické aspekty jazyka zkoumá věda od dob Aristotela. Rád bych zde popsal několik všeobecně používaných způsobů formalizované logické reprezentace. Příklady jsou z přirozeného jazyka, nicméně formální logika má široké použití v informatice, kromě logického programování se například používá rovnostní logika pro ověřování správnosti programů a rezoluční kalkulus pro kontrolu hardwarových návrhů.
    15. 9. 2013 0:53 (aktualizováno)
  • 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?
  • Sémiotika formálních jazyků

    Sémiotika, relativně mladý vědní obor, se většině lidí pojí (pokud tedy vůbec s něčím) se jménem Umberta Eca. V 70. letech 20. století se vědci pokusili aplikovat principy sémiotiky i na programovací jazyky. Jedním z prvních byl Heinz Zemanek. Sémiotika rozděluje aspekty (formálních, tedy i programovacích) jazyků na syntaktiku, sémantiku a pragmatiku. Syntaktika popisuje vztahy mezi znaky navzájem, sémantika vztahy mezi znaky a jejich významem a pragmatika vztahy mezi znaky a interpretantem.
    10. 9. 2013 12:08
  • Xamarin na iOS

    V souvislosti se sérií článků o vývoji mobilních aplikací v Xamarinu zde na Rootu bych rád upozornil na nesmyslné tvrzení o správě paměti v iOS. K diskusi o tom, odkdy má ObjC počítání referencí a autorelease pool, se nebudu vracet, k vygooglování této informace není zapotřebí zvláštní inteligence, stačí umět číst.
    29. 8. 2013 12:56
  • 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).
  • Rezoluce aneb předstupeň logického programování

    Logické programování (Prolog a spol.) je v mnohém revoluční a přinejmenším poskytuje jiný úhel problému na řešený problém. Málokdo ví, jak se tzv. logické programování vlastně vyvinulo. Prvopočátkem bylo tzv. automatické dokazování tvrzení (anglicky Automated Theorem Proving – ATM, někdy také Mechanical Theorem Proving). Bývá často považováno za součást umělé inteligence, nicméně spadá pod formální logiku. Vše začalo v roce 1965, kdy John Alan Robinson objevil rezoluci…
    6. 8. 2013 18:57 (aktualizováno)