neděle 20. ledna 2013

Zeman vs. Schwarzenberg: žádná sláva

Tak se nám blíží druhé kolo prezidentské volby. Zbyli nám jen dva kandidáti. Navzdory tomu, jak se prezentují, mezi nimi nevidím příliš rozdílů. Ani jednoho na hradě nechci. Ale přece jen vybírám, jeden z nich tam, bohužel, bude.

Kauzy

Zeman je spojen s mnoha kauzami. O tom se mluví tak, že je zde snad ani nemusím zmiňovat. Mnohem méně se mluví o tom, že čistý není ani Schwarzenberg. Ten například hlasoval pro podporu fotovoltaiky. (Omlouvám se za Google cache, na senat.cz to dnes nefunguje.) Údajně hlasoval pro povinná biopaliva. (Nedaří se mi dohledat.) Doporučil schválit ACTA. A hlasoval pro ESM. Přesto má podle mnohých pověst čestného politika.

Čistě nevypadá ani jeden. I tak se je můžeme pokusit srovnat:

  • Ke Schwarzenbergovi najdeme asi méně kauz.
  • Není ale až tak důležitý počet, ale závažnost. V souvislosti se Zemanem jsem slyšel především o kauzách, kde se ztratil jednorázově nějaký milión, desítka milionů, možná miliarda. Máte-li jiné informace, uvítám. Zvlášť protože sám nejsem úplně rozhodnut, koho volit.
  • Naproti tomu Schwarzenberg hlasoval pro smlouvu ESM a doporučil schválit smlouvu ACTA. Tuším, že tyto smlouvy by mohly (ACTA mohla, ESM může) páchat škodu řadu let po schválení.
  • Od Zemana vyčnívá kauza Slonková. Ale nevím, jestli s tím měl Zeman něco přímo společného.

Dohled médií

Jak jsem psal, média jsou zajímavá věc. Zemanovy kauzy (aniž bych chtěl tím zmenšovat jejich význam) jsou propírány, zatímco podle dojmu z médií by Schwarzenberg měl být snad co nejdříve svatořečen. Nevím, čím to je, ale dobrý dojem z toho nemám.

Bankovní rada ČNB

Prezident jmenuje bankovní radu České národní banky. Stávajícím členům funkce mají končit v letech 2014, 2016, 2017 a 2018 (opravil jsem to podle ProInvestory.cz). Tady by se kandidáti lišili:

  • Zeman by zvažoval mj. Švejnara.
  • U Schwarzenberga jsem nic konkrétnějšího nenašel. V roce 2016 ale bude dost možná TOP09 mimo vládu a Kalousek by mohl mít zájem. Je to ale jen spekulace.

Ani z jednoho nejsem nadšený.

Zdroj: debata na iHned.

Euro

Oba by chtěli euro nejdříve v roce 2017, pokud se nepletu. Ani jeden mě tím nenadchnul, rozdíly zde moc nejsou. Zeman má u mě menší mínus za mlžení okolo Sorose. Ve skutečnosti by podobná situace mohla nastat i mezi dolarem a eurem, nezávisle na „velikosti“ měny.

Levice vs. pravice?

Zeman se otevřeně hlásí k levici, která se nebojí vyšších daní ani regulací. Karel Schwarzenberg se hlásí k pravici. Takže snižuje daně a dereguluje? Hmm, asi ne.

Tady taky není moc rozdílů. Nejde o souboj pravice vs. levice. A i kdyby byl, není to podle mého názoru u prezidenta až tak podstatné.

ESM

Už jsem o tom psal, zmiňuji to znovu, protože to zde má i další význam. Evropský stabilizační mechanismus by pro Českou republiku mohl znamenat povinnost platit dluhy („půjčovat“) za státy, které se příliš zadlužily. Až po vstupu do eurozóny, ke kterému jsme ale zavázáni (nemáme na rozdíl od Velké Británie a Švédska výjimku, takže si o tom nemůžeme rozhodnout sami). Vstup do eurozóny podporují oba kandidáti a u mnohých států (hmm, Řecko) ani nevadilo nesplnění příslušných kritérií. Je to tedy sice závazek do budoucna, ale ČR zřejmě nemá v případě jeho přijetí možnost se mu vyhnout. Šlo by to leda vystoupením z EU, které by mohlo trvat podle Lisabonské smlouvy až dva roky, ale na to bych se nespoléhal.

ESM schválila Poslanecká sněmovna i Senát. Prezident Václav Klaus odmítl tuto smlouvu podepsat. Je tedy otázka, jak se k tomu postaví příští prezident.

Tady se postoje kandidátů liší. Karel Schwarzenberg hlasoval pro ESM. V Prezidentském duelu 2013 na ČT uvedl, že by si smlouvu důkladně přečetl a pak by nejspíš podepsal. Jeden ústavní právník by ho od toho neodradil. Kdyby byli proti všichni ústavní právníci, pak by se podle svých slov ještě jednou zamyslel.

Naproti tomu Zeman jasně uvedl své výhrady proti ESM. Sice neslíbil, že nepodepíše, ale byl zde mnohem přesvědčivější než Schwarzenberg.

Dopady na další volby

Schwarzenberg je předseda strany TOP09. Přestože se mnozí voliči za volbu této strany omlouvali, Schwarzenberg je stále populární. Je otázka, co by se stalo, kdyby se stal prezidentem a nekandidoval ve volbách do Poslanecké sněmovny. Mohl by nastat propad TOP09. Je otázka, k čemu by to vedlo – jestli k větší popularitě ČSSD (vlastně žádná velká změna), nebo k větší popularitě skutečně pravicových stran.

U Zemana nedokážu odhadnout. Pokud by se stal prezidentem, byl by více na očích a více na očích by mohla být jeho strana. Ale na druhou stranu, pokud by do Poslanecké sněmovny nekandidoval Zeman, výrazná ikona této strany, jakou šanci by měla SPOZ.

Slovník prezidenta

Zemanovi je vyčítán jeho slovník. Zajímavé je, že se prakticky vůbec nemluví o tom, že ani Schwarzenberg nemá problém někoho označit např. za magora. Nevím proč.

Na druhou stranu, je asi podstatné hlavně to, co prezident reálně udělá, než co (a jakými vyjadřovacími prostředky) říká.

Koho tedy volit?

Sám nevím. Zvažuji Zemana, ale ve hře jsou všechny tři možnosti. Snížit zisk TOP09 ve volbách do PS 2014 ale může být též zajímavé. Jisté je jen to, že k volbám půjdu. Není jisté, jestli k nim půjdu střízlivý. (Za střízliva se chci rozhodnout, ale ne vhazovat obálku s jedním z těchto dvou kandidátů.) Možná podpořím někoho třetího (via Dominik Stroukal), nevím.

čtvrtek 10. ledna 2013

Grahamův problém v Javě je ukecaný. A vadí to?

Grahamův problém má ukázat, jak je nějaký jazyk expresivní. V některých jazycích stačí dva nebo tři řádky, v Javě jsem napočítal aspoň devět řádků. Vadí to?

V Javě vypadá řešení zhruba takto, když chceme být struční:

public class Accumulator {
 private int value;
 public Accumulator(int value) {
  this.value = value;
 }
 public int add(int i) {
  return value += i;
 }
}

Prakticky totéž ve Scale by bylo stručnější:

class MutableAccumulator(private var value: Int){
 def apply(i: Int) = {
  value += i
  value
 }
}

Ačkoli dám přednost Scale, musím uznat, že i Javové řešení je dobře čitelné. A jak je to s psaním? Sice nešetřím každý úder do klávesnice, ale nemám rád, když s sebou psaní kódu nese zbytečně velkou režii, která odvádí pozornost. Není to trochu problém?

Síla Javy je ale jinde. K Javě existují dobrá IDE. Napsal jsem v principu jen něco přes dva řádky, abytek řešilo celkem intuitivní cestou IDE. V mém případě IntelliJ IDEA, ale podobnou službu udělá i Eclipse nebo NetBeans. Tady je video (bez zvuku):


Pokud je to špatně vidět, doporučuji přepnout na vyšší kvalitu videa.
Nejde-li video přehrát, je ke stažení jako OGV.

Schválně jsem nastavil malé rozměry okna. Dá se na to koukat i z 3" mobilu. Až na rozměry okna ale je to pro mě normální nastavení. Nic navíc tam nezaclání, většina okna slouží k psaní kódu.

Jak vidíte na videu:

  • Mám kód, který používá neexistující (neimplementovanou) třídu a neexistující metody. IDE mě na toto upozorní.
  • Nechám tu zatím neexistující třídu vytvořit. (Alt+Enter)
  • Přidám ručně private int n;
  • Nakouknu se do mainu a vidím, že nesedí konstruktor. Nechám si tedy vygenerovat konstruktor z fieldů třídy. (Shift+Insert)
  • Nakouknu se do mainu a vidím, že ještě chybí add. Nechám si tedy vytvořit metodu add (Alt+Enter), určím návratový typ a napíšu return n += i. Ostatní jen schválím
  • V mainu teď nic není červené. Můžu spustit.
  • Ještě jako bonus přidám getter a setter. (Možná se do akumulátoru nehodí, ale pro ukázku IDE...)
  • Hmm, pojmenovat ten field n nebylo moudré. Nevadí, můžu jej přejmenovat (Shift+F6). Přejmenují se i metody getN a setN na getValue a setValue. Může se přejmenovat i parametr konstruktoru. Tady jsem to zamítl.
  • Přidám i výpis hodnoty acc.getValue(). Napsal jsem ale jen acc.gV a IDE zbytek doplnilo.

Nabízí se tu otázky. Mohou kvality IDE nahradit všechny kvality jazyka? Nebo je to naopak a dobré IDE je tu jen od toho, aby pomohlo programátorovi strpět špatný jazyk?

Pravda tu bude asi někde uprostřed. Dobré IDE těžko vyřeší šílené konstrukce nějakého jazyka. Na druhou stranu, IDE se hodí i u příjemnějších jazyků. Typickým příkladem je přejmenování nějaké metody, které je potřeba řešit i všude, kde se ta metoda používá. IDE tuto změnu udělá napříč celým projektem.

Úplně ideální kombinaci jazyka a IDE jsem nenašel. Takovou podporu IDE, jakou má Java (toto video je jen stručný nástřel), jsem u jiného jazyka neviděl. Pokud si ale můžu vybírat jazyk, dám většinou přednost Scale. Podpora IDE se sice s Javou srovnávat nemůže, ale celkem to stačí. I díky tomu, že jde o příjemnější jazyk.

pátek 4. ledna 2013

Jaké je vlastně funkcionální programování? (debata k ĚĽŠČŘ)

Jiří Knesl napsal plugin ĚĽŠČŘ, Jakub Vrána mu jej zkritizoval a Jiří Knesl zareagoval na Jakubovu kritiku tím, že mu šlo hlavně o vyzkoušení funkcionálního programování. Jakub Vrána se ale podivuje, co je na tom tak elegantního. I já se tedy do diskuze zapojím, byť se zpožděním. Napřed ale trošku odbočím.

Způsoby vyhodnocování

Nechci tu mít moc teorie, tak jen ve stručnosti:

Striktní vyhodnocování

Toto určitě všichni znáte, protože to využívají snad všechny mainstreamové jazyky. Vyhodnotí se prostě vše (nepočítáme-li optimalizace jako &&), i pokud to nebude nikdy potřeba. To je právě důvod, proč v Javascriptu výraz [3, decodeURIComponent("aa=%gg"), 8, 9][3] nevrátí hodnotu 9, ale skončí výjimkou.

Vyhodnocování on-demand

Druhá možnost je provést vyhodnocování teprve ve chvíli, kdy je to potřeba. Sem patřì normální a líné vyhodnocování, rozdíly mezi nimi teď nejsou podstatné. Pokud se v Haskellu pokusíme vyhodnotit [3, 1 `div` 0, 8, 9] !! 3, dostaneme 9, ačkoli celočíselné dělení nulou končí v Haskellu výjimkou. Funguje to díky tomu, že výraz 1 `div` 0 není potřeba vyhodnocovat. Pokud by se vyhodnocoval, vznikla by v Haskellu výjimka kvůli dělení nulou.

