12. лекция: информация в internetВ Интернете используется множество различных форматов данных. Некоторые из них используются довольно часто, некоторые реже. Как же связать это бесчисленное множество различных форматов с теорией информации? Данная лекция дает ответы на эти и другие вопросы. Дается понятие сущности компьютерного шрифта, текстов с разметкой и их применение, язык логической разметки HTML. TeX как язык программирования в академических кругах. Также рассматривается формат PDF как самый популярный формат создания, хранения и передачи электронных книг Самый распространенный тип данных в компьютерном мире - это текстовые файлы, которые непосредственно в той или иной мере понятны для человека, в отличие от бинарных файлов, ориентированных исключительно на компьютерные методы обработки. С использованием текстовых файлов связаны две проблемы. Первая заключается в сложности единообразного представления символов текста. Для представления английских текстов достаточно ASCII. Для работы с другими языками на основе латинского алфавита, языками на основе кириллицы и некоторыми другими нужно уже несколько десятков наборов расширенного ASCII. Это означает, что одному и тому же коду, большему 127, в каждом наборе соответствует свой символ. Ситуацию усложняет и то, что для некоторых языков, в частности, русского существует несколько наборов ASCII+. Кроме того, необходимо, чтобы все символы каждого языка помещались в один набор, что невозможно для таких языков, как китайский или японский. Таблица кодировки Unicode, предназначенная для постепенной замены ASCII, - 16-разрядная, что позволяет представить 65536 кодов. Она широко используется в Linux и Microsoft Windows. Варианты Unicode позволяют использовать 31-разрядное кодирование. Использование Unicode требует переделки всех программ, рассчитанных для работы с текстами ASCII. Для того, чтобы увидеть символы, соответствующие кодам из текстового файла, каждому коду нужно сопоставить визуальное представление символа из выбранного шрифта. Компьютерный шрифт - это набор именованных кодами рисунков знаков. Таким образом, чтобы интерактивно работать с текстовым файлом необходимо знать его кодировку (из текстовых файлов, как правило, прямой информации о кодировке получить нельзя - ее надо знать или угадать!) и иметь в системе шрифт, соответствующий этой кодировке. Вторая проблема связана с тем, что такие средства как курсивный, полужирный или подчеркнутый текст, а также графики, диаграммы, примечания, звук, видео и т.п. элементы электронных документов, выходят за рамки естественных, интуитивных элементов текста и требуют соглашений по их использованию, что приводит к возникновению различных форматов текстовых данных. Последние иногда даже не ориентированы на непосредственную работу с ними человека, фактически не отличаясь по назначению в таких случаях, от бинарных данных. Внесение в простой текст (plain text) дополнительной информации об его оформлении или структуре осуществляется при помощи разметки текста (markup). Различают физическую или процедурную разметку и логическую или обобщенную разметку. При физической разметке точно указывается, что нужно сделать с выбранным фрагментом текста: показать курсивным, приподнять, центрировать, сжать, подчеркнуть и т.п. При логической разметке указывается структурный смысл выбранного фрагмента: примечание, начало раздела, конец подраздела, ссылка на другой фрагмент и т.п. Для печати документа на принтере или показе на экране используется физическая разметка. Исторически она появилась первой, но имеет очевидные недостатки. Например, в Америке и Европе существуют разные стандарты на размер писчей бумаги, наборы шрифтов и размер экрана меняются от системы к системе, - подобные обстоятельства требуют трудоемкого изменения физической разметки текста при использовании одного и того же документа на разных компьютерах. Кроме того, физическая разметка, как правило, привязана к конкретным программным средствам, время жизни которых ограничено, что не позволяет вести архивы документации без риска через несколько десятков лет остаться без средств для работы с ними. Логическую разметку всегда можно преобразовать в физическую, используя таблицу стилей, которая представляет собой перечисление способов отображения каждого логического элемента. Таким образом, имея наборы документов в логической разметке можно всегда при печати придавать им наиболее привлекательный вид, своевременно получая от специалистов-дизайнеров новейшие таблицы стилей. Преобразование физической разметки в логическую формальными средствами практически невозможно. Основные форматы текста с разметкой: HTML - Hyper Text Markup Language, язык разметки гипертекста; XML - eXtensible Markup Language, расширяемый язык разметки; SGML - Standard Generalized Markup Language, стандартный язык обобщенной разметки; TeX; PostScript; PDF - Portable Document Format, формат для переносимых документов, или Acrobat (частично бинарный). Документы в Internet часто публикуются в обработанном программами сжатия данных виде. Наиболее используемые форматы сжатия - это zip и tgz (tar.gz). Формат tgz - это результат конвейерного применения команд: сначала tar (собирает файлы и каталоги в один файл с сохранением структуры каталогов) и затем gzip. Часто в Internet нужно преобразовывать бинарные данные в текстовые (для отправке по электронной почте, например) и затем наоборот. Для этого, в частности, служат программы uuencode (перевести в текст) и uudecode (перевести из текста). В текстовом файле закодированный текстом бинарный файл помещается между строками, начинающимся со слов begin и end. Строка begin должна содержать атрибуты и имя бинарного файла. HTML, XML и SGML World Wide Web (WWW, всемирная паутина) базируется на трех стандартах: URI (Universal Resource Identifier, универсальный идентификатор ресурса, раньше назывался URL) - предоставляет стандартный способ задания местоположения любого ресурса Internet, HTTP (Hyper Text Transfer Protocol, протокол передачи гипертекста), HTML - язык страниц WWW. HTML - язык логической разметки, хотя и допускающий возможность рекомендовать ту или иную физическую разметку выбранного фрагмента текста. Конкретная физическая разметка документа зависит от программы-браузера (browser), используемой для его просмотра. Документы HTML из-за содержащихся в них, как правило, большого количества ссылок на другие документы HTML, с которыми они образуют единое целое, мало приспособлены для распечатки на принтере. Имя файла с документом HTML имеет обычно расширение html или htm. Существуют ряд программ, позволяющих создавать документы HTML в визуальном режиме и не требующих от их пользователя знания HTML. Но создать сложный интерактивный документ без такого знания непросто. Элементы разметки HTML состоят из тегов (tag). Теги заключаются в угловые скобки, у них, как правило, есть имя и они могут иметь дополнительные атрибуты. Например, тег <A HREF="https://www.linux.org"> имеет имя A (anchor, якорь), атрибут HREF со значением "https://www.linux.org". Некоторые теги самодостаточны, например, тег разрыва строки <BR> (break), но большинство тегов - это пары из открывающего (start tag) и закрывающего (end tag) тегов. Имя закрывающего тега отличается от имени открывающего только тем, что перед ним ставится наклонная черта (slash). Например, если имя открывающего тега A, то имя закрывающего - /A. Открывающий и закрывающий теги обрамляют некоторый фрагмент текста, вместе с которым они образуют элемент текста. Элементы текста могут быть вложенными. Парные теги EM (emphasis, выделение), STRONG (особо выделить), CITE (цитата или ссылка), CODE (компьютерная программа), SAMP (sample, текст примера), STRIKE (зачеркнуть) и некоторые другие позволяют логически выделить фрагменты текста, а парные теги B (bold, полужирный), I (italic, курсив), U (undelined, подчеркнутый), TT (typewriter, пишущая машинка), SUB (subscript, нижний индекс), SUP (superscript, верхний индекс) и другие - рекомендовать физически выделить фрагмент текста указанным образом. Полный документ представляет собой один элемент текста HTML. Заголовки - это элементы H1, H2, H3 и т.д. Число после H (header) - это уровень вложенности заголовка, т.е. H1 - это заголовок всего документа, H2 - заголовок раздела документа, H3 - подраздела и т.д. Абзацы - это элементы P (paragraph). Элементы PRE (preformatted) должны отображаться браузером с таким же разбиением на строки как и в исходном документе. Специальные символы можно ввести в документ, используя их имена (entity), заключенные между знаками & и точка с запятой. Например, сам знак & можно ввести как &, а знак кавычка - ". Ссылки и маркеры, объявляются при помощи атрибутов HREF и NAME соответственно. Например, элемент <A NAME="chapter3"></A> - это метка, на которую можно ссылаться по имени chapter3, используя, например, ссылку <A HREF="\#chapter3">Глава 3</A>. Тег IMG (image, образ) позволяет вставить графическую картинку в документ, используя два основных атрибута: SRC (source, источник) для указания URI файла с графикой и ALT (alternative, альтернатива) для указания альтернативного текста, показываемого вместо картинки, в случае, когда файл с графикой недоступен или его тип неизвестен браузеру. Документы HTML могут быть использованы для интерактивной работы. Например, элемент FORM позволяет пользователю web-страницы передать введенную в страницу информацию на HTTP-сервер. Элемент FORM может содержать разнообразные кнопки, списки, всплывающие меню, однострочные и многострочные текстовые поля и другие компоненты. Обработкой введенных, переданных на сервер данных и созданием динамических HTML-документов в ответ на них занимаются специальные программы, CGI-скрипты (common gate interface), установленные на сервере. Комментарии вводятся между символами <!-{}- и -{}->. HTML содержит средства для описания данных в виде таблиц и использования таблиц стилей. HTML использует стандартные системные шрифты, т.е. не существует шрифтов специально для www-страниц. Имена файлов-документов SGML, как правило, имеют расширение sgml. SGML с начала 1970-х разрабатывался фирмой IBM, а с 1986 года принят в качестве международного стандарта (ISO 8879) для формата документов с логической разметкой. Сначала документ SGML содержит описание вида кодирования и разметки текста и затем сам размеченный текст. HTML - это SGML с фиксированной разметкой. Создатели технологии WWW отказались от полной поддержки SGML только потому, что в начале 1990-х системы, которые могли работать с SGML в реальном времени были очень дороги. Элементы SGML делятся на четыре категории: описательные маркеры - определяют структуру документа - им соответствуют элементы разметки HTML типа H1, P, A, IMG и т.п.; ссылки на данные - им соответствуют элементы разметки HTML типа & описательные конструкции компонент документа в их структурной взаимосвязи - они не входят в HTML, но определяют его. Их рекомендуется начинать с комбинации знаков <! и заканчивать знаком >>. Примером конструкции, определяющей ссылку &ref; на словосочетание "The Reference" будет <!ENTITY ref "The Reference">; инструкции по обработки текста - их рекомендуется заключать между знаками <? и > - они вводят элементы текста, ориентированного на конкретную, зависящую от системы обработку (физическую разметку). В HTML с их помощью, например, вставляют код для обработки на сервере WWW страниц. Документы SGML можно конвертировать как в гипертекст, так и в любой формат, ориентированный на распечатку, например, TeX или Microsoft Word. Ведение документации в формате SGML во многих отношениях оптимально. С 1996 официально идет разработка формата XML - подмножества SGML, которое предполагается использовать в Internet наряду с HTML. Преимущество XML перед HTML в его четкой связи с SGML, что позволяет стандартным образом вводить в документ новые конструкции, избегая тем самым неконтролируемого введения в язык новых возможностей, как это происходит с HTML. Упражнение 53 Как на HTML описать заголовок первого уровня "Глава 2", на который можно будет ссылаться по имени "2"? TeX Известный американский математик и теоретик программирования Дональд Кнут (D. E. Knuth) более 10 лет с конца 1970-х годов разрабатывал систему верстки книг TeX (произносится "тех"). Существует множество расширений возможностей базового (plain) TeX. TeX популярен прежде всего в академических кругах, т.к. в целом он весьма сложен для изучения. В отличие от систем, ориентированных на интерпретацию разметки, подобных Microsoft Word или Sun Star Writer, TeX - компилирующая система. Результат компиляции документа TeX - это файл в бинарном формате dvi (device independent), который можно, используя драйверы конкретных устройств (принтеров, экрана), распечатать. TeX использует собственную систему масштабируемых шрифтов, которые масштабируются не в реальном времени, интерпретацией как шрифты True Type или PostScript, а компиляцией при помощи программы METAFONT. В Internet доступны тексты программ TeX и METAFONT - они написаны на Паскале. Шрифты METAFONT написаны на специальном языке, с декларативным синтаксисом. TeX позволяет также использовать шрифты True Type и Adobe Type 1 и Type 3. Прочитать и понять содержимое документа TeX несложно, но скомпилировать и распечатать, а тем более создать новый документ без помощи специалиста или основательной подготовки непросто. Однако TeX до сих пор является почти единственной доступной бесплатно системой, позволяющей получать документы типографского качества. В plain TeX используется физическая разметка, а в наиболее популярном его расширении LaTeX также и логическая. TeX - это язык макросов, большинство из которых начинаются с символа обратная косая черта и состоят затем из букв. Например, запись в документе plain TeX centerline{Это { it мой} заголовок} означает центрировать строку-абзац "Это мой заголовок", напечатав слово "мой" в нем курсивом, а запись $$int_1^{}x\{dt over t}=ln x$$ - формулу TeX - это особый язык программирования. Энтузиасты TeX написали на нем интерпретатор языка Бэйсик. Документы TeX могут иметь очень сложную структуру и из-за этого их в общем случае нельзя конвертировать в другие форматы. Документы HTML или Microsoft Word теоретически можно всегда конвертировать в формат TeX. Система GNU texinfo основана на TeX, но использует совершенно другой набор макросов. Макросы в этой системе должны начинаться со знака @. Документы texinfo можно преобразовать как в документ HTML, так и в качественную распечатку. В отличие от SGML, средства для такого преобразования - это часть системы texinfo. Возможности texinfo для верстки документов несколько ограниченней по сравнению с другими развитыми TeX-системами. Расширения имен файлов документов TeX - tex; LaTeX - tex, latex, ltx, sty (стили) и др.; METAFONT - mf (исходные программы шрифтов), tfm (метрики шрифтов, нужны на этапе компиляции документа TeX), pk (матрицы шрифтов, нужны при печати dvi-файла); texinfo - texi, texinfo. PostScript и PDF PostScript - это универсальный язык программирования (имеет много общего с языками Форт и Лисп), предоставляющий большой набор команд для работы с графикой и шрифтами. Он является фактическим международным стандартом издательских систем. Разрабатывается фирмой Adobe Systems с первой половины 1980-х. Используется, как встроенный язык принтеров для высококачественной печати, а также некоторыми системами X Window при выводе данных на экран дисплея. Существуют и программы-интерпретаторы языка PostScript. Лучшая из них - это Ghostscript. Программа GhostView предоставляет удобный оконный интерфейс для Ghostscript и существует для большинства ОС. PostScript-программы можно писать вручную, но обычно текст PostScript генерируется автоматически программами вывода данных. Расширения имен файлов с PostScript-программой - это, как правило, ps, eps (Encapsulated PostScript, файл-картинка с заданными размерами), pfa (шрифт), pfb (бинарное представление pfa), afm (метрики шрифта, могут быть частично получены из соответствующего pfa-файла), pfm (бинарное представление afm). Преимущество формата PostScript в том, что он, как и формат DVI, независим от физических устройств воспроизведения. Один и тот же PostScript-файл можно выводить как на экран с разрешением 72 dpi (dot per inch, точек на дюйм) или лазерный принтер с разрешением 600 dpi, так и на типографскую аппаратуру с разрешением 2400 dpi, имея гарантии, что изображение будет наилучшего качества, возможного на выбранной аппаратуре. Возможности PostScript перекрывают возможности DVI, поэтому некоторые TeX-системы при компиляции документов производят сразу файлы в формате PostScript или PDF. Файлы PostScript можно вручную корректировать, но из-за сложности языка - это очень не просто, особенно если используются символы, не входящие в ASCII. Фактически эти файлы можно рассматривать как "только для чтения" и использовать для распространения информации, не подлежащей изменению. Комментарии в PostScript, как и в TeX, начинаются знаком \% и заканчиваются концом строки. Первая строчка PostScript-программы обычно содержит точное название формата файла. Собственно программа начинается в файле с символов \%! и заканчивается символами \%\%EOF. PostScript-программы кроме собственной системы шрифтов могут использовать шрифты True Type фирм Apple и Microsoft. Различают уровни (levels) языка PostScript. Уровень 1 может поддерживать только черно-белую графику. Уровень 2 может работать с цветом. Уровень 3 - это современное состояние языка. Данные из файла PostScript можно показывать по мере их поступления, что удобно для использования в Internet. Однако есть две причины, по которым документы PostScript сравнительно редко включаются в web-страницы: они весьма велики по размерам (этот недостаток снимается программами сжатия, работающими в реальном времени); они могут содержать в себе шрифты, защищенные авторскими правами (шрифты их владелец может использовать при печати, но не распространять). Файлы в формате PDF лишены двух означенных недостатков: они сжаты и из них сложно извлечь отдельные шрифты, - поэтому они стали фактическим стандартом Internet для обмена документами, не подлежащими изменению. Программы для просмотра PDF-файлов доступны бесплатно. Наиболее используемая из них - это Adobe Acrobat Reader. Первая строчка файла в формате PDF начинается со знака \%, за которым следует идентификационная запись версии формата PDF, используемой в этом файле. Далее, как правило, идут бинарные данные. Расширение имени PDF-файла - pdf. Между документами PostScript и PDF можно осуществлять взаимно-однозначное преобразование, хотя PDF в отличие от PostScript - это не язык программирования, а скорее язык описания документа. Дополнительные материалы: Управляющие коды ASCII // //
Выше представлен шаблон для следующей далее таблицы управляющих символов. Под клавиатурным кодом подразумевается комбинация двух клавиш, Ctrl (Control, в таблице это знак ^) и приводимой, одновременное нажатие которых должно производить соответствующий код.
В "чисто" текстовых (plain text) файлах допустимы только управ- ляющие символы, отмечающие концы строк и, как правило, переходы на позиции табуляции (код 9). Маркер конца строки в Unix — это код 10, в Macintosh OS — 13, в CP/M, MS-DOS и Microsoft Windows — последовательность 13, 10. Кодировка видимых символов ASCII
Кодировка букв русского алфавита
В настоящее время наиболее широко используются пять (!) различных таблиц кодировки для формального представления русских букв: I. ISO 8859-5 - международный стандарт; II. Кодовая страница 866 (Microsoft CP866) - используется в MS-DOS; III. Кодовая страница 1251 (Microsoft CP1251) для Microsoft Windows; IV. На базе ГОСТ КОИ-8, koi8-r - применяется в мире Unix; V. Unicode - используется в Microsoft Windows, Unix и клонах Unix. Основная кодировка ГОСТ (государственный стандарт СССР) от 1987 года создана на основе рекомендаций ISO и в дальнейшем стала основой для представления знаков русских букв в Unicode. В ней и в кодировках II, III и V все буквы кроме ё и Ё расположены в алфавитном порядке. На практике эту кодировку можно встретить только на старых IBM PC совместимых компьютерах ЕС-1840 и в некоторых принтерах. Internet браузеры обычно поддерживают ее наряду с кодировками II-IV. Кодировка CP866, разработанная на основе альтернативной кодировки ГОСТ, создана специально для ОС MS-DOS, в которой часто используются символы псевдографики. В этой кодировке эти символы имеют те же коды, что и в стандартном IBM PC совместимом компьютере. Альтернативная кодировка ГОСТ, которая имеет два варианта, совпадает с CP866 по позициям для букв русского алфавита и знакам псевдографики. Основная кодировка ГОСТ совпадает с ISO 8859-5 только по всем знакам русских букв, кроме заглавной буквы Ё. Использование CP1251 обусловлено почти исключительно влиянием на компьютерные технологии разработок фирмы Microsoft. В ней наиболее полно по сравнению с I, II, IV представлены такие символы как ©, ®, №, различные виды кавычек и тире и т. п. Кодировка koi8-r основана на стандартах по обмену информацией, используемых на компьютерах под управлением ОС Unix, CP/M и некоторых других с середины 1970-х. В 1993 она стандартизирована в Internet документом RFC1489. Кодировка Unicode опирается на каталог символов UCS (Universal Character Set) стандарта ISO 10646. UCS может содержать до 231 различных знаков. Коды UCS-2 - 2-байтные, UCS-4 - 4-байтные. Используются также коды переменной длины UTF-8 (Unicode Transfer Format) - 1 -6-байтные, наиболее совместимые с ASCII, и UTF-16 - 2 или 4-байтные. Unicode в прикладных программах реализуется лишь частично, и в полном объеме пока нигде не поддерживается. В Linux используется UTF-8. Достаточно широко используется кодирование на основе ASCII: VI. На базе КОИ-7 - можно использовать при отсутствии кириллических шрифтов, код получается вычитанием 128 от соответствующего кода в koi8-r, что, как правило, дает код латинской буквы, близкой фонетически к русской. В кодировке VI нет видимого символа для Ъ. Далее следует таблица, в которой представлены все перечисленные способы кодирования букв русского алфавита. В этой таблице в колонке 1 находятся символы букв, в колонке 2 часть названия букв в Unicode 3.2 (названия строчных кириллических букв начинается словами CYRILLIC SMALL LETTER, а заглавных - CYRILLIC CAPITAL LETTER, т. о., полное название буквы Д - CYRILLIC CAPITAL LETTER DE), в колонках с I по V коды десятичные и шестнадцатеричные соответствующих таблиц кодировки, а в колонке VI - символ ASCII для КОИ-7. Кроме перечисленных можно встретить еще используемую до введения кодировок ГОСТ болгарскую кодировку, называемую также MIC, Interprog или "старый вариант ВЦ АН СССР". На компьютерах под управлением Macintosh OS используется также своя собственная таблица кодировки для русских букв, по своему набору знаков почти совпадающая с CP1251.
Элементы теории чисел Каноническим разложением числа называется разложение его на простые сомножители в виде , где - все различные простые делители числа , а - целые положительные числа. Функцией Эйлера называется, отображение ,
|