Tigrův zápisník – můj blog

Tigrova bedna – něco ke stažení
Tigrovy poznámky – co se na Twitter nevešlo
zc.murtnec@24rgit – můj e-mail pozpátku
Sní androidi o měděných trubkách?
Máte na disku některé soubory vícekrát, ale nevíte které a kde? Jistě najdete n programů komerčních i volně ke stažení, které tento problém řeší. Já zde nabízím program n plus první. Co je na něm zajímavého?
Je rozumně rychlý. Je to Bash skript. Celá práce se odehrává v jediné unixové rouře.
„Pište programy, které dělají jednu věc a dělají ji dobře. Pište programy, které spolupracují. Pište programy, které pracují s textem, protože text je univerzální médium.“ (Doug McIlroy, autor unixových rour)
Nekonečný příběh Tigrova zápisníku
Prvákův evergreen. Vždyť víte, jaké má být: čitelné, efektivní, odolné proti nesprávným vstupům :-)
Mě zase zneklidňuje, že se po smrti vždycky probudím v márnici.
Falešní hráči! Posviťme si na ně
Dnešní databázové systémy jsou složité stroje, se kterými se musí hovořit jazykem jejich kmene (nejspíše dialektem SQL). Má to své výhody: vysoký výkon, robustnost, hodinovou sazbu odborníků na Oracle. Jednoduchým textovým databázím však neodzvonilo; i po čtyřiceti letech najdeme seznam uživatelů unixového systému v textovém souboru /etc/passwd.
Zatímco tradice Windows volá po jednom programu, který zvládne vše, tradice Unixu staví na spolupráci úzce zaměřených programů. Unix má mnoho nástrojů pro práci s textem: grep pro hledání, sort pro řazení, awk pro psaní textových adventur (ehm)…
Pěstování cibulí v Haskellu a jiné kratochvíle
Jistě ze školy znáte cibulovou teorii číselných oborů: slupka přirozených čísel \mathbb{N}, celých čísel \mathbb{Z}, racionálních čísel \mathbb{Q} a reálných čísel \mathbb{R} (imaginární kamarády matematiků pro dnešek vynechme). V tomto článku prozkoumáme, jak tlusté jsou jednotlivé slupky cibule, s pomocí tužky, papíru a „spustitelných vzorců“ v Haskellu. (Tento článek sponzoruje absence kurzu funkcionálního programování v bakaláři na FIT ČVUT.)

