Proč se bojím HTML5?

Tomáš Herceg       2. 1. 2011       Offtopic, HTTP/HTML, JavaScript       6659 zobrazení

Vývojem webových aplikací se živím posledních 10 let. Ne proto, že by mi webová platforma nějak zvlášť imponovala, ale jiné typy aplikací po mě už hezky dlouho nikdo nechtěl.

V posledních pár letech jsme byli svědky posunu od statických stránek k poměrně rozsáhlým a patřičně komplikovaným webovým aplikacím, které se v ideálním případě snaží co nejvíc zamaskovat, že fungují nad bezstavovým protokolem HTTP. Uživatelé rádi zjistili, že po každém kliknutí na cokoliv nemusí nutně stáhnout celou stránku znovu, ale že se objeví světluška, co lítá furt dokola jak potrhlá, a za chvíli se možná něco stane.

Trendy jsou do jisté míry udávány velkými webovými aplikacemi typu Facebook atd. Když se podíváte třeba na Outlook  Web Access a zjistíte, že v něm funguje drag & drop, většina klávesových zkratek jako v Outlooku, tak trochu žasnete nad tím, že to vůbec jde. Ano, jde, a pokud jste již nějakou webovou aplikaci napsali, dáte mi jistě zapravdu, že to dá neskutečné množství práce, až se jeden ptá, jestli se to vůbec vyplatí.

Za posledních pár let nabývám stále víc a víc dojmu, že se snažíme stavět obrovské domy uprostřed močálu, že přilepujeme nové technologie na ty staré a že se to stává čím dál nabobtnalejší a nespolehlivější. Vývoj pro web je zbytečně moc komplikovaný. Pro vytvoření webové aplikace musíte umět několik jazyků, namátkou HTML, CSS, Javascript, u 99% aplikací i SQL, protože většinou nějakou relační databázi používáte. K tomu si musíte zapamatovat stovky výjimek, protože tohle udělat nesmíte, tohle standard neřeší, takže si to prohlížeče implementují po svém, anebo to třeba i standard řeší, ale prohlížeče si stejně dělají, co jim libo jest.

Aktuální zlo HTML 4 a CSS 2.1

Jazyk HTML se úžasně hodí na strukturované textové dokumenty, protože na ně byl stvořen. Obsahuje minimum balastu a textově orientované aplikace se v něm dělají velmi dobře. Neřeší ale pochopitelně vzhled, takže každá aplikace dnes využívá CSS.

Základní myšlenka CSS je velmi pěkná, jeho kaskádovitost je použitelná, i když možná až zbytečně komplikovaná. Navíc sada stylů, které můžete v dnešních prohlížečích bezpečně používat (kontrolovat, jestli weby jedou i v IE6, na to jsem už částečně rezignoval), je dost ořezaná.

To, že CSS neumí výrazy (až od trojky), vůbec nevadí, ba právě naopak – jakmile podáte čertovi prst, vezme celou ruku. Největší průšvih CSS je nedomyšlený a naprosto ujetý systém pozicování elementů.

Tuhle jsem potřeboval ve stránce mít tabulku, která vyplní prostor, který na ni zbyl (nastavil jsem jí šířku 100%), a potřeboval jsem, aby první sloupec měl přesně 70px (kvůli grafice). Ostatní si měly rozdělit zbylé místo rovnoměrně, ale kominovat procenta a pixely u šířek sloupců vede k tomu, že si to prohlížeč přebere po svém (a každý samozřejmě jinak). Pomocí CSS tohle zkrátka řešit nejde.

Anebo problém klasického dvousloupcového layoutu – nedá se udělat, aby boční panel i hlavní obsah měly stejnou výšku, která by se vypočítala podle jejich vnitřního obsahu. Pokud bočnímu panelu chcete dát příkladně jiné pozadí a chcete, aby končilo tam, kde končí hlavní obsah (prostě klasický dvousloupcový layout), musíte se uchylovat k různým nepěkným úskokům.