Asi je zřejmé, proč v mainstreamových (aspoň trošku imperativních) jazycích na toto nenarazíte: jakmile byste začali ve výrazech používat side effects, nastala by pravá magie. Těžko by se ovlivňovalo pořadí vyhodnocování (nebo to, zda by se něco vůbec vyhodnotilo) a chování programu by se začalo nepředvídatelně měnit.

Funkcionální klasika: linked list

Ve funkcionálním programování je spojový seznam velmi oblíbený. Ne, že by nešlo používat např. klasické pole, ale klasický funkcionální spojový seznam je dobré znát. Seznam je buď prázdný (v Haskellu []), nebo se skládá z jednoho prvku a reference na zbytek seznamu (v Haskellu head:tail). Tak je seznam definován rekurzivně a lze některé suffixy seznamu použí ve více různých seznamech. Například budeme mít dva seznamy o sto prvcích, ale budou se lišit vždy jen v prvním prvku, takže do paměti uložíme jen 101 prvků. Na funkčnost to nebude mí vliv, protože tyto seznamy jsou immutable. U vyhodnocování on-demand je navíc možné mít nekonečné seznamy. Součet nekonečné řady tak sice nespočítáte (aspoň ne přesně, sum (takeWhile (<epsilon) someList), tedy součet členů menších než epsilon u klesající řady, fungovat bude), ale třeba seznam všech prvočísel, ze kterého se na konec ve skutečnosti vyhodnotí jen prvních n z nich, není problém.

Jak je to s funkcemi map a filter

A už se dostávám ke článku, na který jsem reagoval. Funkce map a filter (popř. další, jako třeba reduceLeft, reduceRight, take, drop, takeWhile, dropWhile...) skutečně nejsou vše, o čem je funkcionální programování. Programovat bez nich skutečně lze. Ale není to ono. Až tak se nedivím, že se Jakub Vrána pod článkem podivil, kde je ta elegance.

Jak jsou tyto funkce (map, reduce, ...) ve skutečnosti implementovány?

Teď budu trošku kritizovat. A to článek nejen Jiřího Knesla, ale i samotné funkcionální programování. Jde mi o to, že funkce typické pro funkcionální programování není až tak snadné napsat správně. Ukážeme si to na funkci map. Nejdřív si odbydeme vyhodnocování on-demand (které zkritizuju za chvilku). Tam není nutné řešit tail call optimization, protože díky způsobu vyhodnocování nenastane rekurze v té podobě, v jaké ji známe ze striktního vyhodnocování. Můžeme tedy namapovat první prvek a rekurzivně namapovat zbytek:

map f (x:xs) = (f x) : (map f xs)

Funkce tedy vezme funkci f a seznam (x:xs). Zápis (x:xs) ve skutečnosti znamená, že parametr je neprázdný seznam a ten je rozdělen na první prvek (x) a zbytek (xs). Zbývá dořešit prázdný seznam, ten se namapuje na prázdný seznam:

map f [] = []

Jenže takto to funguje dobře jen u vyhodnocování on-demand. U striktního vyhodnocování získáme s dlouhými seznamy mnoho rekurzí a potřebujeme velký stack. Nepomůže ani tail call optimization, protože poslední operace není rekurze, ale vytvoření seznamu (:). Takto tedy ne.

Pak se nám nabízí použít akumulátor, což přesně udělal Jiří Knesl. Určitou nevýhodou je, že seznam procházíme od začátku, ale přidáváme též na začátek. Výsledný seznam tedy dostaneme v opačném pořadí:

map f list = map0 f list []
map0 f [] acc = acc
map0 f (x:xs) acc = map0 f xs ((f x):acc) -- chyba, obracíme pořadí.

Můžeme na to zavolat i funkci reverse (tu jde naštěstí napsat snadno) a dostaneme dokonce i dobrou asymptotickou složitost (konstantní na stack, lineární na heap a na čas), ale je to velmi neelegantní. O paměťové lokalitě nemluvě.

Trošku po svém si s tím poradila Scala (funkcionální jazyk se striktním vyhodnocováním). Funkce map je u třídy List efektivní, elegantní, čitelná (byť se znalostí pokročilejších konstrukcí), ale bohužel ne funkcionální. Autoři byli pragmatici, ne fanatici.

Původně jsem sem chtěl zkopírovat i implementaci pro důkaz, že to je fakt imperativně. Třída List ale nechává implementaci metody map na traitu TraversableLike, který to implementuje obecněji. Vysvětlovat tu implementaci lidem, kteří jazyk Scala nepotkali, by ale bylo nad rámec tohoto článku.

Snadný paralelismus?

Funkcionální programování k paralelismu přímo vybízí. Například ve Scale stačí do funkcionálního kódu přidat na pár míst par a hned je paralelní. (No dobře, má to svá úskalí, ale o tom třeba jindy.) U striktního vyhodnocování to funguje celkem dobře, pokud se u funkcí jako je map vzdáme části elegance. Menší problém je formát seznamu, spojový seznam není příliš vhodný u mnoha krátkých výpočtů.

Horší situace je u vyhodnocování on-demand. Co všechno má být vyhodnoceno paralelně? Pokud se výpočet něčeho odloží na později, nemusí se to vykonávat paralelně. Pokud se má vyhodnotit vše, bude se to vyhodnocovat striktně. Mimochodem, na tento problém jsem narazil ve Scale u funkce mapValues, která se kupodivu nechovala striktně. Místo toho, aby výpočet proběhl celý paralelně, se podstatná část odložila na později a spočítala se až při výpisu. Samozřejmě sériově.

Tail call optimization

A ještě jedna věc, která se sice netýká výhradně funkcionálního programování, ale – protože se tam rekurze prostě používá často – stojí za zmínku. Navíc chci v tomto reagovat i na Jiřího Knesla. Myšlenka je, že pokud je nějaké volání funkce posledním příkazem, lze uvolnit místo na stacku již při volání. Typicky se toho využívá při rekurzi. Z koncové rekurze kompilátor může udělat (mírně zjednodušeno) skok na začátek funkce. Program s rekurzí se tak může přeložit úplně stejně, jako kdyby měl cyklus. Teorie je to pěkná, Jiří Knesl se na to i odvolává při obhajobě svého skriptu. Jak je to ale doopravdy?

