Zobrazují se příspěvky se štítkemoperační systémy. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemoperační systémy. Zobrazit všechny příspěvky

středa, srpna 27, 2008

Na(t)ivka

Je to takhle: Přijít s něčím na trh jako první je príma, ale má to svoje nevýhody. Především musíte kvůli nestabilitě a nevyzrálosti technologie leckde leccos obětovat, taky musíte na vlastní náklady vychovat zákazníky, a nejspíš to napoprvé stejně netrefíte, takže si (nechtěně a v dobré vůli) naděláte do bot velkým množstvím dědičných hříchů, za které se pak budou budoucí generace smažit v pekle ještě dlouho po té, co se rozhodnete věnovat výhradně charitě.

Naproti tomu, pokud trochu počkáte, můžete místo babrání se s technologickou nedostatečností vzít všeobecně dostupné součástky a soustředit se na to, jak je poskládat dohromady tak, aby jste vypálili rybník všem pochybovačům, kteří tvrdí, že se na tak usazený trh jako je ten, na který míříte, nikdy nedostane.

Třeba tyhle webové aplikace. Existují úkony prováděné na počítači, které dávají smysl jen pokud máte k dispozici Internet. Třeba sledování RSS, nebo IM, nebo e-mail. A pokud provádíte tyhle úkony na různých místech, říkáte si: jaká je to škoda, že zrovna ta data která potřebuji se válí v počítači na druhém konci světa. Kdybych je tak mohl mít po ruce! A někoho hned napadne: ohó, tuhle máte, milý pane, aplikaci která běží v prohlížeči. A ten máte všude k dispozici. A ta data, ta budeme uchovávat u nás na serveru, co vy na to? A vy na to koukáte, a říkáte si: Hmmm, to je ale zajímavý nápad. Škoda jen, že to provedení stojí za hovno.

A to je největší problém aplikací provozovaných v prohlížeči: prostě stojí za hovno. Proč v prohlížeči nevidíme nic moc zajímavějšího než tisíc variací na přesouvání krátkých kousků textu z místa na místo? Protože s prohlížečem se nic lepšího dělat nedá. Prostředky které máte k dispozici v prohlížeči vracejí váš nablýskaný počítač na úroveň ZX Spectra. Máte velký disk? Je vám k ničemu. Máte 3D akceleraci v grafické kartě? K ničemu. Vícejaderný procesor? K ničemu. Periferie? K ničemu.

Myslím, že nejsem osamocen s názorem, že uživatelské rozhraní by se mělo přizpůsobovat aplikaci, ne aplikace uživatelskému rozhraní. Ale jak chcete v prohlížeči udělat zajímavé uživatelské rozhraní? Jediné co máte k dispozici jsou tyhle Flashe a AIRy a Sliverlighty, ale ty jsou kvůli nutnosti fungovat na nejmenším společném jmenovateli všech podporovaných platforem pořád ohromě omezené co se týče využití dostupného hardware. Třeba: Jak z Flashové aplikace vypálíte DVD?

A teď si říkáte: Cože? Jak to spolu souvisí?

Chci říct: pokud chcete dělat s libovolným druhem počítače (i kdyby byl převlečený za mobilní telefon) cokoliv smysluplného, potřebujete nativní aplikace. Nicméně pokud chcete dělat něco smysluplného, co využije všech výhod Internetu, nemůžou to být jen tak ledajaké aplikace. Musí to být takové aplikace které a) umí pracovat s daty, která jsou uložena někde na serveru, případně se k nim dá přes takový server přistupovat, b) přístup k nim máte všude.

K bodu a): Je to přeci zřejmé: když aplikace v prohlížeči stojí za hovno, ale služby které jsou přes ně poskytovány jsou docela príma, není nic snazšího než napsat nativní aplikaci, která takové služby bude využívat. Jistě, je tu ten problém se synchronizací, což je právě jedna z těch technologických nevyzrálostí, které se vyřeší samy, ať už skrze Microsoft Mesh, nebo Apple MobileMe, nebo nějaký OSS klon který vznikne, nebo už vznikl, jen o něm ještě nikdo neví, protože velké korporace se do těchhle technologií ještě pořádně neopřely. Kromě toho, že nativní aplikace jsou lepší k použití, umožňují řešit i takové ty obvyklé neduhy jako je zálohování nebo šifrování. (Proč by vaše soubory s čísly kreditních karet měly ležet na serveru v otevřené podobě? Aby si je Google mohl zaindexovat?) Čili až někdo bude říkat, že si Ozzie Meshem řeší nějaký svůj synchronizační komplex z dětství, tak jistě bude mít pravdu, ale pamatujte, že jednou se taková možnost synchronizovat soubory bude hodit, jakkoliv je nudná.

K bodu b): Víte co je nejzajímavější na iPhone? Že ho mohl udělat úplně každý. Všechna potřebná technologie je tu kolik -- deset let? Problém je v tom, že všichni zúčastnění byli příliš zabráni do toho řešit nějaké svoje problémy se zpětnou kompatibilitou, nebo hlídáním, aby náhodou periferie jiných výrobců nebyly zaměnitelné s jejich vlastními, nebo aby nějaká firma s obratem tisíc kusů ročně nepřišla zkrátka, protože by si mohla vybrat konkurenční platformu, že úplně zapomněli na to, že by měli taky občas inovovat. A pak Apple oznámil iPhone a my chytráci jsme chytračili, jak nikdy nedosáhnou té penetrace které chtějí protože bla, bla, bla. A vida: O dvě verze iPhone později jsou všichni podělaní strachy, a narychlo kopírují jak se dá, ale stejně budou vždycky o krok pozadu, protože Apple to má promyšlené dopředu, a i ty věci, které teď kopírovačům nedávají smysl ho jistě budou dávat za dva tři roky.

