Xpoint
   [напомнить пароль]

Семантика разметки и вокруг. Для кого?

Метки: [без меток]
2009-11-01 21:13:28 [обр] Илья Cтpeльцын aka SelenIT(3/171)[досье]

Кому важен "здравый смысл" в веб-разметке, вокруг которого нынче столько споров по интернетам? Особенно в связи с приближением HTML5, вводящим кучу "семантических" элементов, точное назначение и разницу между которыми никто так и не может толком объяснить... :)

Людям или программам? Обычным или находящимся в особых, ограниченных условиях (хилые мобильники, скринридеры для слепых и т.п.)? Например, "вертикальная полоса сбоку со всякой второстепенной ерундой, типа баннера" — можно ли назвать это "семантикой" сайдбара (если именно так его воспринимает X% аудитории) или это чистой воды "презентационка"? И кстати, существует ли "семантика CSS" (это к вопросам о допустимости табличного отображения блоков и т.п.)? Ради чего оформлять горизонтальное меню именно списком (воюя с его дефолтными стилями), а не просто строкой ссылок с куда более близким к нужному дефолтным представлением, в чем смысловой выигрыш? Есть ли более-менее общепринятые рекомендации и критерии (о стандартах тут, как я понимаю, пока речи нет) для пресловутого "POSH", или он почти целиком сводится к вкусовщине? Микроформаты — конечно, лучше чем ничего, но все-таки это частные случаи для очень ограниченных областей. А как быть с более общими вещами? Взять хотя бы частую тему для споров — календарь, список это или таблица? Или зависит от ситуации — опять же, по каким критериям? Могут ли "семантики" одного элемента для разных подмножеств аудитории сайта вступать в противоречие между собой, и если да — как такие противоречия разруливать, чьим интересам отдавать предпочтение?

Предлагаю устроить небольшой мозговой штурм по подобным "детским" вопросам. Авось и выработаем единую конструктивную программу, которую не стыдно будет внести в базу знаний и пропагандировать по всему миру. И в любом случае, надеюсь, из такого обсуждения многим найдется, что вынести для себя полезного.

спустя 4 часа 6 минут [обр] Thirteensmay(3/157)[досье]
Кому важен "здравый смысл" ? Людям или программам ? Обычным или находящимся в особых, ограниченных условиях (хилые мобильники, скринридеры для слепых и т.п.) ?
А вот рекомендую почитать вам знаменитую книжку: Стюарт Рассел, Питер Норвиг - Искусственный интеллект: современный подход, и подумать, кто такой автор, где работает, что за контора такая, чем занимается, и не пропихивает ли случаем стандарты... В совокупности с содержанием местами аж не по себе становится ;) Вы таки почти угадали, программам, только не обычным, и не хилым, а самым что ни на есть страшным ;) Дело в том что человеку тот уровень семантики который последнее время насаждается не нужен, мы пока еще "умнее" программ, нам достаточно разумных наименований, если скажем вы будете называть объекты и методы "по человечи", то разобрать такой код человеку, будет не сложно, даже если весь он на основе одного единственного структурного элемента, например div, мы то все прекрасно поймем, за счет своего интеллекта/багажа знаний, а вот машине будет тяжело, не достигли пока необходимого уровня производительности, "хитрости" алгоритмов, и соответствующего качества баз знаний. Но народ работает над этим, и результаты вполне себе уже есть, причем роют во всех направлениях, кто то улучшает сами машины, а кто то среду их обитания, а ктото даже не догадываясь об этом ;) Подумайте чем может являться современный web не для человека а для машины, чего им не хватает, как это обеспечить, кому выгодно...
спустя 14 часов [обр] Илья Cтpeльцын aka SelenIT(3/171)[досье]
Thirteensmay[досье], спасибо за ссылку, поизучаю. А можно ли навскидку привести примеры таких "страшных интеллектуальных ботов" (SkyNet 0.01b? ;) в сегодняшней реальности? И насколько существенна их роль в сегодняшнем вебе, в сравнении с ролью пользователей обычных визуальных браузеров? И опять же, если эти боты такие умные — почему для них так критично, чтоб меню было именно списком ссылок, а не просто строкой таковых, в чем "особая разметочная магия"?
спустя 5 часов [обр] GRAy(2/259)[досье]
Илья Cтpeльцын aka SelenIT[досье]Google, yandex, bing... продолжать? Они же хотят услуги на этом строить ну или повышать качество уже существующих.
спустя 2 часа 56 минут [обр] Thirteensmay(3/157)[досье]