Hledal jsem Tail call optimization v Javascriptových enginech (na kterých bdou záviset i optimalizace Livescriptu), ale moc jsem o tom nenašel, nejvýše plány. Možná jsem jen špatně hledal, ale spíš bych se na to nespoléhal.

Ona to vlastně ani není ekvivalentní úprava. Pokud čteme stack trace (např. z výjimky), dostáváme po optimalizaci jiné údaje. To nemusí vadit, pokud o tom víme. U Javy je ale snaha zpětným nekompatibilitám (třeba i teoretickým) bránit, takže se tato optimalizace sice zvažuje, ale volání metody musí být (podle jednoho návrhu) uvozeno speciální instrukcí. Nevím o tom, že by dnes něco takového bylo v nějaké production-ready JVM podporováno. Podporovat to může kompilátor (a kompilátor pro Scalu to skutečně podporuje), ale možnosti jsou omezené. Optimalizovat takto rekurzi známou v době překladu lze relativně snadno (stačí do parametrů přiřadit nové hodnoty a goto 0, jen je potřeba řešit, aby korektně fungovalo např. i prohození parametrů), ale jiné tail calls moc dobře nejdou, protože JVM nemá instrukce pro takto low-level práci se zásobníkem. A v případě Scaly doporučuji @tailrec, aby kompilátor nezradil. U Livescriptu by teoreticky mohlo být něco podobného, překladač má asi podobné možnosti.

Závěr

Ano, funkcionální programování nabízí řadu výhod – eleganci, použitelné vyhodnocování on-demand, snadný paralelismus a další. Nemůžte ale od toho chtít všechno současně. Mám sice rád líný čistě funkcionální Haskell, ale v praxi píšu spíš v ne úplně čistě funkcionální Scale.

Pure functional programming is like anarchism: everything is stateless. Although I believe that reducing the state is often useful, I am not sure if total elimination of state is a good idea.

úterý 4. prosince 2012

Třikrát jedenáct

Ačkoli se do řetězovek obvykle nezapojuju, výjimka potvrzuje pravidlo. Této se přezdívá Tříkrát jedenáct a obsahem je napsat:

  1. Jedenáct zajímavostí o sobě
  2. Odpovědět na jedenáct otázek od bloggera, který člověka nominoval
  3. Vymyslet dalších jedenáct otázek pro dalších jedenáct bloggerů

Mě do toho namočil Karel Kilián (@karelkilian), autor Týdnovin na blogu ZaRohem.cz, redaktor na SvětAndroida.cz a mnoho dalšího.

Troška historie

Pátral jsem, kdkud tato řetězovka pochází. Dostal jsem se k různým bloggerkám a k anglickým blogpostům, kde se tomu říká blogger tag. Po cestě se mírně upravila pravidla, nevadí. Dostal jsem se až k nějaké Lauře, která dostala nominace od dvou lidí, dál jsem už pátrat nechtěl.

Pár zajímavostí o mě

  1. Jmenuju se Vít Šesták, ale neříkejte mi „Víte“, ledaže byste mi vykali.
  2. Dlouhodobě mě zajímají IT, takže hádejte, co studuju. A při studiu i pracuju v oboru.
  3. Vedle IT mě zajímá také ekonomie, dopady různých daní a regulací. To je právě důvod, proč regulace nemám rád.
  4. Nepěstuju moc peníze doma ani na bankovním účtu. Běžný bankovní účet téměř nepoužívám kvůli zákonu o kapitálové přiměřenosti, který směruje banky k tomu, aby nakupovaly státní dluhopisy. Místo toho investuju na burze sám.
  5. Mám rád decentralizaci. A to v různých podobách: kromě relativně centralizovaného Twitteru mě tedy najdete i na decentralizovaných sítích (Friendica, Diaspora, StatusNet). Twitter sleduju přes RSS. Kontaktujete mě přes Jabber nebo SIP, ale ne přes ICQ, Skype nebo Facebook. České koruny sice používám (ono v ČR moc jiných možností není), ale moc nepřechovávám.
  6. Prý mám občas svérázný smysl pro humor. Ale nefunguje to na požádání.
  7. Z programovacích jazyků mám nejradši Scalu, ale programuju v ledasčem.
  8. Rád běhám. Obvykle kolem 10 km. Jednou jsem dal i dvacet, ale pak mě bolely ruce. Nohy kupodivu ne.
  9. Nekouřil jsem, nekouřím a nejspíš ani kouřit nebudu. Nemám k tomu důvod.
  10. Alkohol je ale něco úplně jiného :). Ale jen jednou za čas.
  11. Občas jsem líný, ale jindy jsem striktní a někdy dokonce i normální.

Otázky od Karla Kiliána

Jaký telefon s jakou verzí operačního systému používáš jako svůj hlavní?
Mám Sony Ericsson Xperia Mini Pro (SK17i) s Androidem 4.0.4. Jelly Beany mi zatím moc nechutnaly, byť se mohou důvody zdát malicherné. Hardwarová klávesnice je pro mě u telefonu nutná součást. (Hádejte, na čem právě píšu...) I proto se dívám tak trochu na BlackBerry. Ale dost váhám, jsem skeptický k BB OS 10.
Jaký seriál z těch, jež aktuálně běží (i v zahraničních) v televizi, máš nejraději?
Nesleduji televizi. Sleduji snad jen RSS, e-mail a burzu. A tam moc seriály nejsou.
Kdyby sis mohl/a vybrat jakékoli povolání, jaké by to bylo a proč?
Přemýšlím, co mě teď omezuje ve volbě povolání. Něco se najde, například moje schopnosti (jako grafik bych se zřejmě neuživil), ale věci, které mi nejdou, mě obvykle taky moc nebaví. Další věc je poptávka. Ale ani tady nejsem nějak zásadně limitován.

Takže vlastně spíš odpovím, co dělám nebo budu dělat: během studia programuju a obchoduju na burze. Víc mě ale zajímá to programování.

Co bys udělal/a s deseti miliony korun?
Asi tu není moc věcí, které lze koupit a které by mě učinily šťastnějším. Možná budu časem potřebovat vlastní byt, ale jinak moc nevím. Vlastní auto? Na co?

