Typy chyb v programech v Prologu

March 21st, 2010

Jak potvrdí asi každý, kdo se programováním zabýval delší dobu, většina programovacích jazyků si je hodně podobná. Existují sice odlišnosti v tom, jaké používají závorky, čím oddělují příkazy, jestli (jak) podporují objektové programování nebo jak přistupují ke správě paměti. To jsou ale jen kosmetické záležitosti a drobná vylepšení klasického “imperativního” stylu výpočtu, kdy počítač provádí jeden příkaz (instrukci) za druhým tak, jak je programátor zapsal.

To ale není jediný možný přístup k tvorbě programů. Teorie (a koneckonců i praxe) říkají, že stejné výpočetní síly jde dosáhnout také pomocí vhodně složené sady logických formulí (“Logické programování”). Nabízí se otázka, jestli – a jak – způsob programování ovlivní, jaké chyby se v programu mohou vyskytnout. Logické programování ale je spíš koncept výpočtu než určitý programovací jazyk, proto se ve zbytku textu omezím na vyprávění o jazyku Prolog, který z tohoto konceptu vychází.
Read the rest of this entry »

Zkušenosti po měsíci s Mackem

May 15th, 2009

Zhruba před měsícem se mi naskytla příležitost k výměně notebooku za nový, kterou jsem rád využil. Po zkušenostech s HP se mi moc nechtělo řešit instalaci Linuxu a hardwarové perverze. Stejně tak se mi nechtělo dělat si "Unix" z Windows, aby na nich šlo aspoń trochu pracovat. Po zvážení všech alternativ a uvážení, že OS X je vlastně zčásti maskované FreeBSD… jsem se vydal vstříc novým zážitkům s novým OS.

Read the rest of this entry »

Client-side captcha

May 5th, 2009

Díky tomu, že spammeři vám vlezou úplně všude, je dnes běžnou součástí většiny formulářů, je dnes běžnou součástí většiny veřejně viditelných webových formulářů captcha. Tedy otázka nebo úkol, jehož zpracování je pro člověka triviální, ale počítač se s ním (zatím) nedokáže jednoduše vypořádat.
Read the rest of this entry »

Kdo vlastně zabíjí hraní na PC?

October 22nd, 2008

V posledních měsících vyšlo několik opravdu zajímavých her pro PC. S dobrým nápadem, od zkušených autorů a výbornými recenzemi. Přesto si ani jednu z nich nekoupím. Aby nedošlo k nedorozumění, neplánuju si je ani stáhnout od pirátů, nebo obstarat jinak. Prostě je, přestože by mě zajímaly, nebudu hrát.
Read the rest of this entry »

Opera Mobile a Opera Mini, zkušenosti po měsíci používání

August 29th, 2008

O mobilní telefony a mobilní Internet se mimo běžne volání a SMS a občasné hledání v jízdních řádech moc nezajímám. Při cestách po ČR s sebou buď vozím notebook, nebo (a to většinou) jde o cesty tak krátké, že Internet nepotřebuju vůbec. Celý minulý měsic a pár dní k tomu jsem strávil v zahraničí, pouze s telefonem (Nokia 6120) a s Windows Mobile PDA. Na obou zařízeních byl nainstalovaný prohlížeč Opera. V tomto zápisku se snažím shrnout svoje zkušenosti (teda spíš připomínky), které jsem během měsíčního používáni nasbíral.
Read the rest of this entry »

Spojování podmínek v Petalu

June 1st, 2008

Po zápisku o HTML::Mason přidávám pár hintů k dalšímu šablonovacímu systému pro Perl, tentokrát pro Petal. Proti Masonu je Petal o dost jednodušší, ale na weby s několika stránkami bohatě stačí. Petal má navíc velkou výhodu v tom, že je kompletně postavený na XML, takže je možné jeho použití jednoduše kombinovat s dalšími XML nástroji. Některé věci v něm ale jsou zjednodušené možná až příliš – například syntaxe výrazů v podmínkách. To může znamenat problém, pokud je viditelnost některých prvků stránky řízena složitější logikou a využívá se více proměnných.
Read the rest of this entry »

Excalibur vstává z mrtvých (už zase?)

May 28th, 2008

Posledních pár týdnů žije český Internet – nebo alespoń jeho malá část – snahou o oživení herního časopisu Excalibur. Ve své době šlo o legendu a zároveń první časopis v ČR, který se věnoval počítačovým hrám jako hlavnímu tématu. Po založení časopisu Score (a odchodu většiny redakce) jeho sláva postupně upadala, až upadla úplně. Včetně časopisu. Martin Ludvík (-ml-), vydavatel časopisu, se několikrát pokoušel o oživení časopisu a využití značky, pokaždé ale bez valného úspěchu.
Read the rest of this entry »

HTML::Mason, mod_perl, čeština a utf-8

May 25th, 2008

HTML::Mason je jednou z výborných (řekl bych nejlepších, ale dost jsem jich ještě nevyzkoušel) voleb při vývoji webových aplikací v Perlu. Výhod je spousta – komponenty, přehledná syntax, jednoduché na naučení. Dokud je vyvýjená aplikace v angličtině a pro anglicky mluvící, je všechno krásné, funkční a jednoduché. Problém začne až ve chvíli, kdy se na web začne míchat Unicode.
Read the rest of this entry »

Ještě jednou Sudoku

January 26th, 2008

V minulém příspěvku o Sudoku solveru. -mt- v diskuzi pod příspěvkem namítal, že solver je podobně rychlý jako jeho naivní solver v C++. Že by chytré řešení v Javě bylo stejně rychlé jako naivní řešení v C++ zní trochu divně — ledaže by to s tou chytrostí nebylo tak horké…

Nebylo. Při kontrole korektnosti pozice se testovalo, zda v některé skupině (tj. řádku, sloupci nebo podčtverci) nejsou dvě stejné hodnoty a že pro každé pole zbývá alespoń jedna možná hodnota. Přidáním dalšího testu, který kontroluje, jestli do každé skupiny stále lze vložit (nebo už je vloženo) všech devět číslic. Na úloze z předchozího příspěvku klesl počet návratů při backtrackingu díky rychlejší detekci nekorektní pozice z 174844 na 35039.

Bez dalších technických optimalizací se čas nutný přo nalezení řešení výše zmíněné úlohy (na stejném stroji) snižil z průměrných 2940,3 ms na 392.16 (± 16) ms. Nová verze solveru včetně zdrojových kódů je ke stažení na stránce projektu. Několik nápadů na zrychlení ještě zbývá, ale to zas někdy příště…

Rychlost alokací v Javě

January 5th, 2008

Když jsem před časem programoval Sudoku solver v Javě, použil jsem jednoduchý, dalo by se říci až naivní, přístup k vytvoření zásobníku pro backtracking. Při řešení jednoduchých sudoku naivní implementace nevadí, protože k backtrackování dochází jen minimálně. Jak to je s (ne)efektivností tohoto řešení doopravdy se ukázalo až na opravdu těžkých zadáních z Minimum Sudoku.
Read the rest of this entry »