Ну, SkyNet не SkyNet а поисковики этим пользуются, еще к примеру недавно слышали наверное, анонс нового поисковика, даже не поисковика а скорее решателя, ну там математик какойто известный за ним стоит, чтото помниться маткад он чтоли делал, забыл к сожалению как называется, вроде как даже запросы к нему на естественном языке можно, ну это все конечно туфта, как впрочем мне показалось и он сам, суть не в этом, а в том что база для него набивалась как было сказано в релизе в т.ч. и парсингом интернета, это вообще на сколько я знаю для "интеллектуальных" систем частый подход. Еще припоминается ситуация, тоже уж запамятовал, толи с яху толи с AOL, когда они бота специального на ресурсы клиентов насылали, определяли специализацию и потом впаривали им соответствующую рекламу, а самый страшный "интеллектуальный" бот вон у меня в трее болтается - касперский, то ссылочка ему не нравится, то вообще "подозрительное содержимое", вообще я не специалист в данном вопросе, так сторонний наблюдатель, спросите у спецов, думаю они вам и конкретные программы укажут и результаты, хотя часто это довольно щекотливый вопрос.

Роль таких систем, хотя бы как минимум специализированных поисковиков-анализаторов, в современном вебе думаю уже существенна, и она будет только расти, а вот роль пользователей... кхм, а причем тут семантическая верстка ? или вы имели ввиду верстальщиков ?

Боты они какраз не такие умные как может показаться, поэтому им семантикой разжевывать и надо. В книжке которую я вам привел делается упор на интеллектуальных агентов, в свете web это фактически специализированные поисковики-анализаторы, скажем вам нужен перечень наиболее часто упоминаемых в постах пользователей продуктов, очевидно что в шапке, навигации, меню и рекламе их искать не стоит, а вот если нужно распознать структурный скелет сайта, выделить разделы, например с целью дальнейшего его разложения, то напротив, первое что имеет смысл смотреть это меню, вот тут то вам такие агенты и помогут. Для них не критично чтоб меню было именно списком ссылок, это неправильно и даже вредно, потому что меню это не список ссылок. Просто в существующих стандартах лучших решений нет. Критично чтобы меню было хоть как то выделено, желательно единообразно, но при этом отличалось от др. блоков ссылок, чтобы его можно было распознать. Почитайте про HTML5 c его <menu> и <nav>. Особая разметочная магия только в этом в основном и заключается - сделать страницу максимально семантически распознаваемой.

Вообще идея "интеллектуальных" ботов может конечно и основная, но не единственная причина, на самом деле конечно и людям проще, и хилым железкам (хотя они тоже фактически являются агентами), но это imho все же весьма и весьма вторично.

спустя 13 часов [обр] Илья Cтpeльцын aka SelenIT(3/171)[досье]

Значит, основные потребители семантики — поисковики? Выходит, не так далека от истины была моя шуточная догадка (слегка "отхабренная" на соотв. ресурсе:), что "семантику разметки" правильнее интерпретировать как "SE-мантику" (от слов "поисковики" и "гадание";)?

По поводу HTML5 как раз многие жалуются на нечеткость формулировок назначения этих новых смысловых контейнеров. В общем, с точки зрения "SE-мантики" понятно, что лучше всего ключевикам быть в article, желательно в его hgroup, а не в тех же nav и aside (зато в aside, особенно на верхнем уровне, может быть фактически что угодно — в Сети, как и в попсовой экологии, всё связано со всем, тем более "tangentially"). Но это тоже показатель довольно условный (вон, некоторые "умельцы" умудряются ключевики даже в доктайпе прятать, что ж про структурные теги говорить:). А menu — это вообще про другое, насколько я в курсе. Для самой же основной навигации же (внутри контейнера nav) даже официальная спека HTML5 упорно советует всё тот же "неправильный и даже вредный" неупорядоченный список ссылок. Что это — просто исторически сложившаяся традиция или что-то большее?