Poučný je ovšem iPhone ovšem i jinak: ukázalo se, že vývojáři jsou ochotni pustit se vývoje pro novou platformu. Proč? Jednak na takové platformě není žádná fragmentace. Dívali jste se někdy co námahy to stojí vyvíjet pro mobilní Javu? (Vůbec nemluvme o Symbianu, to je úplně jiná kategorie.) A co Windows Mobile? Tam se to mírně zlepšilo s příchodem .NET Compact Frameworku, ale pokud chcete dělat něco lepšího než generický demoware, stejně musíte používat tuny volání do platformy, čímž jaksi .NET ztrácí kouzlo. A každé z mobilních zařízení, ať už je to jakákoliv platforma, je dneska rozdělené na stovky podskupin s různou výbavou, různými rozlišeními displeje a tak dále. Nemluvě o tom, že nevíte jaké bude mít zařízení možnosti připojení k Internetu. iPhone je jen jeden (tedy dva, a časem se to bude zhoršovat, ale určitě to nebude takový maras jako jinde). U iPhone víte, že máte Internet, protože bez něj se neprodává. iPhone má moderní systém s moderním API, kde nemusíte řešit pitomé clean-up stacky ani se snižovat k C. A především iPhone má AppStore.

Proč to tu všechno říkám: protože za ty roky co máme PC se nějak vžila představa, že nativní aplikace znamená nechutnou bednu s monitorem, nebo laptop co nic nevydrží. Jenže doba dozrává k tomu, že celý počítač budeme mít v kapse, nejlépe sloučený s telefonem, data na něm, nicméně s možností je libovolně přenášet a distribuovat mobilním Internetem.

Jasně, tohle už tu bylo. Proč se to zatím nechytlo? Protože výrobcům zatím chyběla infrastruktura. Ale tu Apple má: stále rostoucí základna Maců, které Apple drží v ruce stejně jako iPhone, dává možnosti, které ti před Apple neměli.

Příklad: Co byste řekli tomu, kdybyste si na iPhone nainstalovali třeba textový editor. Když máte iPhone v ruce, máte k editoru UI vhodné pro iPhone. Pak ale iPhone zadokujete, připojíte k Macu, ten spustí virtuální stroj který emuluje ten procesor co má iPhone v sobě, sesynchronizuje soubory a vám naskočí krásné UI zcela konzistentní s tím, jak vypadají všechny ostatní aplikace ve vašem Macíkovi (a samozřejmě využívající všech těch 3D serepetiček co v sobě dneska mají grafické karty). A nejste limitovaní jen na váš Mac. Může to být Mac kohokoliv jiného. Úložiště je iPhone (nebo nějaký server se kterým se synchronizuje), aplikace běží ve virtuálním stroji, čili je to zcela bezpečné, a po vás na hostujícím počítači nezůstanou jiné stopy než poprskaný displej a umaštěná klávesnice.

Jsem si skoro jistý, že na něčem takovém už Apple pracuje (stejně jako Microsoft, kde jsou tisíce lidí řádově chytřejších než já, takže je něco takového už určitě napadlo). Aplikace, které na takovém systému poběží, budou tak nativní jak jen to bude možné, přitom budou stále on-line, stále k dispozici, ať už máte po ruce velký desktop nebo ne.

I když: možná jsem naivní, a lidé budou dalších tisíc let používat programy běžící v internetových prohlížečích, které se za tu dobu třeba naučí pořádně spolupracovat s clipboardem...

pondělí, března 31, 2008

!cool

Budete se mně smát: Konečně jsem svůj domácí počítač, značně vysokého stáří a nízkého výkonu, dovybavil pamětí tak, aby jí měl jeden gigabajt. Rozumějte: ne že bych necítil jistý morální závazek pořídit celý nový počítač, včetně těch nechvalně proslulých Windows Vista, ale nějak nemůžu přijít na něco, co by takovou nemalou investici ospravedlnilo.

Známe to všichni: ještě tak před třemi čtyřmi lety měla výměna PC za novější smysl. Nový počítač znamenal více PCI slotů, nové AGP, řádově více paměti, podstatně rychlejší ATA rozhraní, vestavěnou síťovku, vestavěnou zvukovku, vestavěnou podporu pro čtečky paměťových karet (i když bez takové té součástky, co se do ní karty strkají), prudký nárůst počtu USB portů, a ostatně i možnost pořídit procesor taktovaný na nějakém tom gigahertzu.

Co vám přinese nové PC dneska? Myslím něco co nemáte v tom tři roky starém, které máte teď.

(Jen nebuďte líní a přemýšlejte.)

Hm. Takže PCIe (abyste mohli vyházet staré karty a koupit nové, které dělají to samé, jen je levnější je vyrobit, protože mají méně kontaktů), skoro stejný počet gigahertzů (protože dneska frčí tyhlety vícejaderné procesory, které software bude umět využít tak za pět let), jen násobek množství paměti, novou verzi zvukovky, o něco rychlejší USB, o něco rychlejší SATA (ale stejně pořád čekáte na pomalý disk), nějaké to WiFi (možná), čtečku karet včetně takové té věci co se do ní karty strkají.

Však víte co chci říct: jelikož kritickou hmotu výkonu, která by většině lidí stačila až do smrti, jsme překonali někdy kolem roku 2003, a protože lidé z nějakého důvodu chtějí místo stále vypasenějších aplikací do PC, stále dementnější aplikace někde v prohlížeči (nevím jak jinak nazvat aplikace, které v roce 2007 neumí pořádně pracovat s clipboardem a drag&drop), vlastně neexistuje důvod proč kupovat nový počítač.

Zkrátka: jsme sytí.

Jistě je tu paralela s tím, jak lidé přijímají Visty -- co tak úžasného s nimi budu moci dělat, co nemůžu dělat teď s XP? Stojí ta investice do učení se nového systému za to? Z pohledu uživatele nejspíše ne (pokud jde o programování je situace trochu jiná, ale protože programovat pro Windows má dneska smysl snad jedině v .NET, je volba systému irelevantní).

Na téhle vlně technologické znuděnosti se dneska veze Apple, která lidem nabízí něco nového a možná pro leckoho i lepšího než co má PC plus Windows. Navíc Apple se nesoustředí na parametry, ale na coolness factor, tedy přesně na to, na co se soustředit má v situaci, kdy už parametry nikoho nezajímají. Třeba MacBook Air. Jistě, parametrově lepší počítač seženete s Windows za polovinu peněz, ale přiznejme si to: bude stejně cool jako Air, který si Guy Kawasaki provokativně přinese jako podložku na psaní k rozhovoru s Ballmerem?

Když před pár lety bylo moderní psát, že z PC je spotřebka, nebyla to pravda. Před pár lety lidé ještě hleděli na výkon a takové ty věci. Dneska už to pravda je, protože všichni tiše předpokládají, že počítač bude dělat to co od něj chtějí. Dneska už to pravda je, protože nikoho už ani nenapadne psát něco tak zřejmého. A dneska už to pravda je, protože lidem je fuk jakou mají platformu -- OS X nebo Windows -- pokud mají pocit, že to z nich v očích ostatních udělá lidi z lepší společnosti. Sociálové jezdí ve Fábii, frajeři mají Audi (nebo co). Lhostejno, že na rozbitých okreskách dojedou obě auta do cíle za stejný čas (jen u toho víc cool to bude stát více peněz). Parametry jsou na nic, následuj image. Nebo něco v tom smyslu.

Problém který s tímhle přístupem mám já osobně, je ten, že v době, kdy se mí spolužáci věnovali zakládání firem, aby si mohli koupit něco cool (ti méně důvtipní věřili, že na firmy nabalí holky), jsem si já ostentativně hrál na intelektuála, a díky tomuto pohnutému životnímu období jsem si uvědomil, že nejsem krámy, kterými se obklopuji. Ale ano, jistě, rád si kupuji hračky, ale proto, že si s nimi chci hrát, ne proto, že bych je chtěl ukazovat na veřejnosti. Kdybych měl potřebu takto exhibovat, stáhnu si na tramvajové zastávce kalhoty.

A tak si říkám: co budu dělat s novým počítačem, co nemůžu dělat s tím, co mám teď? Hrát na něm hry? Má nejoblíbenější hra jsou GridWars, a ty běží skvěle. Lépe programovat? Uh, uh. Psát méně pitomé příspěvky do svého internetového deníčku (jistě, nějakou potřebu exhibovat mám). Krásněji browsit Internet?

A tak jsem došel k závěru, že mé potřeby co se týče domácího počítače ukojí dalšího půl giga RAM, a dalšího půl terra pevného disku. A nový počítač si pořídím snad jedině že by ten starý přestal fungovat.

sobota, ledna 12, 2008

Wow!

Vida. Myslel jsem si, jak si pěkně budu hovět v laskavé náruči .NET, a místo toho jsem spadl přímo do Win32. Však víte: to je ten svět, kde ty důležité věci jsou psány velkými písmeny, každá funkce má alespoň jednu Ex (a možná i ExEx) verzi a základem je pamatovat si, že když něco chcete, musíte pěkně poprosit funkcí SendMessage.

Popravdě musím říct, že až teď jsem si uvědomil, jak jsou Windows obrovské, co všechno v nich je a jak je zatraceně těžké v nich programovat.

Win32 API je vlastně úžasný artefakt závratné historické hodnoty, který umožňuje sledovat jak se osobní počítače vyvíjely posledních dvacet let. V dobách, kdy výkonné počítače měly 2MB paměti a jejich procesor běžel s taktem 20MHz, jistě bylo rozumné snažit se nacpat co nejvíce informací do co nejméně bytů paměti, a co nejvíce věcí řešit co nejmenším množstvím kódu. V té samé době, když ještě neexistovalo C++ (současná podoba byla standardizována až v roce 1998), bylo zcela určitě novátorským přístupem implementovat ten jediný prvek uživatelského rozhraní kterým Windows disponují (ano, správně, je to okno, hned ten název -- Windows -- dává takový pěkný dvojsmysl, že?) tak, že umožňuje tzv. subclassing, tedy možnost podstrčit systému ke správě takového okna správně napsanou funkci, ve které můžete z pitomého obdélníku udělat cokoliv, od tlačítka, přes textové pole až po... no, třeba ribbon, kdybyste o to stáli. A ačkoliv si to nebudete myslet, i ty registry, nad kterými každý ohrnuje nos, jsou poměrně slušně navržené (horší je to samozřejmě s implementací -- skoro bych se vsadil, že registry vymyslel ten tým, co dělal Windows NT, a pro Windows 95, blahé paměti, vyšla jejich nedomrlá verze, která brala ohled na to, že uživatelé nechtějí věnovat 70% výkonu svého počítače robustnímu úložišti konfigurace).

Bizarní na tom je, že tenhle místy prazvláštní slepenec funkcí (z nichž některé spojují podobné vstupní parametry a podobné výstupní hodnoty) pohání všechny Windows (tedy od verze 3.1, nebo kolik), včetně těch úplně posledních.

Znamená to dvě věci. Za prvé: skoro všechno co napíšete ve Win32 pro jedny Windows, poběží i na všech ostatních. A za druhé: Microsoft ve Windows nemůže nic změnit.

Myslím to takhle: Když píšete program, a rozhodnete se, že mezi dvěma verzemi něco změníte nebo opravíte, čímž se chování vašeho programu v 1% případů mírně změní, je to pro vaše uživatele jistě nepříjemné, ale, zatraceně, je to jedno mizerné procento a opravili jste chybu, kdo by si s tím lámal hlavu? Ovšem pokud jste Microsoft, a jedno procento uživatelů je, řekněme, 10 miliónů lidí, pak už takhle uvažovat nemůžete. Říkáte si: K čertu, náklady na opravu všeho softwaru, který je na téhle chybě závislý se zhruba vyrovnají nákladům na stavbu jedné či dvou letadlových lodí, nebo na stavbu základny na Měsíci, nebo tak něco. A nikdo nezaručí, že software, na kterém je třeba to jedno procento lidí existenčně závislých, někdo opraví. Co pak budete dělat s těmi 10 miliony telefonátů na servisní linku?

Podívejte se na Visty: Microsoft se v nich pokusil opravit hodně chyb, které mu byly dlouho vyčítány. Od přístupu co není zakázáno, je povoleno (tedy: uživatelé přeci nejsou banda tupých hovad), přešel k co není povoleno je zakázáno (tedy: dobře, když se chováte jako banda tupých hovad, ztížíme vám provádění těch největších pitomostí), protože léta uživatelé fňukali nad mizernou bezpečností Windows a tak dále. Odměnou mu za to je nepřetržitý proud neinformovaného plácání o tom, jak Visty jsou jen nové UI (jistě, navíc zkopírované z počítačů Apple), jak najednou nefunguje spousta software a hardware, kolik Visty čeho žerou a čím vším pořád točí a že Windows XP jsou stejně lepší, a kdo ví co ještě.

