Лабиринты бинарной логики

Почему возникают проблемы с кодировками?

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

Для наглядности представим себе бинарную запись, выполненную различными способами, в следующем виде:

Поясним, что приведенное в данном примере чередование бинарных элементов записи состоит, соответственно, из:

 
  • выступов и впадин на твердой поверхности (практически не применяется, но вполне возможно);
  • направлений движения электрического тока (передача данных по проводам);
  • светлых и темных участков (компакт-диски);
  • южного и северного направлений намагничивания (магнитные ленты и диски);
  • верхней и нижней фазы колебаний (график бинарного сигнала);
  • закрытый и открытый переходы между разнородными средами (электронные чипы).

В данном случае элементы записей нужно закодировать как и . Только таким образом одна и та же запись, сохраненная на разных носителях, будет правильно интерпретироваться, т.е. в данном примере она будет соответствовать числу 1001101 в двоичной и 77 - в десятичной системах счисления.

Отсюда совсем не трудно понять, что кодируются элементы физической записи, а вовсе не символы или что-либо другое! Следовательно, в общем случае кодировка - это соответствие физических бинарных элементов записи абстрактным (числовым) кодам. С другой стороны, кодировка - это всего лишь условность, обязательная для исполнения как в аппаратном, так и в программном обеспечении компьютера. Эта условность не присутствует в компьютере в явном виде, но любое отклонение от нее чревато слишком негативными последствиями, чтобы относиться к ней с недостаточным вниманием. Тем не менее, проблемы с кодировками более чем очевидны. Если вы, к примеру, приобрели компакт-диск с музыкальными записями песен на французском языке (скажем, Патриции Каас), то тексты этих песен в формате .doc или .rtf будут неправильно отображаться на русскоязычном компьютере.

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

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

Только на такой основе может появиться другая разновидность, т.е. символьная кодировка по принципу "число - геометрический образ символа" как отношения абстрактного к абстрактному. Первая абстракция - это результат числовой кодировки, вторая обеспечивает (нечисловое) смысловое содержание, обе вместе необходимы для правильной интерпретации бинарной записи символов. Или, другими словами, символьная кодировка должна обеспечивать в рамках одного набора символов однозначное соответствие бинарной записи и геометрического образа. Но как раз это (самое главное!) и не обеспечивает пресловутая "кодировка символов". В приведенном выше примере число 77 соответствует символу "M" латинского алфавита, однако такой же символ "М" в кириллице имеет уже код 204 (11001100). То же относится к символам "А", "Т", "С", "Р", "Н", "О", "К" и др., т.е. фактически системные ресурсы просто транжирятся.

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

Наконец, третья разновидность - аналоговая кодировка по принципу "число - физический параметр (цвета, звука и т.д.)" возникает из отношения абстрактного к физическому. Например, кодировки цвета зависят от его разрешения и варьируются в пределах записей длиной 4, 8, 16, 24 и 32 бит. Как и в случае с символами, имеет место избыточное кодирование цвета в виде различных, но практически равноценных стандартов (RGB, CMYK, Lab и др.), что для пользователя - только дополнительный балласт. Постепенному переходу к единому стандарту (RGB) должен способствовать элементарный синтез цвета, реализованный на системном уровне, т.е. в операционной системе. А вот аналогичный синтез звука в ОС пока отсутствует, что вообще не позволяет рассматривать соответствующие ему кодировки как стандарты.

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

Юрий КРАСКОВ,
c_city2000@mail.ru

1 Видимо, потому и появился термин "оцифровка", означающий преобразование аналоговой записи в числовую. Однако при этом и аналоговые элементы записи становятся бинарными.

Версия для печатиВерсия для печати

Номер: 

10 за 2002 год

Рубрика: 

Новые технологии
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

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