Nejspíš bych tedy peníze investoval. Ptáte se do čeho? Sám nevím. Poslední dobou neřeším, do čeho ty volné peníze investovat, ale kde vzít volné peníze. Možná částečně i do nějaké kampaně, kde bych propagoval myšlenky, které mi jsou blízké. Ale možná je to naivní.

Ptáte se na pomoc chudým? V zásadě nejsem proti. Otázka ale je, jakou by měla mít podobu. Jedna možnost je přímá (jednorázová) pomoc chudým, druhá možnost je investice.

Pokud bys musel/a emigrovat, do které země by to bylo?
Ideálně emigrovat nebudu. Kdybych už musel, nechtěl bych jet moc daleko, takže asi Švýcarsko. Nejspíš je to jedna z nejbližších zemí (po Lichtenštejnsku, které ale se Švýcarskem sdílí například měnu a armádu), kde bych si emigrací skutečně pomohl.
Co Tě dokáže opravdu naštvat?
Máloco. Přemýšlím, kdy jsem byl naposledy opravdu naštvaný.
Existuje slušný a poctivý politik? Kdo to je?
Důležité je si prvně ujasnit, co si pod tím představíme. A i pak je otáka, jakou tomu dávat váhu. Umím si představit slušně vystupujícího politika, který se slušným vystupováním odhlasuje nějakou příšernost. Je slušný? Možná ano. Ale pak bych slušnosti v politice nedával až takovou váhu.

A poctivost? Asi se shodneme, že politik, který přijme nějaký úplatek, není poctivý. A dál? Počítají se například úplatky voličům v podobě výměny hlasu za to, že jedněm něco sebere a druhým něco dá?

Někdo by mohl říct, že člověk poctivý, když jedná podle svědomí. To bych asi věřil třeba paní Fischerové, ale potom má určitě jiné svědomí než já. A co lidé bez svědomí? Ti jsou poctiví automaticky?

Aby nedošlo k mýlce, nechci se vysmívat slušnosti ani poctivosti. Když bych vybíral zaměstnance, asi bych nechtěl nikoho nepoctivého. Ale co by byl platný poctivý zaměstnanec, který by tomu nerozuměl? A slušnost je IMHO zvlášť v politice přeceňována, i když samozřejmě budu rád za slušného člověka.

V zastupitelstvu městské části je pár lidí, se kterými se znám osobně a kterým věřím. (A opravdu jsem od nich nedostal zakázku. Ani jednu.) Najdou se určitě i další slušní a poctiví politici, ale málokdo se dostane někam vysoko -- do parlamentu přes d'Hondta nebo do senátu přes většinový systém. Možná pan Kubera patří mezi světlé výjimky, ale třeba mi to někdo vyvrátí.

Hledáš někdy své jméno na Internetu?
Párkrát jsem hledal, ale nedělám to moc často. Ale dopadl jsem celkem dobře, třeba kamarád měl jako první výsledek jeden náš neúspěšný projekt.
Pokud máš Twitter, sleduješ nějakým způsobem, kdo Tě přestal followovat?
Občas se podívám, kdo mě followuje, ale těžko z hlavy zjistím, kdo zmizel.
V jakém textovém editoru odpovídáš na tyto otázky?
V ColorNote (editor pro Android), závěrečné úpravy v Geany (takový editor na všechno, když nepotřebuju IDE).
Jak často uklízíš svůj pokoj/byt/dům?
Nepravidelně. Dobrou inspiraci vidím v generačním garbage collectoru :)

Moje otázky

  1. Vyslechneš/přečteš si radši názor od člověka s podobnými názory, nebo s odlišnými názory?
  2. Jak se stavíš ke kouření?
  3. Je potřeba chránit děti před svými rodiči (např. před špatnou výchovou), nebo to napáchá více škody než užitku?
  4. Jaký máš vztah k autoritám?
  5. Budeš při nejbližších prezidentských volbách volit?
  6. Na čem sis poprvé přečetl(a) tyto otázky? (Na mobilu, tabletu, počítači, papíru, e-papíru, ...)
  7. Které sociální sítě používáš? Kterým se vyloženě bráníš?
  8. Čteš si i na místech pro čtení ne zrovsna určených, např. na záchodě?
  9. Kupuješ software? A hudbu?
  10. Plánuješ si čas (aspoň vstávání, oběd apod.), nebo necháš vše plynout a nějak to dopadne?
  11. Co je pro Tebe úpěch? (Co u sebe považuješ za úspěch?)

A nominováno jsou..

Přemýšlel jsem, jestli mám nominovat spíš ty, které znám, nebo ty, které neznám. Nakonec jsem to zkombinoval:

  1. @GarretRaziel (také na Diaspoře)
  2. @HonzaBenisek
  3. @HUdasp (blog)
  4. @IAmAwesome24_7 (blog)
  5. @kaja47 (blog, Funkcionálně.cz)
  6. @LukasSparrow
  7. @mnumerato (blog, HumanAction.cz)
  8. @OzzyCzech (blog)
  9. @roxetak
  10. @xxxxmarek
  11. @ZbyCZ

středa 21. listopadu 2012

Komunismus vs. demokracie. Nebo komunismus+demokracie?

Pan Okamura označil komunismus za asi nejdemokratičtější systém, který svět poznal. Jak se vlastně k sobě má komunismus a demokracie? Jsou to dva neslučitelné systémy, nebo mají mnoho společného?

Jistěže komunismus je velmi demokratický. Když půjdeme do extrému, demokraticky se rozhodne, kdo dostane jakou práci a kdo musí pracovat kolik hodin. Demokraticky se rozhodne, kdo z toho bude co mít. Demokraticky určíme, kdo bude mít jakou pracovní dobu. Když se půjde do hospody, demokraticky se odhlasuje, že bude platit „tamten pán u okna”. (Pokud teda rovnou nezrušíme peníze.)

Komunismus má s demokracií mnohé společné. Ale já asi nejsem moc demokrat. Nechci dělat referendum o barvě sousedových bot. Brzy by mohlo dojít i na moje boty.