O nic lépe se třeba nedělá “status bar”, tedy element trvale přichycený ke spodnímu okraji okna prohlížeče. Nebo jsem ještě neviděl správně udělaný modal popup (element, který překryje obsah stránky a zobrazí nad ním nějaké okno (například potvrzení, jestli chcete záznam opravdu smazat atd.). Napsat to tak, aby vám to nerozhodilo zbytek rozsáhlé aplikace, je často dost těžké, například pokud CSS vlastnost z-index používáte ještě někde jinde. Nebo když z jednoho modal popupu potřebujete otevřít druhý. Anebo když chcete, aby modal popup zakryl vše kromě horního menu, které se má rozbalovat a překrývat ho - to taky přeju příjemnou zábavu.

Argumentem obhájců CSS je, že ve webových aplikacích tohle nepotřebujete, anebo že to jsou chyby v návrhu UI. Já bych si zase dovolil tvrdit, že správnost návrhu UI minimálně závisí na konkrétní aplikaci, a rozhodně to není omluva pro to, že se tohle v CSS musí nechutně občůrávat. Rozhodně neplatí, že to, co se v CSS nedá udělat pohodlně, není user friendly, a naopak – to jsou dvě na sobě nezávislé věci.

CSS je v aktuální verzi zkrátka nedodělané a to ještě vůbec neuvažuji fakt, že si jej každý prohlížeč implementuje po svém. I kdyby jej všichni implementovali správně, nevyhnete se spoustě situací, kdy místo řešení konkrétního problému vymýšlíte, jak tu či onu nedomyšlenost obcházet. A pak zjistíte, že to nefunguje v Opeře 9.něco.něco, přestože to v 9.něco.něco-1 fungovalo, a když elementu v úplně jiné části stránky změníte výšku z 90px na 92px, tak to najednou fungovat začne.

Javascript

Bohužel ještě větší rozdíly mezi prohlížeči jsou v implementaci javascriptu. Handlery na události se navěšují v každém prohlížeči jinak, v jednom se tahle vlastnost jmenuje takhle, v jiném zase onakhle, no zkrátka bordel.

Jistým zadostiučiněním jsou různé frameworky nad javascriptem, které tyto rozdíly z velké části stírají. Díky jQuery jsme schopni snadno udělat animace, a pokud nás neklepne pepka z jQuery UI (které se mi ani trochu nelíbí), můžeme udělat “fancy UI” s menším úsilím.

Potíž je ale v tom, že to jsou desítky kB javascriptového kódu, který se spouští pro každou webovou aplikaci, a který nedělá právě triviální věci. Díky CDN se aspoň už nemusí pokaždé stahovat, ale i tak. Prohlížeče se sice snaží zrychlovat své javascriptové enginy, ale i tak JS díky své dynamičnosti nemůže dosahovat takové rychlosti jako jazyk, který je silně typový. Možná je to jen má vlastní zmlsanost, ale nevidím jedinou výhodu dynamického jazyka poroti například C#.

HTML 5 a rozšíření možností

Aby toho nebylo málo, chysají se na nás HTML 5, CSS 3 a další vylepšení. Bohužel mě ani trochu neuklidňují, ba právě naopak. Prohlížeče je začínají podporovat postupně už nyní, ale než je budeme moci používat bez obavy, že odstřihneme velké množství populace, uplyne ještě mnoho vody.

A když vidím ty experimenty typu kreslící program, 3D hry nebo vývojové prostředí v javascriptu,  kteér vznikají,tak se bojím, že se tudy vývoj  opravdu začne ubírat. To, že IE nebude smět být standardní součástí Windows, mi taky ze začátku přišlo jako naprosto nerealizovatelná a nesmyslná představa, a než se rok otočil, stalo se to. S tímhle to může být podobné.

Už teď si dovedu živě představit, jak se bude zneužívat canvas (to je taková ta věc, na kterou můžete kreslit pomocí javascriptu). Možná se to už děje. Už tak nějak vidím, jak si na to lidi budou kreslit své vlastní UI, jak na to budou knihovny, a jak se postupně budeme víc a víc drbat levou nohou za pravým uchem a vyvíjet čím dál pomalejší aplikace se spoustou zbytečných vrstev. Naštěstí počítače jsou stále silnější a silnější, takže kancelářský balík bude vždycky startovat 20 sekund, i když nová verze je 3x pomalejší. Ona se taky pouští na 3x rychlejším stroji, žeano.

Potíž HTML 5 vidím v tom, že utvrzuje lidi v názoru, že aktuální způsob vývoje pro web je ta správná cesta a že se v tom má pokračovat, protože teď máme spoustu nových možností. A navíc většinu problémů, které řeší, bylo třeba řešit už před 10 lety, a všichni už si s tím poradili sami. Je hezké, že konečně máme v HTML komponentu pro výběr data a času, ale už to řešíme jinak (kombinací TextBoxu a javascriptu, který vygeneruje ten vyskakovaci kalendáříček). A než svůj kalendář budeme moci bez obav zahodit a použít ten z HTML 5, bude se chystat HTML 7.

 

 

Když se podívám například na Silverlight, brečel bych. Ne proto, že je strašný, ale proto, že ho nemůžu používat, protože zákazníci chtějí rich aplikace v HTML. U statických webovek je to jedno, ale pokud máte psát informační systém, nějaké GIS aplikace s mapami apod., je to průšvih. 

Pozicování elementů v Silverlightu je řádově lépe promyšlené, navíc kód aplikace je kompilovaný a silně typovaný (takže vývojové prostředí může nabídnout plnohodnotnou IntelliSense a spoustu dalších věcí, které urychlují vývoj a snižují náklady), podporuje to věci jako databinding atd. Ano, má to své mouchy, ale bohužel HTML a CSS jich má mnohem víc. Vyvinout aplikaci se složitějším UI v HTML, CSS a jQuery vyžaduje obrovské množství úsilí, ať už pro samotné napsání, tak i pro testování v deseti různých prohlížečích (zvlášť když si zákazník vymyslí, že to bude používat i z mobilu), a tím pádem je to výrazně dražší.

Microsoft nemůže dát Silverlight jako vestavěnou součást Windows (ať už kvůli EU anebo podobným šiřitelům světové pravdy, lásky a blahobytu), a spousta lidí by v Silverlightu nevyvíjela už z principu, protože “Microsoft je přeci ta zlá smradlavá firma, které jde jen o zisk”. A tak dál budeme aplikace plácat v HTML, CSS, za 5 let to možná už nebude taková pruda, protože bude IE11, Firefox 6 a Chrome 197, které už HTML 5 a CSS 3 budou umět celé a skoro správně.

Pořád ale nikdo nebude řešit základní příčinu problému, nikdo nebude chtít zjednodušovat celou strukturu. Budeme plácat další a další vrstvy na sebe a náš pomyslný dům se bude hlouběji a hlouběji bořit do močálu.

 

hodnocení článku

3 bodů / 3 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: Proč se bojím HTML5?

Dnes jsem narazil na zajímavou věc:

http://glow.mozilla.org/

Na první pohled jsem si myslel, že je to ve Flashi, ovšem čisté HTML 5. Přesně takto bych si představoval udělané všechny weby, které jsou přecpané Flashem nebo podobným zvěrstvem. Praktické využití HTML 5 bez nutnosti jakýchkoliv runtime, 100% platformově nezávislé.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, a bohužel noční můra pro ty, kteří by to v patlanině HTML/CSS měli psát. V jednom prohlížeči funguje to, ve druhém je to o dva pixely posunuté doleva a problikává to, pak to nějakej bulík spustí z telefonu a celé se mu to rozsype atd.

Nepochybuji o tom, že to napsat jde, ale v Silverlightu nebo i v tom Flashi to bude z hlediska vývojáře daleko jednodušší. Jediný rozdíl je v tom, že pracnější HTML5 verzi si zobrazí o 5 lidí víc.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Diskuse: Proč se bojím HTML5?

Ondřej Linhart nenapísal ani jeden relevantný argument proti Silverlightu. Zháňal som do adminu jednej aplikácie nejaký kvalitný ajaxový ui toolkit (mal som náročného klienta) rozhodoval som sa medzi ExtJs, SmartClient, Qooxdoo, ZKoss všetky tieto JS toolkity sú neohrabané a hlavne predražené (jedna licencia ExtJS stojí $895), ovládaniev HTML / JS aplikácí je z užívateľského hladiska otrasné. Nakoniec som zvolil SilverLight a som spokojný je to zadarmo a vývoj je omnoho jednoduchší a rýchlejší a ovláda sa to skoro ako klasická desktopová aplikácia (uvažujem nad tým že celý admin môjho CMS prerobím do SL). Multiplatformnosť sa zbytočne precenuje, 95% počítačov má ajtak Windows a 3% percentá MacOS. Na obidvoch platformách SL funguje, microsoft uvažuje nad vydaním SL aj pre Android. Silverlight je momentálne asi najlepšia RIA platforma na tvorbu backendu ak niekto pozná alternatívu k SL tak nech ma s ňou oboznámi ja o žiadnej neviem.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Já bych tedy netvrdil nebo alespoň nevyjadřoval počet uživatelů používající daný OS v procentech nebo jakémkoliv jiném tvaru...Já osobně třeba používám UX a většina z mých kolegů (IT) ho používá také - jen v různých distribucích.Ale to bychom se dostávali do jiného druhu diskuze a o jiném tématu - jen mi to nedalo nezareagovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Proč se bojím HTML5?

K problematice webových aplikací se vyjadřovat nebudu, ale že nikdo nechce Silverlight se vůbec nedivím. Je to jeden z nejhorších odpadů co kdy vyšel z dílen Microsoft a nepovedená, platformově závislá parodie na Flash, kterou z 99% používá pouze sám Microsoft. V dnešní době je módou, aby se webové aplikace co nejvíce podobaly těm desktopovým a to je celé špatně.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Jestli je to celé špatně je otázkou - co budou a nebudou webové aplikace určuje především trh, tedy zákazníci. Kdyby o tom rozhodovali programátoři, kteří tomu rozumí, tak by se to moc blížilo ideálnímu světu.

Zákazník chce a zákazník platí. V Silverlightu by se jejich požadavky realizovaly daleko lépe a levněji.

HTML/CSS je minimálně 10 let starý koncept, který řešil nějaké požadavky tehdejší doby. Dnes jsou ty požadavky jiné a HTML/CSS mi prostě nepřijde jako ideální řešení.

Je to asi 2 roky, co se Microsoft kasal, že Silverlight má 60% rozšíření, teď bude mít jistě o trochu víc (je jasné, že poslední procenta jdou pěkně ztuha). Na druhou stranu většinu firem, které neudělaly upgrade z IE6, to stejně brzy čeká, tak při té příležitosti část z nich přidá i Silverlight.

O Flashi toho moc nevím, psal jsem v něm jen pár aplikací, ale z hlediska pohodlnosti vývoje bude mít určitě navrch Silverlight, protože věci jako LINQ atd., které máme v C#, o těch se slabě typovému ActionScriptu ani nezdá.

Máte proti Silverlightu nějaký skutečný argument, kromě osobních nesympatií anebo názoru, že umožňuje dělat věci, které na web nepatří?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jistě, hlavní (a jediná) výhoda Silverlightu je, že v něm lze dělat v běžných .NET jazycích a tudíž využívat vychytávky z .NET Frameworku. Na druhou stranu se toto nikdy masově nerozšíří tak jako Flash nebo Jávinec, a proto to byl od Microsoftu naprosto zbytečný krok do prázdna a vyhozené finanční prostředky. Kromě toho už existuje XBAP, kdyby měl někdo potřebu to plácat v .NETu. Do webových technologií sice nedělám, ale HTML5 se mi zdá jako jediný krok správným směrem, protože to je skutečně platformově nezávislé tak jako má web být a mohlo by to konečně vést ke zbavení se hybridních hnusů jako Silverlight, Java, Flash, AIR, apod.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Silverlight funguje na Windows a na Macu. Na Linuxu nemají poslední verzi, ale tak nějak bych řekl, že naimplementovat webový prohlížeč s podporou HTML5, CSS3 a všech kravin a milionů výjimek je daleko těžší, než naimplementovat runtime Silverlightu.

HTML se mi hrubě nelíbí a nová rozšíření tam zanášejí ještě větší bordel.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jenže on ho nikdo implementovat nebude, obzvlášť ne Microsoft, který si ho bude držet na Windows. A pokud se do toho pustí komunita, dopadne to stejně katastrofálně jako Mono (a zdrojové kódy MS neuvolní). linux a mac ani nemá cenu zmiňovat, tam to nepoužívá nikdo.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Microsoft dostal se Silverlightem šanci. Slyšel jsem hodně o podpoře pro Linux a Operu. Zatím se ale povedlo pouze vydat několik nedodělaných verzí a posun s podporou zatím absolutně nikde. Je to škoda, zrovna se mi Silverlight 4 začínal líbit. V něm už se píše docela hezky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Čtyřka už je v pohodě, tam víceméně nic nechybí a hlavně se v tom na rozdíl od HTML/CSS dá rozumně psát, není to tak zabordelené a počítá to se scénáři, které jsou dneska potřeba.

V Opeře to funguje, ale není to oficiálně podporované. Na Linuxu by to mělo fungovat v Google Chrome, tedy verze 1, 2 a 3, na čtyřce pracují. I když těžko říct, na linuxu obvykle nefunguje nic.

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Pokud článek měl říci to, že jedinou šancí, jak napsat webovou aplikaci, která bude fungovat všude a na všem, je Silverlight, tak vás chci upozornit, že na řadu starších počítačů tuto vymoženost ani nenainstalujete. A nečekám, že by si firmy a domácnosti začaly kupovat nová PC jen proto, aby si ho mohly pořídit.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Počítačů, které mají starší systém než Windows XP, je naprosté minimum. A mimochodem IE 9 se slavným HTML 5 nejde nainstalovat ani na ty Windows XP.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

1) Nejde jen o operační systém, ale třeba i o typ procesoru...

http://vbnet.cz/forum-tema--2537-silverl...

2) Nepropaguji HTML 5. Každá "změna k lepšímu" je lepší jen v tom případě, že přinese něco pozitivního. Z hlediska koncového uživatele, který ve firmě dělá např. účetnictví a webový prohlížeč použije maximálně o přestávce nebo když se chce obrátit na zákaznickou podporu ke svému účetnímu programu, tomu je úplně jedno, jestli ta aplikace běží pod tím či oním. Tam je třeba i ten vámi zmiňovaný IE6 postačující. Pokud ale webmaster překope stránku se zákaznickou podorou na "vyšší úroveň" a udělá je třeba v tom Silverlightu, už s tím má firma jenom náklady, přínos je 0.

Pokud to má jenom ulehčit práci programátorovi, tak to ale nesmí komplikovat práci a zvyšovat náklady.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Diskuse: Proč se bojím HTML5?

Někdy si myslím to samé (i když programuji jen tak sám pro sebe).

PS: nebude Chrome 197 ale už alespoň Chrome 2056

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback