Při přednáškách a přípravě na letošní zkoušky z Analýzy a návrhu informačních systémů a Bezpečnosti informačních systémů jsem si vzpomněl na pár pojmů, které bývají často zaměňovány a používány v opačném významu, i když je mezi nimi rozdíl. Mezi tyto pojmy patří např. validace a verifikace, metodologie a metodika a aplikační versus business logika (odmítám psát byznys logika, protože to vypadá divně). Ač je zde samozřejmě možnost, že tyto pojmy jsou na různých místech definovány a chápány různě, tak v následujícím příspěvku bych chtěl zmínit, jak to vidím já a různé zdroje, které jsem nalezl :).
Sice jsem teprve v posledním ročníku magisterského studia, ale jelikož plánuji pokračovat v doktorském studiu na FITu, tak jsem si ze zvědavosti prošel seznam předmětů, které byly/jsou otevírány letošní rok a vybral jsem pár předmětů, které bych si zřejmě zapsal :). Orientace: teoretická informatika, matematika, programovací jazyky.
Na námět jednoho mého čtenáře (fakt, ono zřejmě někdo ty moje příspěvky čte! :] j/k) se v tomto příspěvku budu zabývat vztahem mezi znakem (character) a bajtem (byte) v jazycích C a C++. Mimo jiné se dozvíte, proč strlen()
vrací vždy počet bajtů v předané posloupnosti ukončené nulovým bajtem a proč nemůže sloužit k tomu, aby vracela počet širokých znaků (wide characters) předaného řetězce, např. pokud se jedná o řetězec znaků reprezentovaných v Unicode.
Ač jsou mnohdy tyto dva termíny mylně používány ve vzájemné souvislosti ("programuji v dynamickém jazyce, tedy dynamicky programuji"), tak mezi oběma termíny (koncepty) je velmi zásadní rozdíl, který je činí naprosto ortogonálními. Lze tedy využívat konceptů dynamického programování v jazyce, který není považován za dynamický a zároveň lze programovat v dynamickém jazyce, aniž by bylo využíváno dynamického programování. Cílem tohoto příspěvku je oba termíny vysvětlit, aby vynikl jejich rozdíl.
Rok 2009 se pomalu blíží ke konci a tak jsem se rozhodl, podobně jako minulý rok, zamyslet nad tím, co pro mě tento rok znamenal a co se v něm zajímavého odehrálo. Opět se mrknu na kulturní oblast, konkrétně jaká hudební alba, filmy a koncerty z tohoto roku mě zaujaly. Všem přeji mnoho zdaru do nadcházejícího roku 2010 ;).
Před hodinou jsem se vrátil ze srazu naší třídy ze základní školy po 8,5 letech. Je zajímavé, co si člověk při takových setkáních uvědomí...
Programátoři v Pythonu, kteří k tomuto jazyku přešli z některého staticky typovaného jazyka (C++, Java, ...), mívají problém s tím, že se snaží používat koncepty, které mají zažité z jiných jazyků, ale které v Pythonu nemají co dělat. Jeden z nich se týká zneužívání funkce isinstance()
a cílem tohoto příspěvku je na něj poukázat a vysvětlit, v čem je problém.
Jelikož jsem na toto téma nedávno narazil při diskusi s mým spolubydlícím a také se pravidelně objevuje v předmětech prof. Hrušky :), tak jsem se rozhodl osvětlit část problematiky přístupu ke globálním proměnným v jazycích Python a PHP.
Při testování metodou bílé skřínky (white box) je obecná snaha o co největší pokrytí testovaného kódu (code coverage). Minimálně byste se měli snažit o to, abyste testy pokryli každý řádek vašeho programu, který stojí za to testovat (např. obě větve každého úplného if-else příkazu, ale už ne třeba situace typu assert false, 'x > 0; this should never happen'
). O tom, jak si zjistit aktuální pokrytí vašeho kódu v jazyce Python bude následující příspěvek.
V tomto příspěvku naznačím důvod, proč nemůže pro jazyk C existovat LL(k) gramatika pro libovolné konečné k. Příspěvek si asi užijí jen ti, kteří mají určité základy z oblasti teorie formálních jazyků a překladačů, ale do žádných složitých detailů se pouštět nebudu.