Вообще стремление к семантизации страниц как способ "помочь недостаточно разумным поисковым ботам" — это чисто эмпирическая область (некий синтез реверс-инжиниринга секретных алгоритмов поисковиков методом "научного тыка черного ящика" и... "мантики" в чистом виде)? Или у поисковиков есть свои рекомендации? Если так — почему те же разработчики HTML5 с таким трудом выдумывают что-то свое, а не опираются на эти рекомендации? Или же сам HTML5 (часто критикуемый как чуть ли не единоличное творение Иэна Хиксона, ныне сотрудника Google)... и есть свод таких рекомендаций, ненавязчиво предлагаемый разработчикам страниц?

Просто в существующих стандартах лучших решений нет

Наверняка в этом главная причина всех нелогичностей. Но как и по каким критериям делят реальные (и работающие) нелогичные решения на большее и меньшее зло, на приемлемые и неприемлемые, на семантичные и антисемантичные? Почему многострадальный список годится для меню, но не годится для структурных блоков страницы (шапка, контент, подвал...) — они ведь тоже последовательное перечисление (и кое-кто так их и размечает)? Или это тоже исключительно "мантика", основанная на апелляции к "здравому смыслу", который у всех свой (и, увы, не у всех здравый)?

спустя 9 часов [обр] Thirteensmay(3/157)[досье]

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

Не знаю что вы имели ввиду по поводу меню, очевидно что в общем случае это весьма семантичный тег, гораздо более чем nav, с четким смыслом и достаточно широкой областью применения, однако если на него навесить уши мертвого ослика, не дать нормальной поддержки со стороны CSS/JS, то народ конечно станет пользовать для меню nav, что в общем то не разумно.

Внутри контейнера nav "неправильный и даже вредный" неупорядоченный список белеет и покрывается пухом, т.к. отдает чрезмерную не специфичную себе семантическую нагрузку nav, а сам становится ровно тем что он есть, ничему не мешая, при этом сохраняется совместимость, старые анализаторы и подходы продолжают работать, таки можно сказать что это исторически сложившаяся ситуация.

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

Деление на семантичное и антисемантичное как правильно вы заметили основывается на "здравом смысле", но никакой "мантики" тут нет, потому что расхождения допускаются в принципе, другое дело что они не должны быть слишком велики, настолько чтобы не вписываться в понятия значительной для проекта части общества. Апелляция к здравому смыслу здесь вполне уместна, т.к. "здравый смысл" с разрешения сказать, вещь такая же "вероятностная" как и сама семантика, главное что оно работает, за счет того что человечество имеет множество общих точек соприкосновения и некий единый контекст. Нука покажите мне человека который не понимает почему список не годится для структурных блоков страницы, только в школу ходить не надо, хотя думаю и там большинство этот вариант отвергнет.

спустя 29 минут [обр] Василий Свиридов(0/175)[досье]
ну там математик какойто известный за ним стоит, чтото помниться маткад он чтоли делал, забыл к сожалению как называется, вроде как даже запросы к нему на естественном языке можно
Thirteensmay[досье]Это вы про Wolfram-Alpha?
спустя 17 минут [обр] Thirteensmay(3/157)[досье]
Василий Свиридов[досье] Ага, точно ;)
спустя 13 часов [обр] Илья Cтpeльцын aka SelenIT(3/171)[досье]

Thirteensmay[досье], насколько я понимаю, навигация (nav) — это то, куда можно уйти с данной страницы сайта (или, точнее, с данного места страницы). Вроде былинного камня на распутье: направо пойдешь — богатым будешь (ссылка на онлайн-казино), налево пойдешь — женатым будешь (ссылка на "картинки для взрослых"), прямо пойдешь — ум потеряешь (ссылка на холивор по семантической разметке :). А меню (menu) — это элемент интерфейса приложения (тулбар, контекстное меню или "не они, но что-то близкое"), в котором содержатся команды, позволяющие сделать что-то прямо здесь, никуда не уходя. Как реальное меню в Макдональдсе :). Могу ошибаться, спрошу на всякий случай у "HTML5-докторов"...

