.: Rychlé menu: navigace .:. odkazy .:. kategorie .:. vyhledávání .:. archivy .:. autoři :.  

24.12.2003



Je dobře, když IE opravuje kód? Je správné zobrazení chybného vstupu v pořádku? A chybné zobrazení správného vstupu v pořádku je? Je autor tohoto příspěvku v pořádku? A Jan Tleskač?

Provokativní otázka Petra Ozogána:
Konkrétně se jedná o prohlížeč Internet Explorer. Pokud narazí na to, že je v kódu HTML chyba, tak se ji snaží analyzovat a opravit tak, aby se na výstupu dostala www stránka dle zadání. V tomto případě však uvedené úpravy označují někteří lidé za „nestandardní chování”. Brali by spíše to, kdyby se museli dívat na plno zmršených stránek, které nedokázali neprofesionální tvůrci napsat zcela v pořádku. Přesněji řečeno, oni se na ně dívat musejí, protože jim je prohlížeč, vyhovující standardu zobrazí s chybama. Jak jsem bohužel zjistil, takový prohlížeč je například Mozilla. Který z nich je tedy chybný? Ten, který se snaží napravit sám špatné zadání, nebo ten, který přesně (špatně) interpretuje chybné zadání?

Zaráží mne to, o to víc u programátora. Zkusím to parafrázovat, třeba se můj názor stane jasnějším: Borland Delphi mi nepřeloží kód, který je s chybou. Měl by ho, podobně jako IE, analyzovat a opravit tak, aby výstupem byl správně fungující kód. Nehledě na to, že má-li stránka chybné zadání, je korektní výstup takový, který je chybný, který tu chybu důsledně dodrží, ne? Pokud dostanu na chybný vstupní text správnou odpověď, tak tu něco smrdí...

Z komentářů: Na druhou stranu ale připouštím i to, že pokud je tam nějaká chybička, tak by to měl prohlížeč v případě možností sám opravit.

A tady nesouhlasím. Naprosto ne. Zaprvé — jakou chybičku by měl opravit? Co je ještě chybička? Je to něco jako zapomenutý středník na konci příkazu? A proč to tedy žádný překladač C nebo Pascalu ani PHP interpret ani Javovský kompilátor neopravují? Protože jazyky mají pevná pravidla a programátoři je buď dodržují, nebo nepřekládají! {smile} HTML dlouho svá pevná pravidla neměl (TEN html, je to jazyk... Ne TO ani TA!) a teď, když je získal, tak je spousta „pologramotných” nechce dodržovat (možná o nich ani nevědí), protože je k tomu nic nenutí. A pozor, tady nehovořím o validitě, ale o základních pravidlech, jako například uzavírat otevřené tagy a nekřížit vnořené konstrukce.

I když HTML není programovací jazyk, je to značkovací jazyk pro popis struktury dokumentu, má to velmi mnoho společného. Psaní HTML kódu není programování, stejně jako není (v užším slova smyslu) programování přepisování algoritmů do konkrétního jazyka, je to činnost, která by se dala nazvat kódování, tedy přepis nějakých abstraktních myšlenek do zápisu v konkrétním kódu. A kód má svá jasná pravidla, je to úmluva, která by se měla dodržovat.

K tomuto odstavci patří malé odbočení — HTML je opravdu jazyk pro popis struktury dokumentu. Nikoliv pro popis jeho vzhledu. Přesto někteří stále „definují vzhled pomocí HTML” a ta snaha mi připadá podobná snaze některých „takyprogramátorů” naprogramovat všechno, od databází přes hry po umělou inteligenci, ve FoxPro...

Příklad pro programátory a podobné existence, co znají Pascal — napíšu následující funkci:


function factorial(x:integer):integer;
var f,i:integr;
begin
f=1;
for i=2 to x do f=f*i;
factorial=f;
end;


