70 лет за зелёных человечков

Новый Гутенберг

Опубликовано в журнале "Домашний Компьютер" №6 от 20 июня 2003 года.
Текст: Юрий Ревич

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

Не обошли, естественно, новые веяния и такую традиционную область деятельности, как книгопечатание. Две противоречивые тенденции наблюдаются в этой области. С одной стороны, предсказанный уход от бумаги в сторону электронных публикаций происходит медленнее, чем ожидалось. Создатели знаменитой программы Autocad недавно признались, что бумага вряд ли навсегда уйдет из процесса проектирования в обозримом будущем, и они с этим фактом смирились и стараются только исключить «бумажные» технологии на промежуточных стадиях. Нечто подобное наблюдается и в собственно книгопечатании ? как в художественной, так и, в меньшей степени, в технической области. Что ни говорите, но, в глазах научного сообщества Интернет-публикация котируется все же значительно ниже традиционной статьи в журнале. Бумажная книга, хотим мы этого или нет, обречена на долгую жизнь ? по крайней мере, до тех пор, пока не появятся е-books, сравнимые по удобству использования (и, добавим, по эстетическим качествам тоже) с обычным типографским изданием, чего пока не наблюдается1.

С другой стороны, за последние лет двадцать-тридцать в процессе собственно книгопечатания произошла настоящая технологическая революция, сравнимая разве что с оригинальным изобретением Гутенберга. Помню, как школьником, в середине шестидесятых, попал в типографию «Литературной газеты»: огромные, под два метра высотой, линотипы ? на входе наборщица с клавиатурой пишущей машинки, на выходе ? строчки-матрицы из гарта (сплав свинца с висмутом). Цинкография, кислоты, тяжелые металлы, керосин, на котором разводят типографскую краску?

Оставив в стороне такие восхитительные изобретения, как фотонаборный автомат, сразу перейдем к компьютерам. Началось все с выхода в апреле 1981 года знаменитого Xerox Star ? машины, значительно опередившей время. В ней было заложено так много передовых идей, что мы их эксплуатируем и сейчас и еще будем долго этим заниматься ? в ней были реализованы графический интерфейс пользователя GUI, принцип WYSIWYG («что видишь, то и получаешь»), универсальная кодировка Unicode, язык для описания страниц PostScript, метафора «рабочего стола» и т.п. Любопытно, что в этой машине даже разрешение дисплея (17?, между прочим) отвечало разрешению наиболее распространенных в то время матричных принтеров (72 точки на дюйм) и тем самым принцип WYSIWYG соблюдался в полной мере. В дальнейшем эти идеи были подхвачены и реализованы на разных платформах ? в области ПК одной из первых выступила Apple, которая на протяжении полутора десятков лет традиционно занимала ведущие позиции в издательском бизнесе, пошатнувшиеся лишь с выпуском процессора Pentium II, когда графические возможности PC и Mac примерно сравнялись. И с этого момента ничто не препятствует каждому обладателю заурядного по нынешним временам компьютера самому подготовить к изданию любой текст собственного сочинения ? книгу, диссертацию, рекламный буклет или политический манифест.

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

В компьютерах всё ? и данные, и команды, и буквы-символы ? представлено одинаково, в виде чисел. И уже наше дело (точнее, программного обеспечения), как эти числа интерпретировать. Мы можем договориться, что в данной программе число 13 означает команду на перевод строки (или создание нового абзаца, если форматирование строк производится редактором автоматически), число 48 означает цифру 0, а число 65 ? строчную латинскую букву А. Разумеется, если бы каждая программа имела свое собственное представление о том, как интерпретировать подобные коды, то сложилась бы ситуация вавилонской башни ? текст, созданный в одной программе, нельзя было бы прочесть больше нигде. Поэтому естественно возникло стремление к созданию единого стандарта, желательно общемирового, который позволил бы одинаково воспроизводить на экране и при печати тексты на любых языках. Сразу скажем, подобный идеал не достигнут и по сей день, хотя история кодировок насчитывает уже четыре с лишним десятилетия. А в чем проблема, собственно?

Во-первых, в том, что компьютеру решительно все равно, какие именно знаки какими именно числами кодировать. Поэтому у разработчиков национальных стандартов был широкий выбор, ограниченный лишь молчаливой договоренностью о том, что англоязычный фрагмент таблицы символов (а также многие распространенные команды, типа указанного выше перевода строки) должен соответствовать американскому стандарту ASCII (American Standard Code for Information Interchange), утвержденному в 1967 году. Уж так сложилось, что компьютеры были изобретены в англоязычных странах, и потому сначала они ? в том числе и ПК ? умели разговаривать только по-английски. И поэтому во всех без исключения современных текстовых системах английские буквы (а также синтаксические знаки ? точка, запятая, короткий дефис и т.п.) отображаются без ошибок.