Druhá věc je, že ve chvíli, kdy se moc příliš koncentruje, což je i případ silných demokratických států (moc se soustředí přinejmenším v procesu voleb), nastane velká motivace tuto moc získat jen pro sebe. Ať už jde o lehký tuning hlasovacích zařízení, zavedení D'Hondtovy metody nebo kompletní zfalšování voleb. Z části jde navíc o přirozený jev, kdy se rozhoduje o mnoha věcech současně, ale volič má jen velmi malý hlas, takže se mu příliš nevyplatí investovat čas do správného výběru. Dopad správného rozhodnutí na něj bude malý, dopad špatného rozhodnutí též. (Mimochodem, doporučuji Schiffův komentář k prezidentským volbám v USA.) Aniž bych choval odpor k bohatým lidem, právě ti dostávají moc (pokud chtějí) v demokracii. A to zvláště v silném státě, kde je moci hodně na jednom místě.

To nás přivádí k důvodu, proč se období Československa od 1948 do 1989 často nazývá nedemokratické. Ono vycházelo z demokratických principů voleb. Ale moc státu byla tak velká, že se vyplatilo investovat různé prostředky do jejího získání. Ať už šlo o ovládnutí médií pro vytvoření „vůle lidu”, nebo nátlak u voleb.

Podstatné ale je, základním nedostatkem komunismu není absence demokracie. Tím je nerespektování svobody.

pondělí 8. října 2012

Proč je zboží na černém trhu častěji nekvalitní?

Setkáváme se s tím, že zboží z černého trhu je pochybné kvality. Drogy jsou ředěné, alkohol vyroben z denaturovaného lihu. Aspoň se to říká, lvastní výzkum jsem neprováděl. Ale věřme tomu. (A Silk Road nechme na chvilku stranou.) Proč tomu tak je? Je za tím nedostatek regulací či státní kontroly, nebo naopak za to mohou samotné regulace?

Ano, oficiální trh je regulován a státem kontrolován. Máme na to různé úřady, například SZPI. Nabízí se tedy myšlenka, že státní kontrola má na kvalitu blahodárný účinek. Že zákazník je člověk neuvěřitelně hloupý a nechtěl by při absenci SZPI (a dalších úřadů) nezávislý certifikát kvality. (Ten mimochodem platíme už teď z daní. Ale nemůžeme si moc vybírat, úřady mají prakticky monopol. A hlavně privilegium.) Nebo že zákazník kvalitu neřeší a koupí jen to nejlevnější. (Kdy jste si naposledy kupovali potraviny značky Euroshopper?)

Černý trh = volný trh?

Na první pohled se opravdu může zdát, že černý trh nezná regulace a je na nich nezávislý. To je ale chyba. Na černý trh mají regulace přímo zásadní vliv. Bez nich by tento velmi specifický trh (jak si brzy ukážeme) ani nemohl existovat.

Určitý druh privilegií

Je určitě pravda, že se černý trh snaží působení regulací vyhnout. Umí to ale každý? Troufli byste si na to?

Zatímco na skutečně volném trhu by o tom, kdo může co vyrábět, prodávat a distribuovat rozhodovaly zejména schopnosti co možná nejlevněji vyrobit/dopravit/nakoupit co nejžádanější (a tedy i dostatečně kvalitní) výrobek, na černém trhu tyto schopnosti jsou více či méně upozaděny. Vyrábět, prodávat a distribuovat mohou ti, kteří si na to troufnou. Ti, kteří se nebojí kontrolních orgánů. Ti, kteří umí výrobu utajit. Mafiánské zázemí výhodou. To je ale teprve to menší privilegium.

Korupce kontrolních orgánů

Kontrolní orgány mají velkou moc. Pokud se jim člověk neumí vyhnout, mohou mu jeho podnikání zastavit nebo aspoň znepříjemnit. Koncentrace moci ale není obvykle nic dobrého. Lidé jsou úplatní a kontrolní orgán není až tak závislý na tom, jestli ho chce někdo (kromě vlády) financovat. A jaké morální zábrany mohou mít lidé, kteří se nebojí jiným říkat, co je pro ně dobré, a tento názor vynucovat silou?

Korupce typu „nechte nás být” by sama o sobě nevadila. Ta pouze snižuje účinnost restrikcí. Problém je zatím „jen” v tom, že bez této korupce je obtížné se na trh dostat. Jak ale upozornil Murray Rothbard, nabízí se zde i jiné možnosti. Kontrolní orgán má moc udělovat privilegia. Bude přehlížet jednoho výrobce, ale o to víc půjde po ostatních. A když se to dobře podá, lid mu za to ještě zatleská.

Nutnost utajení

Jaké značky marihuany znáte? Kterou byste mi doporučili, když ještě nemám zkušenost? Která značka je dostatečně kvalitní, ale ne zbytečně drahá? Dočtu se tuto informaci na diskusním fóru? Kde tuto značku marihuany nakoupím?

Jak je patrné, zákazník chce jisté informace. Zvlášť pokud chce kvalitu. Ale tytéž informace zajímají i policii, která by mohla začít konat. Takže informace buď jsou dobře dostupné a výrobce navštíví policie (a moc dlouho na trhu nezůstane), nebo jsou špatně dostupné. Obojí zákazníkovi škodí, pokud chce kvalitní zboží.

Dokonce může nastat snaha vystupovat pod cizí značkou. To se asi nebude týkat marihuany, která je postihována jako taková. Ale alkoholu ano. Vystupování pod cizí značkou je zavrženíhodné a jde o klamání zákazníka. Prostor je pro to vždy. Ale na černém trhu se to může stát nutností, protože vlastní značka by budila pozornost například finančního úřadu. Paradoxně tak cizí značka může představovat nižší riziko než vlastní či žádná značka. Na zavrženíhodnosti se tím nic nemění, ale na motivaci ano.

Absurdní způsoby výroby

Ve výrobě alkoholu se až tak nevyznám, ale něco je jasné: Vyrobit alkohol, přidat do toho sajrajty (aby se to nedalo pít) a následně z toho ty sajrajty jinými sajrajty dostávat ven (aby se to dalo pít) je dost neefektivní proces a na skutečně svobodném trhu by v konkurenci kvalitnějšího alkoholu s nižšími výrobními náklady těžko obstál. Přesto se to na černém trhu vyplatí. Nejspíš je přímá výroba alkoholu příliš dobře odhalitelná. Náročná asi není (to jen odhaduji), ale teoreticky i to by mohlo být vysvětlení, protože na černém trhu není odbornost při výrobě to nejdůležitější.