Jak to, že ten překladač nepochopí, že to „rovná se” je přiřazení jako ve všech jiných jazycích a odmítá to přeložit? Podle teorie Petra Ozogána jsou tedy Borland Pascal i Borland Delphi i FreePascal chybné překladače... Přeci takovou drobnou chybičku měly velkoryse ignorovat, stejně jako jim mohlo dojít, že „integr” nemůže být nic jiného než „integer” a mohly to opravit.

Záměna := za = je zhruba na stejné syntaktické úrovni jako použití LI bez UL. Stejně tak — podobně jako si IE domýšlí konce tagů TR, TD nebo BODY, mohl by si i překladač Pascalu domyslet občas nějaký ten end; Prostě pokud je někde definice funkce a najednou začne další definice, tak asi měla ta první skončit...

Promiňte, ale s takovým překladačem bych odmítal pracovat. Je to jako by za mne někdo doříkával věty. Někdy správně, což není příjemné. Někdy nesprávně, což naštve ještě víc. Odporný zlozvyk!

Ale takové jsou už produkty Microsoftu, dokonce celá jejich obchodní strategie je na tom založena: Jejich produkty se snaží vědět líp než vy, co vlastně chcete, a dát vám to dřív, než to vlastně zjistíte. Stačí se podívat na „automatické opravování pravopisu” ve Wordu. Neznám vlezlejší a otravnější vlastnost. Dokonce si troufám tvrdit, že to je vlastnost na obtíž.


A pokud zajdu ještě dál, tak řeknu, že ty funkce, které „opravují” kód v IE jsou vítány stejným typem lidí jako automatické opravy ve Wordu. {smile}


Zadal Arthur Dent, 24.12.2003 0:39:47, 24 komentářů...,
TrackBack URL tohoto příspěvku je http://blog.maly.cz/tb.php/667

Zpět na článek

HotLinks
Zobrazit komentáře v chronologickém pořadí

souhlas - cezam (web)

100% souhlasim
    

Re: souhlas - Rengen

Nedá se nesouhlasit.
    


nesouhlasím - Radek (web)

automatické opravy ve Wordu jdou vypnout a brát jako chybu, že IE zobrazí všechny stránky správně? to už je anti M$ posedlost. 95% lidí naprosto nezajímá, kde udělal tvůrce stránek chybu, ale spíš jestli se jim stránka zobrazí tak jak chtěli. nevěděl jsem, že si stránky IE takhle upravuje, ale jsem rád, že tu vlastnost má
    

Re: nesouhlasím (já ano) - Lukyn.cz (web)

Mě tahle vlastnost přímo ... (víš co). Kdyby v Microsoftu místo vymýšlení takových kravin raději psali IE pořádně, bezchybně a bez děr.
Teď si vem, že se někdo začne učit HTML a své vědomosti si pak zobrazí v IE, protože nic jiného možná bohužel nezná. Své dílo, s vědomím, že to má dobře, se mu zalíbí a na případné chyby, které třeba udělal, nikdy nepřijde, protože to za něj IE opravil. Pak to pustí na server, někdo si to jeho "dílo" zobrazí např. v Mozille a jak to pak bude vypadat... (Je to jen příklad. Realita bude asi jiná).
    

Re: nesouhlasím (já ano) - chumláček-obláček (web)

