Иллюстрированный самоучитель по Digital Graphics

         

Значения кодовой таблицы


Ужас бытия человеческого состоит в том, что ничто существенное не вытекает ни из каких правил, ни из каких законов, оно должно быть конкретно, вот здесь установлено и понято.

Мераб Мамардашвили

В примерах кодовых таблиц, которые мы до сих пор использовали, например табл. 5.5, главное внимание было обращено, прежде всего, на количественную сторону. Теперь настало время рассмотреть качественную сторону кодирования: каким образом поставить в соответствие каждому коду (или каждому двоичному числу) определенные значения из самых разных областей знания.

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

Нетривиальность вызывает множество вопросов. Какими принципами следует руководствоваться при заполнении правой части кодовой таблицы? Каким образом формируется совокупность значений и в каком порядке они распределяются?

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

Пример-метафора

Но ведь возможна и другая точка зрения, когда важнее, чтобы лампочка не горела. Любители отечественной киноклассики могут вспомнить, что в фильме "Бриллиантовая рука" как раз такая ситуация: незадачливым жуликам требовалось, чтобы погас свет в одном из номеров гостиницы "Атлантик", это был знак к началу операции. Таким образом, для них более значимым сигналом (знаком) было не горение лампочки, а, наоборот, отсутствие света.

Можно привести и массу других примеров, в которых одно и то же действие или один и тот же знак (код) имеют совершенно разные значения.

Обратимся снова к табл. 5.4. Почему "нулю" мы поставили в соответствие значение "Да!", а "единице" — значение "Нет!"? Есть ли в этом какая-либо неизбежная логика?



Самый общий принцип заполнения столбца кодовой таблицы, который называется "значения", можно сформулировать так: он заполняется произвольной информацией в произвольном порядке!

Важная мысль



Значения кодовой таблицы определяются логикой предметной области.

Пример 1

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

Первый вопрос, связанный с количеством строк этой таблицы и количеством разрядов в двоичном коде, решается довольно просто: сосчитать количество присутствующих студентов и экстраполировать это число на определенный исторический период ("на вырост"). Затем рассчитать необходимое количество разрядов и составить список кодов, начиная с кода "00...00" и заканчивая кодом "11... 11".

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

Пример 2

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



С числами задачу сканирования и распознавания решить было сложнее: нужно очень точно позиционировать площадь считывания (что возможно обеспечить только со стандартными объектами, например коды цифр на почтовых конвертах).

В принципе, мы вольны принять любую систему, даже с полным отсутствием какой бы то ни было очевидной логики. Другой вопрос, будет ли такая кодовая таблица рациональной, удобной и универсальной.

Разберем более простой пример. Предположим, что необходимо закодировать четыре ахроматических цвета: белый, черный, темно-серый, светло-серый.

Каким образом станем действовать? С точки зрения левого (числового) столбца кодовой таблицы проблема решается просто: для четырех значений требуется четыре кода, а для формирования четырех двоичных кодов (двоичных чисел) идеально подходят два разряда (диапазон от "00" до "11").

Определение

Кодирование — это операция отождествления двоичных чисел с дискретными значениями какой-либо предметной области.

А что касается правого столбца, то здесь, как говорится, необходимо договариваться. Когда же речь заходит о всевозможных системах кодирования, то это всегда — определенные договоренности.

Замечание

Возьмем изображение яблока в виде знака. Что оно может обозначать? Какая связь между яблоком и известной фирмой? Никакой! Эту связь установили условно, "договорились!". Ведь в природе такой связи не было.

В самом деле, совершенно не очевидно, если вернуться к ахроматическим цветам, какой код правильнее (выгоднее, удобнее, рациональнее) присвоить, например, черному цвету. Два нуля, две единицы, а может быть, сохранить порядок, который приведен выше? Рассуждая таким образом, мы вынуждены признать, что привлекаемая нами логика носит произвольный характер, она не вызвана какими-либо однозначными закономерностями.

В качестве примера, видимо, вполне рационально присвоить коды, начиная с белого и заканчивая черным. Тогда, следуя этой логике (подчеркнем еще раз, что это произвольная логика, не основанная на математических законах), белому цвету присваивается код "00", черному — код "11", а светлосерому и темно-серому оттенкам вполне логично присвоить промежуточные значения (табл. 5.6).




Таблица 5.6. Кодовая таблица для четырех ахроматических цветов



Двоичные коды



Значения кодов



00



Белый цвет



01



Светло-серый цвет



10



Темно-серый цвет



11



Черный цвет

Замечание

Что касается кодирования указанных цветовых оттенков, то на самом деле ситуация иная. В системе RGB черному цвету присваивается нулевое значение. И там есть определенная логика, о которой речь пойдет ниже.

Информацию о цветовых моделях см. в части VI.

Возможны ли другие варианты таблицы? Разумеется. Причем, очень многие варианты носят совершенно произвольный характер, например "темно-серый, белый, черный, светло-серый". Для компьютера все варианты абсолютно равнозначны, а для человека важнее всего очевидная логика, поэтому мы расставили значения в определенном порядке, следуя логике перехода тонов от белого до черного. Соответственно, человеку понятнее и логика сортировки чисел, скажем, от "00" до "11" или, наоборот, от "11" до "00", но вот связь двух цепочек (цепочка чисел и цепочка значений) не имеет отчетливых логических зацепок.

Замечание

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

История компьютерных технологий также изобилует подобными фактами. Вот только два примера. Знаменитая комбинация клавиш <Ctrl>+<Alt>+<Del> для "горячей" перезагрузки компьютера была встроена в клавиатурный код только потому, что система первых PC была склонна к зависаниям (что благополучно сохранилось до наших дней). В основе современных операционных систем, разрабатываемых компанией Microsoft, лежит крайне несовершенное ядро MS-DOS, которое в спешке было разработано в далеком 1980 году.




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

Важная мысль

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

Пример-метафора

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


Содержание раздела