Во-вторых, указанный американский стандарт описывает только семибитные коды, когда доступно лишь 128 комбинаций символов. И разработчики ряда первых текстовых систем, из которых до настоящего времени дожили, например, отдельные системы электронной почты, именно этим набором символов и ограничились. В результате всем неанглоязычным разработчикам пришлось всячески изворачиваться, чтобы приспособить такую систему под передачу символов национальных алфавитов, ? в России так возник стандарт КОИ-7, зафиксированный в ГОСТ 19768-74, уже не действующем2.

Все современные компьютеры используют байтовую систему представления чисел, в которой доступно 256 комбинаций для представления символов. Поэтому вторая часть таблицы сверх семибитной ASCII (символы с номерами от 128 до 255) была приспособлена для представления национальных европейских алфавитов ? букв с диакритическими знаками, используемыми в европейских языках, а также кириллицы. Так возникли русскоязычные кодировки, известные как КОИ-8, основная кодировка ГОСТ и альтернативная (последняя также известна как CP866, кодировка DOS или ОЕМ-кодировка). Один из вариантов КОИ-8 (КОИ-8r) применяется и сейчас в системах электронной почты. Обе кодировки, «основная» и «альтернативная», зафиксированы в российском стандарте ГОСТ Р 34.303-92 (ISO 4873-86), где называются соответственно КОИ-8 В1 и КОИ-8 Н1 (Н2). Заметим, что вошедшая в международный стандарт ISO/IЕС 8859-5-88 (соответствующего ГОСТа до появления вышеуказанного 34.303, кажется, вообще не существовало) основная кодировка ГОСТ не используется решительно никем, включая и сам Госстандарт, чей сайт создан в Windows-кодировке3. И именно эта последняя кодировка, принятая фирмой Microsoft в качестве собственного стандарта под названием Windows 1251 (или CP1251), но не зафиксированная ни в одном отечественном ГОСТе, стала, по понятным причинам, самой распространенной. Итого мы имеем как минимум три практически действующие русскоязычные восьмибитные кодировки ? КОИ-8r, СР866 и Win1251, впрочем, каждую в основном в своей области.

Чтобы еще больше запутать читателя, скажем, что наиболее распространена в среде Windows в настоящее время совсем другая ? четвертая ? кодировка. Даже для представления всех европейских языков в виде единой таблицы 256 символов недостаточно, поэтому еще в Xerox Star была реализована идея многобайтового представления символов, получившая позднее наименование Unicode. В принципе для представления знаков практически всех алфавитов мира достаточно двух байтов (шестнадцати битов), позволяющих отобразить 65536 символов. Главная же проблема ? обеспечить совместимость, как прямую, так и, желательно, обратную ? с обычной восьмибитной кодировкой. Разработчики из консорциума Unicode старались, как могли, но все равно получилось не очень, и о том, как с этим справляться применительно, в частности, к продуктам фирмы Adobe, упоминает в своей статье Е. Яворских, которому и слово.

