Code is Code

17th March 2004 - 22:55

Несколько слов о том, почему я не считаю себя фанатом валидатора (навеяно наблюдениями за автором одного блога).

С чем только не сравнивали HTML, я тоже позволю себе небольшое сравнение. С PHP (не удивлюсь, если окажется, что я не первый).

<?php
  echo 'Hello, World!'
  echo 'Good bye!'
?>

Parse error: parse error, unexpected T_ECHO, expecting ',' or ';' in c:\apache\htdocs\hello.php on line 3

Можно сказать, что интерпретатор PHP в данном случае играет роль валидатора, указывая на ошибку в коде. Точно также валидатор w3c включит сирену при скармливании ему специального символа, обделённого точкой с запятой:

<p>&quotHello, World!&quot</p>

Однако, здесь есть один нюанс. Если в случае PHP код не будет работать вообще, то в случае (X)HTML возможны три варианта:

  • Браузер сам «добавит» забытый символ и мы увидим фразу "Hello, World!" (IE)
  • Браузер не станет делать работу, входящую в обязанности кодера, и фраза будет выглядеть следующим образом: &quotHello, World!&quot (Opera, Mozilla)
  • При определённых обстоятельствах (application/xhtml+xml) браузер скажет: «XML parsing failed: not well-formed» и либо покажет кусок страницы вплоть до места ошибки (Opera), либо не покажет ничего кроме сообщения об ошибке (Mozilla). Про IE молчу.

Это, кстати, первая причина того, почему стандарты сосут. Есть браузер(ы)…™

…И не только браузеры. Например, разработчики RSS-readers часто пишут свои парсеры для того, чтобы пользователь смог насладиться чтением «инвалидных» фидов.

Так вот. Быть фанатом валидатора в этом контексте — всё равно что быть фанатом работающих PHP-скриптов. Они должны работать априори.

Идём дальше.

Можно написать так:

<?php

$text = 'validate this page';
$words = array();

$text .= ' ';
$i = 0;

while ( stristr($text, ' ') ) {
  $words[$i] = substr($text, 0, strpos($text, ' '));
  $text = substr($text, strpos($text, ' ')+1);
  $i++;
}

print_r ($words);

?>

А можно по-другому:

<?php

$text = 'validate this page';
$words = array();

$words = explode(' ' , $text);

print_r ($words);

?>

Работает? Да. В обоих случаях? Да.

Код, прошедший испытание валидатором, и хороший код — две разные вещи. Банальность, столь яростно отрицаемая некоторыми. Иногда можно увидеть страницы, которые не выдержат испытания валидатором, но дадут фору тому супу, в котором плавают div-span, id-class, забытая логика и «стандартная» кнопка. Суп с другими ингредиентами может оказаться таким же несъедобным, а то и хуже.

Валидатор — программа, пуля — дура. В этом контексте быть фанатом валидатора просто глупо, у него другие задачи.

И, наконец, старая песня «Content Is King». Страница, содержащая ценную информацию, всегда будет пользоваться спросом, какой бы безобразно-рвотно-отвратительной она не была с точки зрения стандартов в общем и валидатора в частности.

PS. Все аналогии высосаны из пальца, ни один кролик не пострадал.

Categories: Web-билдинг | comments: (2)

Комментарии

1. РезиновыйЗапаЛ 18th March 2004 - 00:04

Молодца!!!
Считай, что я рядом и чуть в стороне. Но с тобой:)

PS. Не верьте ему, люди про непострадавших. Я видел тот палец, из которого он сосал. Жуткое, скажу вам, зрелище.

2. ganges 18th March 2004 - 12:12

Ну да, ты совершенно прав, дааа, CSS -«спозиционированная» страница с внешней таблицей (таблицами) стилей и семантически вменяемой («вменяемой» — хорошее слово, правда?) разметкой, состоящей из простейших (X)HTML тегов. Работает во всех клиентах и принтерах отлично. Валидная, но «лабуда» типа CSS хаков добавляется токмо ради терапии Иксплорера (в основном), да и то, имхо, если пытаться с точностью до пикселя, что не всегда разумно/хорошо/возможно. Ошибиться в простейшем коде трудно, а валидатор и нужен для того, чтобы указать тебе на пропущенную запятую или несоответствие доктайпу.

Совсем «другая разница», когда через тот же валидатор пропускают «суп» из таблиц и выравнивают потом минорные ошибки и считают что да, вот теперь сайт «валидный». Об этом что-то про «дух и букву стандартов» на алистапарте было.

Mash:

Про alistapart не знаю, но вот неплохая подборка ссылок: Validate This Page!

Выражаясь другими словами, валидатор — желательное, но не достаточное условие. Почему-то до некоторых это туго доходит.

Комментарии временно отключены.