A nemusíme zůstávat jen u alkoholu. Jistě jste již někdy slyšeli o pokoutním domácím vaření pervitinu a možná i o nějakém výbuchu. Nechci hájit ohrožení okolí výbuchem. Ptám se ale: docházelo by k tomu, kdyby na výrobě pervitinu nebylo co skrývat a mohli jej vyrábět specialisté v továrnách?

Kdo z toho profituje a komu to škodí?

Ačkoli jde snad výhradně o regulace výrobců, právě ti na tom mohou profitovat. Ale jen někteří – zejména ti na černém trhu. Mají totiž dost redukovanou konkurenci. A i pokud existuje legální konkurence (třeba u alkoholu), stát ji háže klacky pod nohy. Díky tomu si mohou i za nezdaněný alkohol účtovat cenu jako za zdaněný. Nižší cena by byla podezřelá. Už v roce 2010 se to prý týkalo skoro poloviny trhu s alkoholem.

Ačkoli zákazník není regulován (nebo jen málo), právě on je jednoznačně těmito regulacemi poškozen, protože platí vyšší cenu za nižší kvalitu na málo konkurenčním trhu. Poškozeni jsou i případní legální výrobci. A také všichni, kdo chtěli uspokojovat přání zákazníků svými kvalitními výrobky, ale neměli odvahu či schopnost restrikcím či zákazu vzdorovat. Práci jim sebrali méně odborní, kteří by se na skutečně svobodném trhu v této oblasti neuchytili.

Silk Road: zázrak na černém trhu?

Možná mi někdo bude oponovat tržnicí Silk Road. Tam údajně lze nakoupit kvalitní nelegální zboží. (Nezkoušel jsem.) Ale právě Silk Roadu se povedlo (aspoň prozatím) překonat některé (ne všechny) zmíněné problémy. Například dostat se k fyzické identitě prodejce sice není snadné, ale přitom si prodejce buduje reputaci a má svůj nick (obdoba značky). Stále to není ideální, protože v případě podvodu nelze použít soud ani podobnou instituci, ale patrně i samotná reputace je pro prodejce velmi důležitá, když 98 % hodnocení je kladných. Regulační úřady zde zřejmě nefungují, ale nejspíš tu až tak nechybí.

Není jasné, jestli nenastane nějaké větší sledování pošty, ale zatím to asi vychází. Silk Road nevyřešil přímo restrikce, ale je možno vyrábět ve velmi odlehlých oblastech, kde jsou restrikce minimální (nebo není tak těžké je obcházet), soustředit se na kvalitní výrobu a distribuci nechat na prostředníkovi. Silk Road tak umožnil černý trh přiblížit podmínkám skutečně svobodného trhu, aspoň prozatím. A nese to své ovoce. Buďme rádi. Kéž by k takovéto transformaci došlo na větší části černého trhu. Alkohol k pití jsem na Silk Roadu zatím nenašel. Pokud se objeví, možná to bude brzy bezpečnější než nákup alkoholu v samoobsluze v ČR. Zvlášť pokud Heger prosadí další zvýšení spotřební daně z alkoholu.

Jsou výrobci/prodejci/distributoři na černém trhu špatní?

Je pravda, že černý trh zvýhodňuje mafii a podobné. Ale na druhou stranu bych neodsuzoval všechny. Věřím, že někteří se prostě jen umí skrýt a využívají situace, která nastala nezávisle na nich. Bez nich by to pro zákazníka bylo ještě horší – ještě méně konkurence, ještě menší výběr, ještě vyšší ceny apod. Neodsuzoval bych paušálně.

Pár slov závěr

Pokud se někdo bude tvářit, že ví, co lidi chtějí, lépe než oni sami, je na místě přemýšlet. Nejspíš jako řešení nabídne nějakou regulaci či další speciální daň. Odhlédnu-li od té odvahy rozhodovat za někoho proti jeho vůli (a bez jeho souhlasu), výsledný účinek může být jiný než slibovaný. Přemýšlejme v souvislostech – komu se to hodí, komu to uškodí, kdo a jak se přizpůsobí a co si kdo promítne do ceny. Pokud něco nesedí, nebojme se na to upozornit okolí. A podle mých zkušeností často něco nesedí.

čtvrtek 9. srpna 2012

Stát vs. rodina: Kdy komunismus ani socialismus nebude fungovat

Ačkoli si to možná nepřiznáváme, s komunismem se většina (i z nás mladších) setkala a dokonce i mnohdy fungoval. Bylo to v rodině. Proč může fungovat v rodině, ale fatálně selhává na úrovni státu? Čím se rodina od státu tak zásadně liší?

Kdy komunismus může fungovat?

Aby komunismus mohl fungovat, musejí být splněny určité podmínky:

  1. Členové musejí mít chuť a morální sílu myslet na druhé, pomáhat jim a nezneužívat svých možností. Pár poznámek k tomu:
    • Tuto podmínku nejde dobře splnit bez dobrovolnosti. Pokud jsem k něčemu druhými nucen, budu to provádět spíš tak, aby se neřeklo. Bez nadšení pro věc.
    • Také je těžké tuto podmínku splnit bez možnosti trestu v nějaké podobě.
    • Pro čisté příjemce může být trestem i odchod dárců. Možnost odchodu dárců je negativní motivace i pro příživníky z povolání a zároveň podmínka dlouhodobé dobrovolnosti. (Teoreticky by člověk mohl dát jednou pro vždy dobrovolný souhlas, ale pokud si to časem rozmyslí, nebude se jako dobrovolník chovat.)
  2. Musí být nějakým způsobem pokud možno všem co nejlépe zřejmé, co chtějí druzí, aby se tomu mohli přizpůsobit.

Možná tyto dvě podmínky jsou i postačující, můžete se k tomu vyjádřit v diskuzi. Každopádně se rodina od státu dost zásadně liší v tom, jak jsou tyto podmínky splněny.