Dobrá, při uvedení Windows XP také všichni blekotali o tom, že v nich není nic nového než kulatá okna a tak dále a tak podobně, a stejně jako při přechodu z Windows 2000 na Windows XP tahle nesnesitelná litanie nejpozději koncem tohoto roku ustane.

Je tu ale přeci rozdíl: změna mezi Vistami a XP je opravdu podstatná, a ovlivní poměrně mnoho uživatelů (třeba celá ta věc s UAC -- v okamžiku, kdy na XP máte hotovou aplikaci, musíte ve Vistách začít řešit všechny tyhle manifesty, a Windows Defendery, a blokovače Bůh ví čeho). Spousta programů, které spoléhaly na to, že to či ono, je tam či onde, najednou nefunguje, protože tady a támhle, byly zalepeny ty či ony bezpečností díry, nebo se věči, o kterých Microsoft nikdy neřekl, že budou tam kde jsou i v budoucnu, přesunuly jinam, a najednou informace, která se ve Windows 2000 nebo XP dala vyčíst jedním dobře mířeným přístupem do registrů musí dohledávat přes API (což se ostatně měla už i ve Win2000, jen to nikdo nedělal, protože to bylo moc práce, a registry jsou přeci naše, že ano!).

Čímž se oklikou dostávám k tomu, co jsem asi tak zhruba chtěl říct: ve Win32 se neprogramuje moc dobře. Ne proto, že by API bylo nějak extrémně špatně navržené. Ve skutečnosti je docela slušné a v rámci jednotlivých domén i poměrně konzistentní, když uvážíme, že se z počítačů s výkonem, který dnes má každá lepší kalkulačka dokázalo úspěšně přesunout na stroje s kdo ví kolika jádry a gigantickým (z pohledu počátku 90. let) množstvím paměti všeho druhu. (Vsuvka: Zrovna tento týden jsem poslouchal nějaký podcast, kde se řešilo, proč Windows nemohou pracovat na více než 64 procesorech. Je to proto, že maska, která určuje, na kterých procesorech -- nebo jádrech procesoru -- může program běžet, má jen 64 bitů. Dovedu si představit, jak někdo v roce 1992 uvažuje, zda takovou masku implementovat obecně, jako nějaký druh seznamu, nebo malinko špinavým trikem, jako jednu dlouho proměnnou. A je mi jasné proč, při tehdejší úrovni počítačů, zvolil malinko špinavý trik.) Problém programování ve Windows je v tom, že ve Windows je toho tolik.

Na tomto místě je obvyklé říct (a ano, i já to s oblibou říkám), že tyhle obří operační systémy jsou nesmysl, a že z nich stejně většina lidí využije jen malou část. Ovšem otázka je, kterou malou část většina lidí využije, když je jich třeba miliarda? Čeho vlastně má mít takový správný malý operační systém vestavěnou podporu? Sítě? Grafická akcelerace? Asi tak sto tisíc různých druhů nejexotičtějších periferií, bez kterých právě těch bezvýznamných 10 miliónů lidí nemůže být? Co byste z Windows vyhodili, aby to nikomu nechybělo? Nebo aby to chybělo méně než milionu lidí? Co když někdo rozhodne, a z další verze vypadne zrovna to, co potřebujete vy?

Na druhou stranu: Windows API má dneska kolem 14000 funkcí. I když dokumentace, kterou Microsoft k API poskytuje je (ve srovnání s jinými API) na dobré úrovni, je to, zatraceně, 14000 funkcí. Kdo se tohle může naučit? Kdo může mít alespoň základní přehled o tom, jak co správně udělat v kterékoliv oblasti, kterou to API pokrývá? Dobrá, dneska zadáte dotaz do Googlu, klik-klik, a o hodinu hledání dál máte zhruba dvě až tři diskusní fóra, ze kterých poskládáte jak udělat to co potřebujete udělat. Ale kdo z programátorů, po kterých šlape jejich šéf, že už to, sakra, mělo být dávno hotové, si vybere hodinu hledat, dvě hodiny studovat, a další hodinu programovat (správně), když může zmáčknout Win+R, napsat regedit, Ctrl+F, klepy-klepy-klep, hmmm, takže HKEY_LOCAL_MACHINE lomeno System lomeno... no vida, a už je to tady!? Samozřejmě kromě vás?

Proto není divu, že pro Windows vznikají -- ehm, jak to říct -- zprasené aplikace. I já sám jsem jistě spoustu věcí udělal nesprávně. A to ne proto, že bych je nechtěl udělat správně. Prostě nevím, jak to správně vypadá. Původně jsem si myslel, že by mi třeba pomohlo nějaké školení nebo knížka. Ale jak chcete udělat školení nebo knížku na 14000 funkcí? Mám Petzolda, který je jistě dobrý jako úplný základ, ale problém s aplikacemi je v tom, že mají řešit nějaký problém, a řešení takového problému se většinou skládá ze spousty ne zcela souvisejících pod-problémů. Jak se na tohle připravit? Jak máte vědět, co budete dělat příště (pokud tedy pracujete na více malých a krátkých projektech a ne na jednom velkém a dlouhém)? Myslím si, že jediné opravdu smysluplné řešení je průzkum bojem, kdy vám někdo zkušenější ukáže, co a jak. Ovšem kde pořád brát ty zkušenější lidi, to netuším.

Tenhle problém, myslím tu objemnost a horizontální rozplizlost, měl asi vyřešit .NET, a částečně se mu to i podařilo. Ovšem s každou další verzí .NET, přibývá jmenných prostorů a tříd a metod a jazykových konstrukcí .NET jazyků takovým tempem, že po pěti letech jsme se dostali skoro do stejné situace, v jaké jsme byli předtím: Vím jistě, že na tohle bude v .NET nějaká třída. Ale kde, proboha? A tak si programátoři znovu a znovu píší jednoduchá řešení složitých problémů, které už dávno někdo robustně vyřešil, jen o tom nikdo neví.

V každém případě: Windows je jeden z nejúžasnějších inženýrských projektů na světě. Ať už je to s jejich použitelností v jednotlivých verzích jak chce, tohle se jim upřít nedá. Při rozsahu, který mají, je vůbec div, že je ještě Microsoft dokáže udržovat, a občas dokonce i dál vyvíjet.

Představuji si, jak za milión let archeologové vyhrabou někde v místech, kde je dneska Seattle, server se zdrojovými kódy Windows, a vystaví je v muzeu, a děti se na to budou muset chodit dívat, a paní učitelky budou říkat Tady děti vidíte, kolik úsilí lidé dokázali vyvinout, když šlo o předměty sloužící nějakým tajemným divošským rituálům, a děti budou znuděně lepit na vitrínu žvýkačky a těšit se, až se na ty lidi půjdou podívat do zoo, a budou po nich házet kamínky a dělat na ně obličeje.

Děti už jsou prostě takové.

středa, června 13, 2007

Vítr změn (aneb Kde, sakra, vězí?)

Jistě, je to banální, ale koupil jsem si teď nedávno nový monitor. Po nějakém tom týdnu rozmýšlení jsem nakonec zvolil 20" širokoúhlý (s rozlišením 1680x1050, nebo tak něco). Je to velmi pěkná věc, také asi proto, že poměr 16:10 je nejblíže zlatému řezu ze všech. Ale co chci říct: přivedlo mě to k úvahám nad uživatelskými rozhraními, a jak nudná a stejná vlastně jsou.

Musím říct, že mě dost překvapuje, že po pětadvaceti letech vývoje používají operační systémy tu samou metaforu pro práci jako tehdy na začátku. Skoro všechny součásti hardwaru se za ty roky proměnily k nepoznání (ať už jde o výkon složitost, nebo kapacity), software, který uživatel nevidí, udělal obrovské pokroky (multitasking, správa paměti, různé tyhle síťové vrsty a frameworky obecně), objevilo se tolik různých aplikací, které jsou užitečné, a které tu předtím nebyly. Ale uživatelské rozhraní je pořád stejné: desktop, na který se dají házet ikony, které mají představovat soubory (ale také programy -- myslím, že tohle spoustu lidí dost mate, že ikona reprezentuje různé věci v různých situacích), okno, nějaké prvky na jeho zavření, přesunutí nebo změnu velikosti, nějaká ta lišta se seznamem spuštěných aplikací a to je všechno.

Říkám si: jasně, většina lidí asi tuhle abstrakci pochopí, ale když uvážíte, jak se osobní počítače změnily za dobu své existence, jsou všechny současné (mainstreamové, konzumentské) operační systémy dost trapné. Uvažte: jediné co všichni ti lidé, kteří pracují na rozšíření uživatelského rozhaní o 3D možnosti, dokázali zatím vymyslet je 3D přepínač aplikací a nějaké další trapné pokusy dodání třetího rozměru oknům, které jsou prostě z principu dvourozměrné, a další rozměr nemá smysl, dokud se zcela nezmění metafora, kterou operační systémy v uživatelském rozhraní používají. Tedy: samá pastva pro oči, žádná inovace. (Ach, ještě máme Ribbon, což je zajímavá věc, a je to od Microsoftu docela odvaha takhle zásadně změnit svou dojnou krávu -- Office. I když chápu, že koncentrace funkcí v Office už dosáhla hranice, kdy nebylo možné ho dále nutit lidem s tím, že obsahuje nové funkce, protože na ně stejně nikdo nepřišel. Ohledně UI MS Office je rozhodně zajímavé přečíst si blog Jensena Harrise An Office User Interface Blog.)

Samozřejmě, že změna metafory by nejspíše vyžadovala změnu ovládání, které by muselo nějak přirozeně reflektovat trojrozměrnost pracovní plochy, ale myslím si, že dneska není zase takový problém vyrobit pro jeden systém dvě rozhraní: jedno klasické 2D pro konzervativce a další opravdu 3D pro experimentátory a trhnout balík na prodeji předraženého ovladače.

Jedna věc, kterou jsem zapomněl napsat v textu o WPF byla, že WPF přímo vybízí k tomu, aby designeři designovali uživatelská rozhraní do problémové domény, a ne do operačního systému. Myslím tím to, že WPF umožňuje snadno implementovat takovou abstrakci, které odpovídá problému který řešíte, a ne aplikaci, která jen vypadá konzistentně s operačním systémem, ale jinak se používá špatně (samozřejmě ve WPF můžete UI přepínat podle potřeby).

To je rozhodně změna k lepšímu.

V jakémsi podcastu jsem slyšel (pokud si dobře vzpomínám), že všichni doktoři byli naprosto unešení z malého dema, které v Microsoftu sestavili aby předvedli možnosti WPF, a které imitovalo databázi pacientů. Prý lepší popsání problémů, které řeší zatím neviděli.

Rozumím tomu.

Uživatelská rozhraní často upadají do stereotypů, které vznikly před mnoha lety, kdy nebylo možné řešit rozhraní tak, jak je to přirozené, a tak se z různých důvodů se uživatelé přizpůsobovali aplikacím, místo aby to bylo naopak.

Dneska si myslím, že už takové ohýbání uživatelů není nutné. Tak doufám, že si toho někdo všimne...

pátek, ledna 19, 2007

Jablečné pyré

Nemůžu si pomoci -- tohle téma mě poslední dva tři týdny intenzivně pronásleduje a i když si nejsem úplně jistý, že ho budu artikulovat tak jak chci, alespoň se o to pokusím.

Především je potřeba říct, že firma Apple je mi vcelku ukradená. Nezajímají mě příliš její produkty, protože nejsem jejich cílovou skupinou. Domnívám se, že jsem spíše pragmatický než romantický, takže se snažím hledět vždy především na parametry a jakousi vizi do budoucna, než na to, pro co se vžilo označení look & feel. Samozřejmě, že to neplatí vždy, a jako každý i já mám svě slabé chvilky a tak dále, nicméně, jak jsem řekl, produkty Apple mě nechávají po většinu času chladným.

Na druhou stranu, přes tento můj okázalý nezájem, se kontaktu s touto společností nelze vyhnout. Byly doby, kdy jsem tomu nerozuměl; přemýšlím, jestli existuje na světě podobná společnost jako je Apple (myslím tím tak malou penetraci výrobky a tak velkou publicitu). Takže neuplyne den, abych se na místech, kde to nejméně čekám nedočetl něco o tom, jaké produkty Apple chystá, nebo kterého svého -náctiletého uctívače právě žaluje, či kterou firmu nebo výrobek Steve Jobs zase označil za hloupé a nudné.

Kdyby nebylo této mediální masáže, kterou zažíváme, mohl bych dál setrvávat ve své povznešené nevšímavosti, nicméně vzhledem k tomu, jak se mánie kolem Apple v poslední době vystupňovala, mi to prostě nedá.

Začněme ze široka: Apple je často označována za průkopnickou a vizionářskou společnost. A musím říct: ano, Apple má historii průkopnické a vizionářské společnosti. Nedá se popřít, že tak do poloviny osmdesátých letech byla Apple opravdu firmou s převratnými nápady (tedy než Scully, který se rozhodl, že opravdu nebude prodávat limonádu, odešel Jobse). Odvaha přijít s GUI, přinést lidem myš, celý koncept Macintoshe, to všechno jsou věci opravdu zapamatováníhodné, a je jisté, že tah, který Apple vyvinula, akceleroval trh s domacími počítači tak, jak by k tomu bez ní asi nikdy nedošlo (nebo došlo mnohem později).

Apple také vymyslela mnoho užitečných věcí, které jsou dnes zapomenuty (třeba ta věc s kartičkami, nemůžu si teď vzpomenout jak se to jmenovalo, ale hodně to připomínalo grafický rexx), nebo Newton (iPhone není PDA proto, že PDA vymyslel Scully, což mu Jobs nikdy nezapomene), nebo cokoliv jiného o čem jsem ani neslyšel (protože nejsem Apple-fanboy).

Zkrátka chci říct, že Apple má určitě historii inovativní společnosti, která přinesla světu (v oblasti počítačů) mnoho užitečného.

Na druhou stranu, od dob Velké Jablečné Krize, která musela být opravdu hluboká, když byl zpět povolán Jasnozřivý Steve, mi přišlo, že Apple se víceméně plácala v nudném bahňáku neinovativnosti a přežívala vlastně jen díky té své pověsti a nepříliš početném zástupu věrných.

Ve srovnání se smrští, kterou Apple předváděla v osmdesátkách, bylo posledních deset let opravdu nudných.

Mac OS X? Ale no tak -- co tak zázračně inovativního je na Mac OS X? Nemyslím tím různé tyhle drobné vychytávky jako je desktopové vyhledávání (které proti všeobecnému vnímání nevykradl Microsoft od Apple, ale právě naopak; jen Microsoft při všech těch problémech kterými prošel, aby na trh dostal Visty, jejichž úspěch je nevyhnutelný, nicméně asi nebude tak drtivý jak tvrdí tiskové zprávy Microsoftu, nebyl s to tuhle vlastnost ohlášenou v roce 2003 implementovat dříve než konkurence) a tak dále. Myslím něco opravdu revolučního. Třeba: Má Apple nějaký vlastní managed framework? Poslední nepotvrzené zprávy z této oblasti, které jsem četl, tvrdily, že Objective-C v Leopardu bude mít garbage collector, ale managed framework je daleko víc věcí než jen správa paměti. (Rovnou přiznávám, že o programování Maců jsem se nikdy nezajímal a nevím o něm vůbec nic, takže se rád nechám poučit, pokud je tu někdo, kdo se tím zabývá.)

Proč se vlastně zatěžovat managed frameworkem, když ten současný funguje tak skvěle, a je v něm napsán, jak si mnoho Apple následovníků myslí, nejlepší operační systém na světě? Protože programování je dneska dost složité i bez toho, abyste se museli zabývat správou paměti a přilehlými problémy. Navíc, běh na virtuálním stroji s just-in-time kompilovaným mezi-jazykem, umožňuje snadno přecházet z architektury na architekturu bez nutnosti cokoliv přepisovat. Což oceníte například když píšete aplikaci pro více platforem najednou (například já překládám komponenty -- samozřejmě napsané s ohledem na omezení daná .NET Compact Frameworkem -- jen jednou a pak je můžu spouštět jak na PC, tak na Windows Mobile PDA, ale pokud bych o to stál, a investoval do toho nějaké to nepříliš velké úsilí, díky Monu také na Linuxu nebo nakonec i na tom Mac OS X). Nebo když potřebujete změnit architekturu, která leží pod vaším operačním systémem (třeba když vyměňujete procesor, což se Apple povedlo už dvakrát -- nejprve společnost přecházela z motoroláckých procesorů 68k na PowerPC a teď znova z PowerPC na Intel).

Celkově ale můj skeptický názor na Mac OS X plyne z mého přesvědčení, že čas velkých operačních systémů pomalu končí. Microsoft vyvíjel Visty kolik -- pět šest let? Jak dlouho bude vyvíjet jejich následovníka? Osm, deset let? A to mluvíme o největší softwarové společnosti na světě.

Operační systémy dneska musí zajišťovat stále více funkcí, přičemž sebou samozřejmě musí vléct i celé to pochybné dědictví svých předchůdců, stávají se složitěšími, nepřehlednějšími a tak dále. Aby bylo vůbec možné něco tak neuvěřitelně komplikovaného vyvinout, je nutné posouvat se s úrovní abstrakce nahoru, takže zátěž hardware roste, a systém, který dělá stejnou věc, potřebuje výkonější stroj, aby běžel stejně rychle (vždy mě pobaví naivkové, kteří tohle nechápou a podivují se, že jim WindowsXP neběží na originálním Pentiu stejně rychle jako Windows 3.11).

A navíc: Hardware se mění. Intel i AMD se přestávají honit za prostými gigahertzy a soustřeďují se na přidávání paralelních jader. Jak jsou na to uzpůsobeny současné (spotřební, domácí) systémy? Nijak. Tohle bude další velký krok, který budou muset vývojáři OS udělat, aby se udrželi na trhu -- nabídnout jednoduché konzistentní vývojové prostředí, které umožní paralelizaci a rozklad zátěže mezi všechna ta nudící se jádra moderních procesorů.