Luky,tohle,co jsi popsal je moje realita. -{sad}( [oblacek.bloguje.cz/19029_item.php] celá tahle diskuze a soubor Petrových článků se spustil po napsání mé zkušenosti.Když jsem to tu po 1 hodině v noci četla,byla jsem pevně rozhodnutá už nereagovat a nemíchat se do toho. Už jsem tu hladinu rozvířila moc,ale nedá mi to.Bohužel,musím s tebou souhlasit.A s Arturem.I přesto,že Petra si vážím a chodím k němu na blog ráda.Všechno jsem dělala v IE.Verze 6.Nikdy mne nenapadlo,že jiný prohlížeš by mi to nevzal,nebo s tím nesouhlasil.Mozillu jsem nainstalovala ze zvědavosti,nebo spíš jsem chtěla zkusit,zda se mi podaří snížit výskyt nežádoucích adres a odkazů v mém počítači. [www.bloguje.cz/blogy/oblacek/18641_item.php] Moje soukromé stránky, i galerie smajlíků i stránky, co jsem dělala někomu jinému v IE prošli krásně,vypadali dobře.Jo,ten šok,když jsem se na ně podívala v mozille.-{sad}( Kdyby mi to IE neopravil a nepustil ven,věděla bych od samého začátku,že je to blbě.Takhle jsem "usnula na vavřínech" a probuzení bylo kruté.Proto si po svých zkušenostech myslím,že by se chyby neměli opravovat,ani tolerovat....
    


Re: nesouhlasím - pixy (web)

"... brát jako chybu, že IE zobrazí všechny stránky správně?" Ale to tu přece nikdo netvrdí! Všechny stránky má správně zobrazit každý prohlížeč.

Tady jde o jiný problém - co ještě je a co už není stránka. Jde o to, že "stránka" (neboli dokument jazyka HTML) má nějaké zákonitosti a IE za "stránku" považuje i to, co tyto zákonitosti nedodržuje. Ve své podstatě se totiž IE bude snažit zobrazit i první kapitolu Babičky, asemblerový kód nebo binární data a bude přitom zkoušet tipovat, kde by asi tak mohly být jaký HTML příkaz.

To "vymýšlení si" Exploreru bohužel došlo až tak daleko, že dokonce některé korektní konstrukce přesně podle pravidel HTML přetváří k obrazu svému a zpracuje je jinak, než by autor chtěl...
    


Re: nesouhlasím - IP:213.220.197.141 (web)

kdyby tu vlastnost nemel, tak by si autor chyby vsimnul a opravil ji
    


Re: nesouhlasím - rony (web)

nie to nie je antiMS posedlost.

abstrahuj a pytaj sa:

kod, ktory klepeme, je vlastne ludsky citatelny "zdrojak", ktory by som si mal mat moznost ludsky aj precitat.

zhodneme sa na tom, ze pokial HTML alebo zdrojak v Pascale by nebolo treba neskor si prezriet a analyzovat, tak je zbytocne, aby bol vlastne pisany syntaxou blizkou jazyku cloveka.

Pre iste nedokonalosti strojov je vsak zavedena syntakticka kontrola pri _preklade_ - este raz zdoraznujem: preklade do pocitacom lepsie zrozumitelneho kodu.

Fakt, ze si niektore prekladace domyslaju "co som to vlastne chcel ale nedopisal" je pekna vlastnost, avsak myslim si, ze ciastocne stazuje neskorsiu analyzu. My sa totiz syntax tych jazykov - ci je to HTML alebo Pascal ucime a tam proste su akesi pravidla.

Je lepsie, ak spolupracujeme, alebo si proste len neskor zdrojaky pozerame, aby tam bolo syntakticky co najmenej moznosti ako ten kod zapisat. Nedopovedane casti zdrojoveho kodu, ktore si prekladac domysla nie su tym pravym.

Zhodneme sa na priklade zo zivota, ze pokial nam ktosi verbalne neda najavo, co potrebuje, my sa Sybilami nestaneme a neodhadneme to, mozeme nanajvys tipovat.

viac sa k tomu bavit netreba, zasa tu vyskocil nejaky fanatik, ktory vo vsetkom odrazu vidi antiMS kampan.
    


Prohližeče vs. umělá inteligence - Mirek (web)

Trochu "dělám" do tvorby webových stránek. A tak při návštěvě různých stránek již trpím jakousi "uchýlkou": Automaticky hodnotím design a kód. Klidně se i mrknu do zdrojáku. Jako přívržence Opery mě dokáží vytočit profesionální stránky (myšleno stránky dělané pro velké firmy - banky, atp.), které jsou dělány pouze pro IE (a informaci o tom nikde nenajdete -zjistíte to až když "to" otevřete v IE a objevíte, kolik toho teď můžete dělat (klikat)...BTW: Šťastné a veselé {wink}
    


 - pixy (web)

Přeji ti, Arthure, hodně trpělivosti a pevných nervů při tvém sisyfovském úsilí{wink}
    


 - Petr Olmer (web)

TEN Céčko, je to jazyk... Ne TO ani TA! {big grin})
"Dobrý den, tady sponka. Zdá se mi, že chcete napsat dopis..." Vždyť je to tak milé. {smile}
    

Re: - Arthur Dent (web)

Céčko je TO. Je to normální slovo. Pascal je TEN. Java je TA.

Ale co je HTML? "Hypertext Markup Language", Hypertwextový značkovací jazyk, takže TEN html {big grin}
    

Re: - Roj (web)

Řeč? Tak to musí být jedině TA {smile}
    


Souhlas - HUB (web)

Článek Petra jsem četl ale nepřemýšlel jsem nad vlezlostí microsoftích produktů. Ta automatická oprava je také vynález století a díky bohu že to lze vypnout{wink} Ten IE je to samé akorát že takový "simple user mode" nelze nijak vykopat {sad}
    


Program & hypertex - Petr Ozogan (web)

Ja si myslim, ze je nutne rozlisovat program na strane jedne a hypertext na strane druhe. Program musi byt vzdy spravne, tam neni co resit. Protoze tam musi byt opravdu definovano, jak ma co probihat, kolikrat a s jakymi parametry. Navic je pragram vetsinou staven na konkteretni prekladac, cili kompilator. Jenze hypertext, coz je vlastne HTML kod je vlastne jem popis vzhledu dokumentu. Tam si myslim, ze je nutne pocitat s tim, ze nebude zadani zcea spravne. V takovem pripade je podle me dobre, pokud se pri nalezeni chyby pokusi nalezeny problem sam napravit.
    

Re: Program & hypertex - Arthur Dent (web)

Proč by kód programu měl být OK a dokument ne? Není to trošku podivné?

Navíc - opravdu je kód programu stavěn na daný kompilátor. Proto je možné počítat s výjimkami a odlišnostmi daného kompilátoru. Ale hypertext, právě proto, že nikdo neví, kde se bude zpracovávat, by měl být naprosto a stoprocentně syntakticky správně.

Uvedu příklad: Když budu psát něco pro MS Visual C, tak tam mohu použít kdejaké úchylnosti. Ale když chci zveřejnit nějakou ukázku algoritmu a použiju k tomu C a budu chtít, aby ji přeložil kdokoliv kdekoliv a každý ji byl schopen pochopit, tak jí napíšu v ortodoxně čistém ANSI C.
    


Re: Program & hypertex - Pavel (web)

Prohlížeč má renderovat takový kód, který zná. Pokud jej nezná (například z důvodu chybné syntaxe), měl by ho ingorovat, nikoliv si domýšlet správnou syntaxi. Stránky tvoří jejich autor - ne prohlížeč...
    


mozilla take orpavuje - IP:213.220.197.141 (web)

uz se mi mnohokrat stal pravy opak, tedy ze v mozille vse ok a nasledne mel ie problemy

podotykam ze jedu na linuxu, takze mne snad z nadrzovani tomu jiz dva roky mrtvemu browseru nebude chtit nikdo vinit{wink}

uplne me dostane, kdyz si dam v mozille zobrazit kod a jsou tam tagy, ktere v originale nenajdu
    

Re: mozilla take orpavuje - Arthur Dent (web)

A není to spíš tak, že to Mozilla zobrazí tak jak má a IE naopak dokurví? Už jsem to párkrát viděl... Nechci kategoricky tvrdit, že za to může právě to "domýšlení si" kódu, ale asi to tak bude, viz Pixyho komentář výše.

S těmi tagy, co v originále nejsou - máte nějaký příklad??? Hoďte to někam na web, rád bych to viděl, opravdu rád.

Něco podobného se mi stalo, ovšem bylo to způsobené filtrem na reklamu.

Jo a OT: Taky by mě zajímalo, kdo mrší HTML tagy v mailech tak, že tam vkládá slovo DEFANGED. Ondyno jsem poslal Pixymu kousek HTML kódu, aby mi poradil, kde je chyba, a Pixy mne sprdnul na tři doby, že pokud používám nějaké nestandardní tagy, které nezná, že mi těžko poradí... Jenže problém byl ten, že takové tagy jsem ani já neznal, natož abych je psal. V textu toho mailu je takhle zprasil asi nějaký antispam filtr. {smile}
    

Re: mozilla take orpavuje - Roj (web)

Musim se pripojit, take jsem se uz setkal s tim, ze Mozilla neco opravila. Je to uz davno, bylo to na diskusnim foru znojemskeho hokeje a verse mozilly byla ne vic nez 1.3, ale spis míň.

Pro pana Ozogana mam fantastickou zpravu:
V Praze budou instalovany nove bankomaty znacky Micro$oft. Revolucni na nich bude to, ze budou obdareny umelou inteligenci. Pokud pan Ozogan nebo i nekdo jiny zada spatny PIN, bankomat si sam domysli, jake melo byt spravne cislo!! WOW!!! Prece uzivatele nezajima, ze byla chyba v PINu, uzivatel chce dostat penize! A ty skutecne dostane.
V 90% pripadu se odepisou ze spravneho uctu. Tak co byste jeste chteli, antiMS fanatici?
    


Re: mozilla take orpavuje - met - Martin Hassman (web)

Predpokladam, ze se jedna o oblibeny omyl, kdy si webdesigner nezobrazi zdrojak stranky, ale neco, co se v Mozille (priznam trochu nestastne) nazyva "View selection source".
Je to velmi uzitecna funkce nicmene nefunguje, tak jak si dle nazvu mnozi mysli. Nezobrazi se kus puvodniho zdrojaku (to je z principu nemozne - uz se mohl kolikrat zmenit pomoci document.write a dalsich javascriptovych funkci), ale Mozilla si vezme aktualni DOM podobu stranky a zpetne ji serializuje na text, ktery zakonite nikdy nemusi byt 100% stejny s puvodnim zdrojakem (zkuste si nekdy parsnout XML a zpetne serializovat - je to to same).
Jedna se proste o jiny postup nez kdyz pouzijete poze "View source".

Ma to naopak sve vyhody a clovek to oceni zej. pri ladeni DHTML stranek, nebo XML dokumentu transfomovanych XSLT (muzete videt jak zdrojak puvodniho dokumentu, tak Mozillou transformovany vysledek).
    

Re: mozilla take orpavuje - Roj (web)

Aha! Tak to je urcite ono. Mozna by stalo za to to nejak vic zmedializovat. Ja jsem opravdu doted myslel, ze je tam puvodni zdrojak, jak jej poslal server.
    


Funkce uvnitř funkce - Milda (web)

"Stejně tak — podobně jako si IE domýšlí konce tagů TR, TD nebo BODY, mohl by si i překladač Pascalu domyslet občas nějaký ten end; Prostě pokud je někde definice funkce a najednou začne další definice, tak asi měla ta první skončit..."

Přesně tak, nehledě na to, že definice funkce uvnitř jiné funkce má, na rozdíl od TD uvnitř jiného TD (bez vnořeného TABLE a TR), určitý smysl a zcela jiný význam (vnořená funkce přístupná pouze z této funkce), než kdyby kompilátor doplnil "end;", "}" nebo cokoliv jiného, co končí blok.
    


 - bluemoon (web)

Podle mne struktura nekterych stranek se da tak slozite vytvorit, ze pokud je tam nejaka chyba, prohlizec to tak ... az to neni hezky. Pak se to melo opravit, bez vyjimek. Chtel bych videt ty ... kteri vytvareji standardy pro opravu kodu. Tohle je ciste prace microsoftu, protoze on si furt vymysli novy tagy, novy struktury, novy filosofie, novy jazyky koncici ..ML pro svuj prohlizec.
    
HotLinks
Zpět na článek