Situace v rodině

Po založení rodiny

Rodina začíná dobrovolným svazkem muže a ženy. (Nebudu teď řešit, jestli je ten svazek stvrzen úřadem, církví, smlouvou či třeba kmenovým náčelníkem – to je tady nepodstatné.) Tento svazek vzniká dobrovolně. I přes určité možné komplikace může v některých případech zaniknout. (Za určitých podmínek se to týká i křesťanských svazků, jen tak na okraj.) Do tohoto svazku zřejmě obvykle dobrovolně vstupují jen lidé, kteří se už do jisté míry znají, mají se rádi apod. Splnit obě podmínky není v této chvíli problém. Aspoň většinou.

Malé děti

Po čase se přidávají děti. Ty zde do určitého věku představují v mnoha ohledech čisté příjemce. I když si samy nevybraly rodinu, do které se narodí, mají přinejmenším motivaci zůstat. Viděli jste už malé dítě, kterému maminka pohrozila, že ho tedy nechá být a odejde? Už takto malé dítě má do jisté míry ekonomický styl myšlení a vidí, že by ztratilo více, než by získalo. (V ekonomii nejde zdaleka jen o peníze.) Dítě sice v této chvíli nemá možná moc dobrou představu, po čem touží maminka a tatínek, ale stejně je zpočátku spíše příjemcem.

I rodiče v tom jsou značnou měrou dobrovolně. Dítě si nechali, ačkoli mohli udělat radost některému bezdětnému páru. Ano, dál je už té dobrovolnosti méně (nepočítáme-li krajní možnost – opustit dítě a ponechat jej svému osudu), ale mají pro případ zlobení k dispozici celou škálu trestů, kdyby nic jiného. To neznamená, že musí všechny využít. Někdy stačí pohrozit. I přesto ale bývá mezi rodiči a dětmi dobrý vztah. Lidé, kteří mají hrůzu z malých dětí, zřejmě využijí v dostatečné míře antikoncepci a děti mít nebudou.

Dospívající děti

Časem se situace pochopitelně mění a děti dospívají. Stávají se samostatnějšími. Na jednu stranu možná odpadávají z různých důvodů tradiční tresty, ale možnosti tu pořád jsou, pokud si nevydělává. Pokud si už vydělává víc než symbolicky, jsme ve stádiu, kdy může jít z domu, nebude-li soužití vítáno. Teď je celkem jedno, kdo se tak rozhodne – jestli rodiče, či děti. (Často k tomu ale nakonec nedochází kvůli špatným vztahům, ale třeba kvůli založení vlastní rodiny. To můžeme brát jako dobrý výsledek.)

Jen tak na okraj

Můžete namítnout, že i v rodině mohou fungovat například oddělené finance. Nic proti tomu. Splnění těch dvou podmínek neznamená, že komunistické principy budou nevyhnutelné. Pokud manželé chtějí, mohou si mezi sebou třeba účtovat úplně všechno. Pokud jim to bude tak vyhovovat, budu ten poslední, kdo jim v tom bude bránit. A pokud jim to nevyhovuje, proč by to dělali?

Situace ve státě nebo ve velké oblasti

Stát je celkem velké území. Jeho obyvatelé jsou relativně různorodí. (Klidně všichni mohou být třeba černoši, i pak budou nejspíš dostatečně různorodí v charakteru.) Každý zná sice své nejbližší okolí (ne nutně geograficky), ale ostatní většinou vůbec. Lidé mají různé názory a ne každý bude chtít komunismus. (Například já nechci komunismus na úrovni státu.) Nepůjde to tedy asi udělat moc dobrovolně, z čehož plynou další problémy. Zcela určitě se v takovém množství lidí navíc najde někdo nečestný, kdo situace bude zneužívat. Přinejmenším je tu lákavá možnost se stát free riderem.

Situace bez centrální autority

Pokud bychom uvažovali nad nějakou společností bez centrální autority, nejspíš by v komunistické formě dlouho nevydržela. Jak by přibývalo free riderů, ubývala by motivace. A protože by nebyla nějaká moc, která by společnost mohla při komunismu udržet, lidé by začínali komunismus postupně opouštět. Motivace udržet komunismus by se vytratila asi jako u tohoto příběhu o přerozdělování známek. Teď není podstatné, jestli ten příběh je pravý, nebo smyšlený. Tady bych ale věřil ve šťastný konec v podobě přechodu na tržní hospodářství.

Situace s centrální autoritou – centrální plánování

Druhá možnost je, že máme nějakou centrální autoritu, která provádí centrální plánování. To všechny problémy ještě zvětšuje. Centrální plánovač má velkou moc, ale často schází brzdné mechanismy. Zneužití moci, která mu byla přidělena, je často lákavé, a o moc se často zajímají především grázlové. Můžeme ostatně nahlédnout před rok 1989. Člověk se sice nedoslechl o korupci v novinách, ale spíš proto, že si to tam nikdo nedovolil napsat, když už se to dozvěděl.

I kdyby ale všichni lidé byli čestní, centrální plánování nebude fungovat dobře. Na rozdíl od trhu zde nejsou signály, které by říkaly, co si lidé přejí a co ne. Není tu informace (natož motivace) v podobně možného zisku či možné ztráty. Omyl na trhu je prostor pro konkurenci, která to udělá lépe, nebo pro spekulanty či překupníky, kteří pomohou s optimální cenou. Naproti tomu omyl v centrálním plánování nemá snadné řešení, zvlášť pokud si centrální plánovač není schopen svůj omyl připustit. Může mít ale velké následky. To, že si centrální autorita není ochotna připustit svůj omyl, nemusí nutně být projevem nečestnosti ani ješitnosti. To může ostatně být problém i ve velkých firmách jako třeba Nokia a pramenit to může i jen z nepochopení. V případě firem to ale řeší konkurence, v případě státu nikdo.

Závěr

Závěr z toho mi vychází celkem jasně: Až někdo bude říkat, že komunistické principy fungují v mnoha rodinách a tedy mohou fungovat i na úrovni státu, nenechte ze zmýlit. V rodinách sice můžeme mnohdy narazit přinejmenším na prvky blízké komunismu, ale situace v rodině se od státu zásadně liší.