Существует множество программ, позволяющих перевести русскоязычный текст из любой восьмибитной кодировки в любую другую (многие из них описаны, например, в статье Е. Яворских «И. О. «Блокнота» aka Notepad», «ДК», №3, 2003, с.58). Однако прочтение текста в кодировке Unicode, если это не штатный формат какой-либо Unicode-программы, может стать проблемой. Такая задача может возникнуть, например, если вы хотите прочесть скрытый текст документа Word, ? дело в том, что популярнейший редактор имеет интересную привычку сохранять все изменения, внесенные в документ с самого начала его создания. Уничтожить следы вашего творческого процесса, чтобы ими не воспользовались супостаты, легко: нужно выделить весь текст готового документа и перенести его через буфер обмена в новый документ, заодно это позволит сильно сократить размер файла, особенно если вы вставляли и убирали из него картинки. Но порой необходимо восстановить удаленные по ошибке фрагменты текста, а это не так-то просто сделать ? для старых не-Unicode-версий (Word 6.0) достаточно было изменить расширение файла с doc на txt и открыть его, как «просто текст», но в Unicode-форматах (Word 97, 2000, ХР) вы ничего не разберете ? приходится использовать программу перекодировки.
Вот короткий алгоритм, который человек, знакомый с азами программирования, может легко воплотить в действующую программу на любом доступном языке (например, можно попробовать создать макрос для того же Word). В Unicode для английского языка первый (старший) байт двухбайтового символа равен 0, а для кириллицы ? 4. Русские буквы в таблице располагаются подряд, начиная со значения младшего байта, равного 16, то есть прописная «А» соответствует коду 04 16, прописная «Б» ? 04 17 и т.д., всего 64 знака, описывающих прописные и строчные буквы русского алфавита, кроме «Ё» и «ё». Для того чтобы раскодировать такую запись, нужно проделать следующие операции. Шаг 1. Прочесть значение первого байта. Шаг 2. Если оно равно 0, то следующий байт записать в новый файл без изменений, если только он тоже не равен нулю (в формате doc довольно много резервных полей с нулевым значением байт, но они нас не интересуют), перейти к чтению следующей пары. Шаг 3. В противном случае, если значение первого байта равно 4, то прибавить к значению второго байта 176 (в кодировке Win1251 русские буквы начинаются с символа номер 192) и записать полученное значение в новый файл, перейти к чтению следующей пары. Шаг 4. Если это не 0 и не 4, сразу перейти к чтению следующей пары (чтобы миновать, скажем, коды картинок и служебные поля). Чтобы в конечном тексте отображались и нестандартные служебные символы (длинные тире или фигурные кавычки), а также «Ё» и «ё», такой алгоритм следует несколько расширить, но в простейшем случае и этого достаточно. В результате вы получите текстовый файл в кодировке Win1251, который, несмотря на наши ухищрения, содержит достаточно мусора, но все же, просмотрев его, вы можете открыть для себя много интересного.


1 (назад)Пожалуй, одно из самых интересных возможных решений в этой области представила фирма Philips на последней CeBIT ? настоящую раскрывающуюся книжку, только страницы у нее ? электронные (см. «КТ» #10, 2003, с.35).
2 (назад) Во многих публикациях, посвященных кириллическим кодировкам, наименования ГОСТов приведены неверно ? так, часто ссылаются на ГОСТ 19768-87, которого не существовало в природе, а пришедший на смену ГОСТу 19768-74 мертворожденный ГОСТ 19768-93 к наборам символов для ПК вообще отношения не имеет, так как устанавливает русскоязычные коды для ЕС ЭВМ, фактически сошедших к тому времени со сцены.
3 (назад) Тут надо дать некоторое пояснение: поступая так, Госстандарт вовсе не нарушает собственные правила. Дело в том, что «основная кодировка ГОСТ», согласно упомянутым стандартам, относится к системе так называемых расширяемых кодов (ГОСТ 27466-87), нечто вроде альтернативы Unicode, в то время как все кодовые таблицы, которые мы применяем в ПК, с точки зрения стандарта являются просто наборами однобайтовых символов.

Маленькая сопровождающая картинка к журналу Читайте на сайте тему номера Новый Гутенберг и другие статьи из журнала "Домашний Компьютер" №6 (84) от 20 июня 2003 года.
Версия для печати | Обсудить на форуме

Также в рубрике "КСТАТИ"

"Эврика!" конкурс  Смысл конкурса прост, как хвост: мы ждем от вас рацпредложений по использованию компьютера не по назначению.
Обратная связь  Предлагаем вашему вниманию успешный опыт борьбы читателя с подключением портативной клавиатуры Flexis FX-100 к карманному компьютеру Palm.
Свобода самовыражения  В последнее время появились специальные сайты, где вы можете опубликовать свои работы, получить оценки, комментарии, пожелания, а если повезет, даже ценные призы!
HTML ? это просто  Чтобы понять, как работает HTML, мы проделаем простой опыт.
Мания по фейерверкам  Компания PopCap Games, Inc. подошла к своему детищу творчески, взяв за основу старую добрую игрушку Pipes (Водопроводчик), добавила немного тетриса и завернула все это в красочную упаковку на китайский мотив.
Журнал "ДК"

"Домашний Компьютер" #5 (143)

Журнал "Домашний компьютер" №5-2008 Тема номера: "Цифровые ассистенты"

В розничной продаже с 07 мая 2008 года.

PDF-архив журнала "ДК"


Компьюлента

Подписка на статьи ДК-HiFi
Введите ваш e-mail:

О ЖУРНАЛЕ|О САЙТЕ|КОНТАКТЫ|
© ООО "Компьютерра-онлайн" 2003-2006.
При использовании материалов сайта ссылка на "ДК" обязательна.
При использовании материалов бумажного издания ссылка на источник обязательна.
Техподдержка сайта: [email protected]
Работает на <Битрикс: Управление сайтом>
Почта защищена сервером СПАМОРЕЗ

Сайт работает на сервере DEPO Computers