Most recent comments
Liveblogg nyttårsaften 2017
Tor, 11 months, 3 weeks
Jogging og blogging
Are, 1 year, 11 months
Liveblogg nyttårsaften 2016
Are, 1 year, 11 months
Reading in dark times
Are, 2 years, 1 month
Moldejazz 2016
Camilla, 2 years, 4 months
Dørskilt
Karoline, 2 years, 5 months
Halifax
Tor, 2 years, 6 months
Sony Smartwatch 3 review
Tor, 2 years, 6 months
Numerikk, takk
Tor, 2 years, 6 months
Topp tur
Camilla, 2 years, 8 months
50 book challenge
Camilla, 11 months, 3 weeks
Ten years ago
Musikklinjas julekonsert 2008
Camilla
Controls
Register

fail silently

Jeg har sagt det før, og jeg sier det igjen. Html og css er noe svineri. La meg sitere fra «The Zen of Python», av Tim Peters (for å lese resten, åpne en python prompt og skriv import this)

Errors should never pass silently.
Unless explicitly silenced.


Og der har vi antagelig mesteparten av grunnen til at jeg ikke liker html og css. Hvis du gjør noe feil stopper den nemlig ikke opp og forteller deg at det er feil, slik som et skikkelig språk gjør. Den sprenger ikke engang i ansiktet ditt, slik fortran kan finne på. Nei, den prøver etter beste evne å glatte over feilen. For å ta et eksempel:

<i><blockquote>hei</blockquote></i>


Dette er ikke gyldig html, fordi blockquote er en block-level tag, mens i er en inline tag, og du kan ikke putte en block-level tag inni en inline tag. Men alle nettleserne skjønner hva du mener, og resultatet blir antagelig som forventet. Og akkurat i dette tilfellet er det sikkert greit nok, men i mer kompliserte tilfeller, der det begynner å bli rom for tolkning, støter vi på problemer.

Her må jeg nesten ta en liten digresjon. Html, i likhet med andre språk, er ikke en ting. Det er ikke et program som heter html, for eksempel. Html er en standard (eller egentlig en bråte med standarder), som er et dokument som beskriver hvordan resultatet skal se ut når man bruker ulike deler av html. Men med standarden alene blir det ikke noe fres. Derfor har vi også nettlesere, som er programmer som kan lese html, og konvertere det til en nettside man kan se. Digresjon ferdig.

Når jeg sier at nettleseren skjønner hva du mener når du skriver ugyldig html er det naturligvis ikke html sin feil, men derimot de som skrev nettleseren. Html-standarden spesifiserer neppe (håper jeg, jeg har ikke sjekket) at ugyldig html skal være tillatt, men det er det altså som regel. Problemet da er at når standarden ikke gjelder, er det mer opp til hver enkelt hvordan man skal tolke resultatet, og når man begynner å rote seg bort i litt mer intrikate feil betyr det at resultatet fort kan bli at man får opp noe som ser helt feil ut, men der det ikke er åpenbart hvor feilen ligger, for ikke å snakke om at resultatet kan se helt forskjellig ut i forskjellige nettlesere. Alt dette kan bidra til å gjøre det til et aldri så lite helvete å finne små tullefeil i html og/eller css. Feil man lett hadde oppdaget hvis nettleseren hadde gjort det eneste riktige, nemlig å sprenge i ansiktet ditt med en gang den fant en feil. Eventuelt fortalt deg hvor feilen ligger.

Så hvorfor gjør ikke nettleseren det? Vel, hvis man skal lage en nettleser i dag vil det være et meget dårlig bissniss-avgjørelse å ikke vise sider med feil i kildekoden. Jeg gjetter forsiktig på at 95% av alle sider på nettet har en eller flere (helst flere) feil i kildekoden (bare gå til validator.w3.org, og putt inn adressen til en side du tror er bra, så får du se), så før man kan begynne å være streng har man et arbeid å gjøre. Jeg vil imidlertid også gjette på at denne situasjonen har oppstått fordi nettlesere er så sloppy med hva de tillater, skjønt det er mulig jeg har feil, og at den egentlige grunnen er noe med manglende standarder i gamle dager og slikt. Uansett, det eneste som kan redde oss er xhtml, servet som application/xml, for da sprenger det faktisk i ansiktet ditt om du har en aldri så liten feil. Men personlig har jeg mer tro på html5. Utdyping følger kanskje senere.

-Tor Nordam
Jørgen likes this

Comments

Camilla,  07.01.11 12:45

Jeg har hørt rykter om dette i flere år nå, føler jeg. Kommer det snart?
Tor,  07.01.11 16:29

* First W3C Working Draft in October 2007.
* Last Call Working Draft in October 2009.
* Call for contributions for the test suite in 2011.
* Candidate Recommendation in 2012.
* First draft of test suite in 2012.
* Second draft of test suite in 2015.
* Final version of test suite in 2019.
* Reissued Last Call Working Draft in 2020.
* Proposed Recommendation in 2022.

fra blogs.techrepublic.com.com/programming-and-development/?p=718
Camilla,  07.01.11 16:30

Det er en stund.

Are,  07.01.11 20:58

Konge at du skriver om programmeringsting, Tor!

Fail silently er noe av det verste jeg vet. Jeg sitter jo i feilrettingsfasen på prosjektet nå, og det skjer innimellom at noe helt uforståelig skjer, og etter en lengre feilsøkingsprosess ser vi at den egentlige feilen skjedde lenge før - kanskje flere uker i forveien - men passerte i stillhet og lå der bare som utgangspunkt for en ny feil.... Ahhhrg!

HTML5 er her vel, det, men jeg vet ikke om nettlesere har blitt noe strengere på å

Are,  07.01.11 20:59

Konge at du skriver om programmeringsting, Tor!

Fail silently er noe av det verste jeg vet. Jeg sitter jo i feilrettingsfasen på prosjektet nå, og det skjer innimellom at noe helt uforståelig skjer, og etter en lengre feilsøkingsprosess ser vi at den egentlige feilen skjedde lenge før - kanskje flere uker i forveien - men passerte i stillhet og lå der bare som utgangspunkt for en ny feil.... Ahhhrg!

HTML5 er her vel, det, men jeg vet ikke om nettlesere har blitt noe strengere på å tolke det. Hvis man kan skrive shabby HTML5 og slippe unna med det er vi jo nesten like langt.
Tor,  07.01.11 23:55

Jeg skrev et svar, men det ble litt langt, så jeg postet det som en artikkel: (X)HTML
Tor,  07.01.11 23:57

Stemmer det at du produserte den dobbeltposten ved å submitte ved et uhell, og så trykke back, i stedet for å trykke rediger? Jeg trodde jeg hadde tatt grep for å unngå dobbeltpostingsproblemet, men det er tydeligvis ikke idiotsikkert (høhø).

Are,  08.01.11 18:36

Ojsann, det la jeg faktisk ikke merke til. Det kan godt stemme at det var sånn det gikk til!

Noe litt annet - jeg ønsker meg at innloggingssiden sier "Oh dear, it seems the password you entered has a slight mismatch with our records. Could you please give it another go?" heller enn "Wrong!" ;)
Category
Technology
Tags
html
programmering
css
xhtml
Zen of Python
Views
2502