Выходит, особая разметочная магия nav берет на себя всю семантическую нагрузку, превращая все ссылки внутри себя в навигационные — независимо от того, оформлены ли они списком, таблицей или просто "валом"? И весь "POSH" внутри нее автоматически утрачивает свое "S" (оставшимися буквами как бы намекая?.. ;)

Пример списка для каркаса страницы — пожалуйста (с 61 согласным проив лишь 16 несогласных! :).

спустя 11 часов [обр] Thirteensmay(3/157)[досье]

Конечно nav говорит что внутри навигация, элементарно, для новых систем которые это понимают старая перегруженная семантика утрачивается, остается только родная, т.е. список ссылок становится просто списком ссылок, а не бог знает чем еще, в навигационном контейнере это будет список навигационных ссылок, в aside - связанных по смыслу, в div - просто список, того чего он есть.

По поводу menu все правильно, изначально мы про меню говорили поэтому я его и упомянул, элемент интерфейса приложения - неплохо сказано, хотя "сделать что-то прямо здесь, никуда не уходя" - по моему перебор. Кроме семантики интерфейса приложения (что мне кажется чуть жестковато, потому что кроме приложений есть еще интерактивные документы), явной чертой menu является интерактивность. Если скажем <link> не интерактивно, то <а> уже вполне, но жестко, <a href="js... или <a href="#" onclick=... очевидно не семантично, menu решает эту проблему, хотя часто и жирно.

По поводу примера, Э... где вы насчитали 61 согласного ?, ну парочка чудиков конечно всегда найдется, но абсолютно подавляющее большинство против, издеваетесь ?
В чем на мой взгляд ошибка автора, вот его основной тезис:

Div'ы не могут отобразить структуру документа, для этого семантически более подходят списки, потому как они, в отличие от div'ов передают иерархию и связи

Ну по поводу того что div не могут отобразить иерархию и связи умолчу, тут за очевидной глупостью комментировать нечего. А вот с вопросом семантичности разберем подробнее: Div семантически нейтральны, это конечно хуже чем четкие nav, aside и т.п., но лучше списков, ибо тогда вся страница становится списком, что в подавляющем большинстве случаев семантически абсолютно не корректно. Сложный документ и список - разные вещи, то что документ можно представить в виде списка вовсе не означает что он им является. Таже ситуация что и с таблицами, и именно по этому их признали не семантичными. Разве можно например сказать что такие вещи как сертификат или паспорт являются таблицами или списками ? Тут не надо извращаться, как мы уже выяснили нужен просто здравый смысл.

спустя 6 часов [обр] Илья Cтpeльцын aka SelenIT(3/171)[досье]

Перечитал я "HTML5-докторов"... оказывается, про путаницу "nav vs. menu" они уже вскользь упомянули:

We thought it best to clarify that <menu> is to be used for a list of commands and is an interactive element and more likely to be used exclusively in Web Applications.

Как я и предполагал. Где-то встречал удобное (имхо) мнемоническое правило: ссылки — это существительные (первичен объект по ссылке), а команды (в HTML традиционно представляемые кнопками) — глаголы (первично выполняемое действие, а с каким объектом оно выполнится — второстепенно и может зависеть от контекста). Имхо, хороший пример списка команд — тулбар визивиг-редактора (там даже имена JS-функций, как правило, соответствующие — execCommand(что_то) :). И современным поисковикам, имхо, в этой сверхинтерактивной семантике ловить особо нечего — разве что сравнивать функциональность однотипных интерфейсов (грубо говоря, считать кнопочки тех же визивигов, у кого больше), это семантика чисто для людей (?). Ну еще для мобильных клиентов типа Оперы Мини, может быть — повод поискать альтернативный путь реализации команд (JS на сервере)...