Proto promiňte, ale na Mac OS X není nic inovativního. Je to operační systém napsaný v C pro jednojádrové procesory, který (zatím) nenabízí ani automatickou správu paměti. To, že má dotažené uživatelské rozhraní je věc, o které nebudu polemizovat. Ale uživatelské rozhraní aplikace nepíše. Píší je programátoři (stále méně vzdělaní), kteří se nechtějí potýkat s problémy, které byly vyřešeny před desíti lety.

Dalším faktem je, že uživatelé stále více času tráví ve webovém prohlížeči, ve kterém mají (někteří) všechny aplikace které potřebují, a mají je k dispozici kamkoliv příjdou a je tam Internet. A proto si myslím, že Windows Vista jsou opravdu posledním molochem starého typu. Microsoft si je tohoto podle mě vědom, a proto se pouští do zajímavých výzkumných projektů jako je třeba Singularity. (Jde o prototyp managed operačního systému napsaného v C#, který vypadá velice zajímavě, a i když je pravděpodobné, že v té podobě v jaké je dnes se s ním nikdy nesetkáme, nejspíš poslouží jako základ dalšího OS, který Microsoft někdy v budoucnu vyvine.) Což mi připomína, že jsem někde četl, bohužel už si nevzpomínám kde, že jeden z Microsoftích pohlavárů prohlásil, že vývojáří mají na Vistách pracovat tak, jako by měly být hlavním OS produktem Microsoftu dalších deset let. Myslím, že je v tom hodně pravdy.

Nechci říct, že by operační systémy vymizely. Ať děláte na počítači cokoliv, je pod tím operační systém, který zajišťuje konektivitu a bezpečnost, a souborový systém a přidělování paměti, a tak dále. Ale je otázka, jestli obří operační systémy jako jsou Windows (XP nebo Vista, všechno stejné), nebo Mac OS X jsou potřeba k tomu, abyste spustili prohlížeč. K čemu je vám desktopové vyhledávání, když všechny vaše dokumenty spravuje Google (nebo Microsoft, nebo kdokoliv kdo příjde a povede se mu včas ukousnout největší kus tohoto koláče)? Ó, jistě, vždy tu bude trh pro "velké" OS, ale podle mého nezasvěceného názoru se bude spíše zmenšovat. (A vzhledem k tomu, jak nabídky on-line služeb rostou jako houby po dešti, nemyslím, že jsem v tomto přesvědčení osamocen.)

Zpátky k Mac OS X. Rád se nechám poučit, jaké kroky tímto směrem podniká Apple, ale zatím mi to příjde tak, že v době, kdy Microsoft vyvíjel .NET Framework, Apple se vzpamatovávala z toho, že od poloviny devadesátých let neměla pořádný operační systém a také z toho, kam ji ten chlápek co kdysi prodával Pepsi za těch deset let bez Jobse dovedl.

(Takže jsem dohledal informace o jakési probíhající částečné integraci LLVM do Mac OS X. Co jsem našel jsou spíše útržky, než nějaké konkrétní informace. Nevíte o tom někdo něco víc?)

Pojďme dál po významných produktech Apple, které jsou prohašovány za vysoce inovativní.

iPod. Ten se údajně prodával docela špatně, než přišly iTunes pro Windows a iPod Mini. Navíc největší inovací iPodu jsou právě iTunes, které, jak se domnívám, se podařily hlavně proto, že Jobs byl zaháčkovaný v korporaci Disney a tudíž se mu (na rozdíl od ostatních, kteří takové pokusy činili před ním), podařilo přesvědčit nahrávací studia, aby do iTunes pustily své skladby.

Nic proti iPodu. Je to vážně pěkný přehrávač. Ale co nového a úžasného přinesl? Vyjmenujte mi tři věci, které před ním něměly jiné přehrávače. Dobrá, velký disk. Ano, ovládání (jak vlastně dopadl ten soud s Creative, které tvrdilo, že iPod porušuje jejich patenty?). A co dál? Hmmm. Aha, iTunes. No dobrá, uznávám, iPod byl inovativní počin, ale jen tak tak. Nicméně je to ilustrativní příklad druhu inovace, se kterou se v posledních letech u Apple setkáváme.

Myslím tím zhruba to, že Apple se nezaměřuje na vymýšlení nových věcí (což dělala v osmdesátkách), jako spíš na dotahování věcí do konce. I to je svého druhu inovace, ale jistě cítíte ten posun. Apple teď dělá věci, které dělají všichni ostatní, lépe než všichni ostatní. Ne v jednotlivostech (iPod je ve skutečnosti dost hrozný, ať už jde o vestavěnou baterii, nebo o neschopnost fungovat jako přenosné velkokapacitní médium typu USB Mass Storage Volume), ale v celcích (iPod je kouzelný tím, jak uživatelům dává přesně to, za co jsou ochotni zaplatit, ani o chlup víc, ani o chlup méně). To samé platí i o rozhraní Mac OS X (o kterém jsem jen četl a koukal na nějaká videa).

Apple prostě přestalo inovovat na poli novinek a místo toho se pustilo do inovací na poli -- jak bylo to slovo? aha -- konvergence.

Jde teď o to, kde Apple sebe sama vidí za pět, deset let. Pokud chce být firmou spotřební elektroniku, jde jistě správným směrem, a řekněme, že těch pár let nebude tvrzení, že Apple je americkou Sony (které jsem teď kdesi četl) působit tak směšně jako dnes. Pokud chce být špičkou na poli výpočetní techniky -- je mi líto, ale prostě nejde správným směrem. Pokud zůstaneme u Sony -- i to vyrábí, jaksi mimochodem, notebooky VAIO, které jsou opravdu to nejvíc sexy, co si můžete s Windows dopřát. Ale že by v tomto oboru nějak udávalo směr? To tedy rozhodně ne.

No a konečně horká novinka dneška: iPhone. Je asi příliš brzy to nějak hodnotit. Mé současné pozovrování je takové, že je to drahé (za 500USD s dvouletou smlouvou u jediného operátora?), je to nepraktické (kdo má PDA ví, jak za chvíli vypadá displej, když jste líní vytahovat stylus, navíc pro některé lidi bude absence klávesnice určitě fatálním nedostatkem), je to velké (i takové to PDA-telefon od Qtek je dost velké na to, abyste ho bezbolestně nosili v kapse a to je rozhodně menší), bude to mít malou výdrž (velký displej bude chtít svoje, s tím nic nenaděláte, navíc častým dobíjením vestavěná baterie brzy odejde), je to uzavřené (Apple se chce vyhnout problémům s laděním prvních verzí, proto bude aplikace dodávat samo, a bude s to je aktualizovat spolu se systémem a samozřejmě certifikace pro třetí strany bude něco stát -- ne opravuji: bude stát hodně), nemá to rychlá data (protože ta by mohla konkurovat iTunes, a to by tedy akcionáře rozhodně nepotěšilo) a tak dále a tak podobně. Je to sexy? Jistě. Je to praktické? Nikoliv.

iPhone vnímám asi jako první iPod nebo jako první Xbox. Snaha dostat se na trh, odladit technologii, zjistit co to vlastně obnáší, vyrábět telefony. Až za dva roky příjde iPhone Mini za polovční cenu, bez úvazku a s dostatečnou základnou aplikací (a vývojovým prostředím), bude to zajímavé pro movitější masy, ale dneska je to spíš takové lákadlo, příslib věcí budoucích. Samozřejmě s marží 50%, jak je u Apple zvykem (mimochodem to je další zajímavá věc na Apple -- v agresivním prostředí jako jsou osobní počítače, přenosné přehrávače nebo mobilní telefony, dokáže generovat neuvěřitelně vysoké marže).

iPhone ovšem skvěle dokumentuje hlavní devizu společnosti Apple: Reality Distortion Field Steva Jobse. Jobs je prostě rozený vůdce, a je štěstí, že nemá politické ambice, protože jinak by se mohl snadno stát americkou verzí Adolfa Hitlera (myslím ve smyslu schopnosti přesvědčit lidi, ne názorově; o politické orientaci Steva Jobse nevím vůbec nic). Jobs je schopen lidi přesvědčit jak uvnitř společnosti (takže pak věci dotahují do konce a tvoří opravdu skvělé ukázky designu), tak mimo ni (díky čemuž dokázal Apple vytáhnout z bahna ve kterém byla před jeho návratem tam kde je dnes -- tedy na první stránky novin a do televizního primetimu).

Opravdu doufám, že Apple o Jobse nepříjde kvůli jeho machinacím s opcemi, protože to by znamenalo její brzký konec. Jobs je pro Apple nepostradatelný a nenahraditelný. Apple je jeho firma, příjmá jeho kulturu, akceptuje jeho aroganci (například to, že Steve Jobs vynalezl proporcionální písma a kdyby nebylo jej, nikdo jiný by s nimi nepřišel, to je vcelku veselá ukázka to co myslím), souhlasí s jeho záměry, protože bez něj je to naprosto tuctová firma s mizivým podílem na trhu.

Ještě více fascinující je skutečnost, že Jobs dokáže stejně jako Apple ovládat i lidi vně. Následovnící a uctívači Apple mi připomínají bité ženy: Když dostanou nakládačku, vždy si nějak vysvětlí, že si to zasloužily. Takže Apple žaluje své fanoušky za to, že spekulují o produktech, a je to v pořádku. Apple si účtuje za service packy tisíce korun, a je to v pořádku. Apple po deseti letech, kdy tvrdila, že Intel je fuj, najednou obrátí a za několik málo dní už její fanoušci hlásají, že Intel je huj, jako by se nic nestalo (Ne s Eurasií, ale s Eastasií jsme ve válce! Ať žije Velký Bratr!). Fanoušci Apple snesou prostě cokoliv, pokud to řekne Steve Jobs. Fantastické.

Fascinující je rovněž sledovat na uctívačích jak se domnívají, že proto, že mají nějaký produkt Apple, jsou stejně chytří jako Steve Jobs. Nestačí jim pak tiše doma onanovat nad skvělým výrobkem, který si koupili. Musí si najít nepřítele a toho pohanit, aby všem ukázali jak skvělý produkt to vlastně mají. Jobs dělá to samé (nicméně nikdy mu to nebrání uzavírat strategická partnerství s těmi, jež mediálně dehonestuje), ale Jobs dvakrát vybudoval Apple. Narozdíl od pitomých fan-boys, kteří dokáží jen plodit otravné blogposty, ve kterých dokazují technologickou nařazenost Mac OS X nad Windows Vista srovnáváním polohy tlačítka pro zavření okna.

Nechci říct, že všichni majitelé produktů Apple jsou kreténi. To rozhodně ne. Množství blbců mezi majiteli Maců je zhruba stejné jako mezi uživateli Linuxu (a nebo Windows, ale ti vědí, že jsou ve vítězném týmu, takže se projevují méně často) a drtivá většina uživatelů např. počítačů Apple je používá proto, že jim příjde, že jim ulehčují práci, a nevadí jim omezené spektrum aplikací (např. nehrají hry, nebo mají konzoli).

Problém je v tom, že díky reality distortion field se uctívači Apple cítí být o několik řádů výše než kdokoliv jiný (ano, dokonce výše než skupina uživatelů Linuxu, která píše komentáře na Živě), a proto jsou daleko hlasitější a mnohem méně snesitelní, než agresivní zastánci čehokoliv v jiných oborech.

Ale to už bruslím na tenký led, a pokud nechci schytat smršť hate-mailu a nadávání do debilních hovad v diskusi, měl bych tento směr opustit.

Takže. Takže jsme se rozepsal o dost víc než jsem měl v úmyslu, nicméně doufám, že jsem trochu objasnil svůj názor na společnost Apple a všechen ten humbuk kolem ní (bez toho bych beztak jako blogger za nic nestál). Je dobře, že Apple existuje, protože je kde se dívat jak věci dotahovat do konce, jak je dělat krásně a tak dále (třeba Cube považuji stále za možná vůbec nejhezčí počítač co kdy vznikl a je mi líto, že se v této podobě něco nevyrábí).

Nicméně být z každého prdu Steva Jobse nepříčetně nadšený, to mně prostě nepříjde normální.


Zajímavé odkazy k tématice: Avoiding Copland 2010 -- 1. díl, 2. díl, 3. díl.