Значения кодовой таблицы
Ужас бытия человеческого состоит в том, что ничто существенное не вытекает ни из каких правил, ни из каких законов, оно должно быть конкретно, вот здесь установлено и понято.
Мераб Мамардашвили
В примерах кодовых таблиц, которые мы до сих пор использовали, например табл. 5.5, главное внимание было обращено, прежде всего, на количественную сторону. Теперь настало время рассмотреть качественную сторону кодирования: каким образом поставить в соответствие каждому коду (или каждому двоичному числу) определенные значения из самых разных областей знания.
По сути дела это и есть основополагающая задача при разработке кодовой таблицы – поставить в соответствие друг другу список двоичных чисел (они имеют вполне стандартный вид) и список значений (выделение и сортировка которых чаще всего носят нетривиальный характер).
Нетривиальность вызывает множество вопросов. Какими принципами следует руководствоваться при заполнении правой части кодовой таблицы? Каким образом формируется совокупность значений и в каком порядке они распределяются?
Вспомним наши "эксперименты" с лампочками. В самом деле, когда лампочка не горит – это можно счесть "нулевым значением", а когда горит, то, само собой разумеется, – "единичным".
Пример-метафора
Но ведь возможна и другая точка зрения, когда важнее, чтобы лампочка не горела. Любители отечественной киноклассики могут вспомнить, что в фильме "Бриллиантовая рука" как раз такая ситуация: незадачливым жуликам требовалось, чтобы погас свет в одном из номеров гостиницы "Атлантик", это был знак к началу операции. Таким образом, для них более значимым сигналом (знаком) было не горение лампочки, а, наоборот, отсутствие света.
Можно привести и массу других примеров, в которых одно и то же действие или один и тот же знак (код) имеют совершенно разные значения.
Обратимся снова к табл. 5.4. Почему "нулю" мы поставили в соответствие значение "Да!", а "единице" – значение "Нет!"? Есть ли в этом какая-либо неизбежная логика?
Самый общий принцип заполнения столбца кодовой таблицы, который называется "значения", можно сформулировать так: он заполняется произвольной информацией в произвольном порядке!
Важная мысль
Значения кодовой таблицы определяются логикой предметной области.
Пример 1
Представим, что каждому студенту необходимо присвоить персональный код (то есть, другими словами, составить кодовую таблицу, в которой значениями будут служить фамилии студентов), тогда, прежде всего, необходимо решить несколько вопросов.
Первый вопрос, связанный с количеством строк этой таблицы и количеством разрядов в двоичном коде, решается довольно просто: сосчитать количество присутствующих студентов и экстраполировать это число на определенный исторический период ("на вырост"). Затем рассчитать необходимое количество разрядов и составить список кодов, начиная с кода "00…00" и заканчивая кодом "11… 11".
Гораздо сложнее решить вопрос, связанный с тем, в каком порядке (по какому критерию) составить список студентов. Какой принцип перечисления фамилий следует выбрать: совершенно произвольно, по алфавиту, по успеваемости, по возрасту, по дате рождения… Можно, видимо, придумать еще массу принципов. И у каждого из них есть свои достоинства и свои недостатки. В этом случае мы должны выбрать один принцип, т. е. однозначно договориться о той логике, по которой мы сортируем совокупность значений.
Пример 2
Кодирование широко применяется в базах данных всевозможных товаров. Разрабатываются специальные коды прейскуранта, в которых любой товар получает индивидуальный номер, т. е. цифровой код. Эти прейскурантные коды не очень интересны покупателю, но чрезвычайно важны для изготовителей, для торговли или для ремонтных служб. Для автоматизации ввода кодов изобретена технология штрих-кодов, что представляет собой надстройку кода над кодом, т. е. числовой код кодируется графически, чтобы считывающему сканеру легче было воспринимать информацию из толщин и промежутков между этими линейками. С числами задачу сканирования и распознавания решить было сложнее: нужно очень точно позиционировать площадь считывания (что возможно обеспечить только со стандартными объектами, например коды цифр на почтовых конвертах).
В принципе, мы вольны принять любую систему, даже с полным отсутствием какой бы то ни было очевидной логики. Другой вопрос, будет ли такая кодовая таблица рациональной, удобной и универсальной.
Разберем более простой пример. Предположим, что необходимо закодировать четыре ахроматических цвета: белый, черный, темно-серый, светло-серый.
Каким образом станем действовать? С точки зрения левого (числового) столбца кодовой таблицы проблема решается просто: для четырех значений требуется четыре кода, а для формирования четырех двоичных кодов (двоичных чисел) идеально подходят два разряда (диапазон от "00" до "11").