В примере с Хабра я тупо считал голоса за топик, их действительно 61 "за" и 16 "против" (итого +45, если навести мышку на эту цифру внизу топика, виден детальный расклад). Правда, в оригинальной статье (2007 года) есть занятный последний абзац, где автор раскрывает карты — отказ от div был преимущественно для привлечения внимания, сам автор не советует использовать такую разметку в реальных проектах. Но факт неочевидности выбора (то, что аргументы за список тут есть в принципе, даже если вдумчивый анализ и разбивает их в пыль) уже в состоянии запутать новичка. И немало "извращений" получаются как раз от желания сделать как лучше...

На интуитивном уровне напрашивается бытовой критерий а-ля "если что-то явно является блоком текста, но не заголовок, не таблица, не абзац, не блочная цитата, не адрес, не список и не форма — значит, это div" (ну и аналогично, если это не блок и при этом не ссылка, не смысловое ударение и т.д. по списку строчных элементов — значит, span). Но возникает масса пограничных споров навроде "а календарь — это список дней или таблица 7×x?" (причем, насколько я в курсе, у приверженцев обеих позиций есть немало здравых аргументов). Еще дилемма, которую часто приходится решать мне — список dl/dt/dd (ну нравится он мне, нравится:) против обычного ul/li с заголовками в каждом li. В старых стандартах-то dl особо воткнуть было некуда, кроме как по изначальному назначению (словарик), но расширение его трактовки в HTML5 то и дело вводит в соблазн :).

спустя 18 часов [обр] Thirteensmay(3/157)[досье]
Семантика menu какраз и может сказать поисковикам что тут им делать нечего, в список ссылок они могут полезть, а так проблема решается. Неочевидность выбора конечно неприятна, это плата за гибкость, но лучше уж так чем строем ходить, тем более вдумчивый анализ как правило помогает.
спустя 9 часов [обр] Илья Cтpeльцын aka SelenIT(3/171)[досье]

В menu, насколько я понимаю, и списку ссылок делать нечего (от силы пара штук — "Help" да "About", как в примере из спеки). Делать кнопки через <a href="#" onclick="doStuff();return!1"> вместо нормальных <button type="button" onclick="doStuff()"> вебмастера повадились не от хорошей жизни, а по вине браузерописателей, до сих пор не позволяющих эти "баттоны" толком стилизовать без перенапряжения (ну и наследие HTML3-, где ссылка была едва ли не единственным вообще интерактивным элементом, до сих пор дает о себе знать). Вообще вопиющее противоречие между дефолтным видом браузерных контролов и преобладающей модой в дизайне — бич нашего времени :).

Я против хождения строем, но я за минимальные правила, чтоб можно было четко, с одного взгляда различить тротуар и проезжую часть, а на той — свою полосу от встречки :). Анализ, конечно, хорошо, но... не всегда на него есть время, да и того, что называют "analysis paralysis" (особенно если нужно найти консенсус в коллективе с разными взглядами на семантику:) хотелось бы избежать. Сейчас я таких правил не вижу вообще, в HTML5 налицо стремление к ним, но, судя по нынешним спорам вокруг их толкования, этого как-то маловато...

спустя 47 минут [обр] Илья Cтpeльцын aka SelenIT(3/171)[досье]
Пардон, что-то есть и сейчас. На самой основополагающей страничке этого самого POSH предлагаются аж целых три паттерна (один из которых, про библиографию — очевидное следствие из спецификации, а еще один, с именем автора комментария в <cite>, в HTML5 рискует стать невалидным, хотя лично я считаю такое ограничение ошибкой) и примерно столько же (ну, чуть больше) "как бы микроформатов, да не совсем" для очень специфических вещей (оказывается, для форумно-социальных "аватарок" 80×80 между делом сочинили целую отдельную спеку... вот же свободного времени у людей:). Это за как минимум два года развития этого понятия и как минимум 7 лет существования последнего апдейта базового стандарта (второй редакции XHTML 1.0). Неужели всем на самом деле на эту "S" в аббревиатуре, извиняюсь за грубый каламбур... те оставшиеся буквы? ;)
спустя 2 месяца 1 день [обр] tar729[досье]

знакомые все лица...

прошло 5 лет...

Powered by POEM™ Engine Copyright © 2002-2005