Jádro cibule, množina přirozených čísel \mathbb{N} = \{1, 2, 3, …\}, je nekonečná. Slovo „nekonečná“ znamená, že ať už si zvolíme libovolně velké číslo k, má množina více než k prvků. Spoléháme-li se při porovnání velikosti (mohutnosti) na to, že umíme určit počet prvků, nemůžeme dvě nekonečné množiny poctivě porovnat (shledáme, že jsou obě větší než každá konečná množina, ale nezjistíme nic o jejich vzájemném vztahu). Je potřeba obecnější způsob, který nechce počítat prvky a porovnávat čísla.
Takový způsob byl (vlastně logicky) vynalezen mnohem dříve než čísla. Stačí z obou hromádek odebírat vždy po jednom prvku: hromádka, ze které na konci něco zbyde, byla větší, v opačném případě byly stejně velké.
Programovací jazyky pro nepoznamenané
Možná na vás, jako na mého kamaráda Slanečka, přišlo divné hnutí mysli, kázající naučit se programovací jazyk. V takové chvíli máte několik možností: sáhnout po lesklé paperbackové knížce Pochopte chybové hlášky GCC kompilátoru za 21 dní, sledovat naučná videa na internetu nebo sáhnout po lahvi, jež vám nápad prvně vnukla.
Ať se rozhodnete jakkoli, není na škodu vědět, že existují rozkazovačné programovací jazyky a jak se v počítačích řeší míchání hrušek s jablky.
Chceme-li počítač k něčemu přimět, je otázkou, jak se k němu vlastně stavíme. Je to mrtvý kov, kterému je třeba polopaticky vše vysvětlovat (imperativní jazyky), anebo není tak docela hloupý? Je to geometr, logik či knihovník (neimperativní jazyky)? (Pro účely tohoto dělení vynecháme Brainf*ck, který je sice imperativní, ale předpokládá, že počítač je dadaista a programátor letadlo.)
letní semestr 2011/2012 po 2. týdnu
Každý předmět by si přál, aby jeho přednáška o historii vyšla na nějaké významné výročí. BI-PSI mělo první přednášku ve chvíli, kdy se přes ulici připomínalo 20. výročí připojení ČSFR do sítě Internet. Toto se těm, kdo letos podají přihlášku na FIT, zřejmě nepoštěstí.
Předmět se zkraje zabývá základními, ale zajímavými otázkami jako např. jak na bázi „konec drátu ↔ konec drátu“ vlastně síť funguje, jaký je rozdíl mezi hubem a switchem, jak pracuje NAT a podobně. Semestrální prací je naprogramování klient–server aplikace à la robot Karel pod TCP a UDP a konfigurace CISCO krabičky a PC s Linuxem (v laboratoři). Programovací úlohy lze vypracovat v C/C++/Javě, ale i v jiném jazyce. Naskočil mi Brainfuck a Haskell, jenže Haskell neumím a pro Brainfuck asi nejsou k dispozici BSD sockety :-)
Ohlédnutí se za zimním semestrem 2011/2012
První ze série předmětů, které rozkrývají asi nejzáhadnější software v počítači – překladač – program, který překládá jiné programy. Radostná zpráva pro každého robinsona v podobě teorie, která staví most mezi „vysokým“ programováním a „nízkým“ strojovým kódem, kterému rozumí procesor. Zpráva o tom, že konstrukce překladače je v principu možná a že je čeho se chytit.
Náplní předmětu ale není návrh překladačů, ale zorientování se v teorii formálních jazyků a gramatik dle Chomského, podrobné zvládnutí nejjednodušší třídy jazyků (regulární jazyky) a úvod do formálních překladů a třídy bezkontextových jazyků. Dozvíte se mimo jiné, jak převádět regulární výrazy na konečné automaty, čehož si dosyta užijete na papíře. V rámci domácího úkolu si vyzkoušíte práci s programem flex pro lexikální analýzu.
Jakkoli se v semestru zdá, že tu jde hlavně o mechanické ovládnutí různých postupů na papíře, ústní část zkoušky s právem veta zkoumá pochopení teorie a velká část studentů se na ni podívá vícekrát. BI-AAG přednáší docenti Holub a Janoušek, z nichž Holub má pověst krutopřísného zkoušejícího a Janoušek zase toho hodného. Pan Janoušek také učí návazné předměty a na FITu patří mezi skvělé učitele.
Jednoduchá kalkulačka v Pythonu
Na nevinně nazvané stránce ♥ Objímání a mazlení ♥ v síti Facebook objevil se v lednu 2012 záludný dotaz, čemu se rovná 9 + 0 + 9 + 0 + 9 × 0 + 9. Lidová tvořivost přisuzuje výsledku různé hodnoty od 0 do 36, holedbajíc se přitom matematickými pravdami jako: „Vždy, když se násobí nebo dělí nulou, je to nula.“
Tak především: dělit nulou nebudeme, dokud nenajdeme číslo č takové, že 0 × č = 1. Je zřejmé, že č = 0 nefunguje, 0 × 0 \neq 1, ale ani žádné jiné číslo neprojde – právě kvůli faktu, že „když se násobí nulou, výsledek je vždy nula“.

Povídka pro kamaráda
Slaneček mi už pár dní slibuje, že napíše povídku a pošle mi ji. Ve středu jsem dostal nápad na povídku vlastní: o Slanečkovi, jeho práci a múze. Dnes (v pátek) jsem ji vyhotovil a tímto ji posílám do světa. Chcete-li si ji přečíst, o něco lépe vysázená verze než ta níže je zde: Odpoledne pana Rybičky (PDF).
Usilovač nebo chtělník? Chtěnda!
Náš seriál o moderních směrech ve filologii se pomalu blíží ke svému desátému dílu. Je tedy možná namístě uvést delší studijní text, aby se čekání na jubilejní díl zkrátilo; pro tento účel uvedeme pojednání o vojenské technice. Druhým dnešním textem je příspěvek české sekce Čínského rozhlasu – ten je o poznání kratší, ale vynikající. Do třetice si ukážeme příklad neologismu, které jsou pro translatismus typické.
Chtěli by být předními translatisty, naučili se používat Google Překladač, ale nerozumí podstatě věci. Vytvářejí špatné překlady v domnění, že je to kdovíjaká věda, a vůbec je nenapadne, že translatismus se zabývá výhradně dobrými překlady, pouze se zobecněným kritériem kvality.
Chtěli by být úžasní – a zatím jsou to jenom chtěndové. (Slovo vynalezl Martin Malý; srovnej slangové wannabe, weeaboo.)