Рабоче-некрестьянское

А однажды мне пришлось реализовывать стек протокола.

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

Просто в этот раз протокол оказался что надо! Индустриальный (тут должно быть нецензурное междометие)!

Индустриальный протокол семейства ISO там или даже, не к ночи будет помянут, IEC — это Вам не нищебродский RFC793 какой-нибудь. Индустриальный протокол разрабатывали люди от индустрии. Специально обученные и нанятые. За ох большие деньги.  Стало быть, протокол должен быть продуман до последнего сообщения, в нем должны быть предусмотрены абсолютно все вещи, которые только могут понадобится в данной области промышленности, а каждый бит описан и запротоколирован, благодаря чему реализовывать оный должно быть проще, чем два байта об асфальт — знай себе следуй стандарту и дело в шляпе.

По крайней мере в теории. Как мы знаем, в теории разницы между теорией и практикой нет. На практике же…

На практике же сначала оказывается, что индустриальный (а стало быть, практически обязательный к исполнению, если хочешь, чтобы пацаны уважали) стандарт сначала нужно купить. За большие деньги, но дело даже не в этом, а в том, что процедура покупки набора PDF зачастую превращается в квест почище второго Ларри. Затем, по получению документов, может оказаться, что разобраться в ЭТОМ без применения веществ смогут только очень альтернативно одаренные пассажиры. Например, стандарт может оказаться представлен полутора десятком слабо связанных друг с другом PDF, орагнизованными таким образом, что каждый абзац каждого из них будет ссылаться на различные абзацы из всех других PDF (и еще одного отсутствующего) как минимум один раз, причем понять смысл абзаца без прочтения всего материала, на который они ссылаются, будет решительно невозможно. Сами же PDF  будут минимум наполовину состоять из «словарей терминов» и аббривеатур, которые сами по себе ничего не значат, но тем не менее постоянно используются повсюду, в результате чего к прыжкам по ссылкам добавятся постоянные попытки расшифровать, что де эта двенадцатибуквенная аббривеатура означает. Потом, даже если Вам посчастливится разобраться в хитросплетении перекрестных вовсе не гиперссылок, приправленных аббривеатурами и сокращениями, нигде более во Вселенной не встречающимися, понимания, откуда что берется, куда что уходит, зачем нужен вот тот параметер не прибавтися. Зато желание сменить профессию вот прямо сейчас заметно усилится. Соусом послужит непременный набор совершенно противоречивых данных о той или иной фиче, причем противоречия зачастую можно найти в одном и том же предложении.

К этому моменту любой наугад взятый RFC Вам уже покажется если не поэзией Пушкина, то как минимум хорошим захватывающим детективом. Конан Дойлем, например.

В особо пикантных случаях оказывается, что все доступные реализации протокола (читай — устройства и программы, с которыми Ваша софтина должна уметь общаться) были написаны людьми, веществ не принимающих. Поэтому на некоторые особо туманные особенности протокола, которые в стандарте могут быть иногда помечены как опциональные, может быть сложен бааальшущий такой болт. С резьбой. Как Вы можете себе представить, разные реализации могут счесть совершенно разные как необязательные, как и обязательные фичи действительно необязательными к исполнению, в результате чего Вам придется поддерживать вообще все возможные фичи. Даже те, которыми никто не пользуется (то ли потому что никто так и не понял, как ими пользоваться, то ли потому что никто не догнал, зачем).

Вот так и работаем. А что делать?

  1. :))))))))))
    Чёрт, как это знакомо. Я, правда, по роду деятельности более простые задачи решал, но с документацией — та же самая фигня.

  2. Ты знаешь, документация — это такая вещь. Когда она плохая, это все же лучше, чем ничего.

    Но индустриальные протоколы — это жесть.

  3. Мне тут знакомый недавно жаловался, что надо ему написать драйвер связи с железкой, которая уже два года не выпускается и фирма-производитель обанкротилась. В наличии имеется хреновая ксерокопия какого-то подобия мануала и ещё на месяц дадут девайс подержать. Но драйвер этот надо написать ДО ТОГО. 🙂 Впрочем, я его успокоил, что не ему жаловаться — протокол действительно дюже простой — вопрос-ответ.
    Со всеми этими хитровыебанными протоколами самая жопа, что их специально делают, чтобы потом продавать. Взять тот же OPC — ну с какого бодуна они это сделали поверх COM? Блин, просто из-за того, что такое время было получился-таки де-факто стандарт. Ненавижу. 🙁
    Впрочем, мне вообще пофиг сейчас. Сижу пишу на Дельфе простейшую базаду. 🙂 Правда, уже начинает надоедать. 🙁

  4. Ой. OPC — это ж даже не стандарт, а посмешище.

  5. Ну насчёт посмешища не знаю (всякие …инженерА (как говорил один мой знакомый) который знают часто только Бейсик, очень его любят) — свои функции более-менее выполняет, но глючит самым мистическим образом!

  6. У OPC есть двоюродный брат — UPOS.
    Функции свои что один, что другой, выполняют, к своей чести.

    Но вот тот факт, что к их появлению приложила руку малоизвестная софтверная конторка как раз не делает им чести.

    Фишка в том, что это не стандарты в хрестоматийном смысле.

  7. Фишка в том, что это жопа в самом хрестоматийном смысле. 🙂 Желающих на роль OPC тоже много, но вот де-факто самое распространённое промоборудование так или иначе может цепляться через него. 🙁 Хотя да — какого-нибудь комитета по нейпоми чему в его развитии явно не хватает. 🙂

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

9 посетителей онлайн
5 гостей, 4 bots, 0 зарегистрированных
Максимум сегодня:: 20 в 12:49 am UTC
В этом месяце: 53 в 09-21-2021 08:53 am UTC
В этом году: 248 в 07-26-2021 10:24 am UTC
За все время: 332 в 11-22-2019 03:23 am UTC