Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 150
Текст из файла (страница 150)
Полностью программа приведена в листинге 12,1, а вычерчиваемая ею страница показана на рис. 12.3, Обратите внимание на то, что в начале программы добавлена строка комментария, начинающаяся с последовательности символов $! . Этот комментарий является соглашением Розтзсг(рт (см. конец раздела 12,1), и он часто бывает необхолим для сообщения программам (напримср, печатающим документы), что файл на самом деле представляет собой программу Розгвспрп Рис. 12.3. Великолепное худохквственное произведение авторов Команды закрашивания областей. Одной из наиболее интересных особенностей РозГ вепрь являсгся возможность закрашивать замкнутые фигуры в соответствии с шаолоном. Мы уже использовали команду Ьок П П (строка 21 в программе из листинга 12.1), по возникает довольно сложный вопрос как определить, когда мы нахолимся внутри данной фигуры, а котла — снаружи? Реализованы два алгоритма.
1. Праоьло ненулевой лапотки. Этот метод используется операцией 11П, Проводится линия из точки в бесконечность. Для каждого сегмента границы фигуры, который пересекает линию слева направо, добавляем 1; для каждого сегмента, который пересекает эту линию справа налево, вычитаем 1. Если в сумме получится ноль, то данная точка лежит вне фигуры; в противном случае точка расположена внутри фигуры. 2. Правило четноопи и иечетности. Этот алгоритм используется операцией еоПП. Проводится линия из точки в оесконечпость. Если она пересекает сегменты границы фигуры нечетное количество раз, то точка находится внутри; если же количество пересечений четное, то зта точка расположена вне фигуры. 12.1.
Настольные издательские системы 541 Различие между двумя операциями, закрашивающими фигуры, показано на рис. 12А. Звезда определяет.ся с помощью процедуры lатаг 1оенращ 1 О еоието 5 4 1тоеао О 4 1шеао 5 О 1шето 3 6 11оеао с1оаераШ1 Оет Левая звезда вычерчена с помощью команд 51аг 51гоКе, центральная — с помо- ЩЬЮ 51аг 1111 и правая — с помощью атаг ео1111. Рис. ! 2.4. Команды 51гохе, Ьв и еом1 Соглашения в документах Ровтвсг1рт То, с чсч мы уже познакомил псь в Розтзснрс (саь конец раздела 12.1.4), достаточно для написания программ, создааопгпх интересные локумспты. Однако в Розгзсг1рт существуют некоторые соглашения, которые часто используются и иногла требуются в различных виртуальных машинах Розтзснрц Обычно эти соглашения имеют вид комментариев, которые могут игнорироваться, но часто передают информацшо интерпретатору Розазсг1рС.
Обычно онн располагаются в начале файла. Наиболее важным соглашением является тот факт, что первый комментарий должен начинаться с послеловательности Х1. Этот комментарий сообщает интерпретатору, что данный файл является Розьзснрь-программой, Болыпинство программ, генерирующих файлы Розтзсг1рц помещают в этой строке свои названия. Минимально согласующаяся программа солержит $! Р5 в своей первой строке. Каждая страница локумента обычно начп настоя командой 5 а ое и заканчивается командой гезтоге, чтобы изолировать сс от эффектов, определенных для других страниц.
Определяющие структуру документа соглашения задаются и прололжаются в строках, начинающихся с символов $Ф, пока не встретится первая строка без этих символов. Некоторые из этих соглашсшш приводятся ниже. + ОосоцепОГООО5: список шрифтов, используемых в локумеите.
+ Т151е: произвольная строка, определяющая заголовок докумснта. + Сгеа1ог: имя человека илп програламы, создавшей данный файл. + Сгеа51опйате: дата и время создания файла. + РаОега количество страниц в документе. 542 Глава 12. Се~евое программирование + Воцпо1пВВох: четыре числа, которые определяют координаты левого нижнего и правого верхнего углов страницы, которая реально заполняется программой. Это соглашение позволяет во~валять страницы в другие документы. Краткий обзор Роз(зснрт. Розтзсг1рС был разработан как архитектура виртуальной машины, предназначеннойдля создания печатныхдокументов.
Вбольшинстве приложений не предполагается, что программист будет читать текст документа Розгзсй рц Тем не менее синтаксис Розг зсйрг достаточно прост и легок для восприятия. Существуют образовательные программы для обучения этому языку программирования. Его синтаксис и семантика отличаются простотой, а доступность программ для отображения на экране документов Розгзсйрг означает, что у любого пользователя имеется возможность доступа к интерпретатору виртуальной машины, на которой можно тестировать свои Розгзсй рг-программы. Следующим этапом развития Розгзсйрг стало создание фирмой АцоЬе формата РРГ (РоггаЫе Росшпепг Гогщаг — формат переносимых документов). Р()Г— это форма сжатия файлов Розгзсйрц Программы чтения Р))Г-файлов свободно распространяются по Интернету, а большинство ц еЬ-браузеров могут отображать РРГ-файлы. Формат РРГ повсеместно используется для передачи и отображения форматированных документов.
Бесплатное распространение программ чтения РРГ-файлов можно считать тонким ходом фирмы Аг)оЪе, так как теперь она продает программу АсгоЬаг, необходимую для создания файлов в формате РРГ. 12.2. Всемирная паутина ЪЧФВЧ Широкое распространение Интернета и рост популярности такого занятия, как млутешесглвиее по сети привели к повышен шо интереса к языкам семантического описания, упомянутых в начале этой главы.
В этом разделе мы расскажем о том, как был разработан Интернет и откуда он пришел. Мы предоставим краткий обзор роли языка )ага в развитии Интернета. Напоследок мы обсудим язык разме~ки НТМЕ и ту роль, которую он играет в отображении информации и навигации по Всемирной паутине ьу чг1Ч. 12.2.1. Интернет В течение 60-х гг. концепция пакетной обработки данных уступила место интерактивной модели взаимодействия с компьютером с помо1цью терминалов (см.
раздел 1.2.2). По мере того как мощность машин возрастала, появлялось желание организовать совместное использование информации пользователями различных систем. В конце 60-х гг. Управление перспективных исследовательских программ Министерства обороны США (Адчапсес) КезеагсЬ Рго)ест Аяепсу, АКРА) начало разработку проекта, целью которого было выяснить, возможно ли организовать такую связь между компьютерами, разделенными достаточно большим расстоянием, которая позволила бы пользователю, работающему за терминалом одного компьютера, получать доступ к ресурсам (то есть программам и данным), находящимся на другом компьютере.
Этот проект положил начало развитию сети 12.2. Всемирная паутина Юдlйй' 543 АКРАХЕТ. Подробный рассказ об АКРАХЕТ не входи~ в задачи авторов данной книги. 11остаточно будет сказать, что главную трудность прелставляла собой невозможность наладить надежную пересылку сообщений от одного компьютера к другому. Начало сети А)сРАХЕТ датируется 1970 г., когда была созлана сеть, соелинявшая три узла ВВХ в Кембридже (штат Массачусетс), Калифорнийский университет в Лос-Анджелесе (БСЕА) и Ж1 в Калифорнии и использовавшая линии связи с пропускной способность 56 кбит/с. С течением времени к сети добавлялись другие университеты и военные организации, так что к середине 70-х гг. сеть насчитывала уже несколько сотен узлов.
Связь между двумя компьютерами осуществлялась с помощью сообщений. Сообщение разбивалось на строки фиксированной длины, называемые пакетами, и эти пакеты пересылались один за другим, пока все сообщение не оказывалось переданным на принимающий компьютер, Чтобы гарантировать надежную поставку сообщений до компьютера назначения, была разработана формальная модель передачи сообшений, называемая протокол.
Для АКРАХЕТ был разработан протокол управления передачей — протокол Интернета (Тгапзпн1ззюп СопСго! Ргососо1/1псегпес Ргососо1, ТСР/1Р). ТСР/1Р являлся механизмом связи низкого уровня, который просто опрелелял, что последовательность байтов, предназначенная для конкретного компьютера, дошла до него без изменений, в своем исходном виде. Как правило, для пользователей этот механизм был слишком сложным, чтобы они могли его использовать непосрслствепно для доступа к удаленному компьютеру. Поэтому были разработаны лрупш протоколы, которые пользователи могли вызывать; эти новые протоколы были реализованы в программах, которые фактически перславалн данные, используя ТСР/1Р. В сети АКРАХЕТ широко использовались трн протокола.
+ Те!пег — это протокол, который позволяет пользователю одного компьютера подключаться к другому, удаленному компьютеру и работать с ним, как через обычный терминал. Используя терминологию распрелеленного программирования, можно сказать, что пользователь рабо~ает за клиентским компьютером, ко~орый функционирует как терминал, а терминальная программа связывается с помощью протокола се!пес с удаленным главным (!созс) компьютером, на котором работает ссрверная программа.
Это позволяет пользователю войти в систему компьютера, расположенного в совершенно другом месте, нрн этом удаленный компьютер будет воспринимать этого пользователя как локального. С помощью протокола се1пес пользователь, работая за компьютером в одном университете, мог зарегистрировал гя на компьютере другого университета и использовать все возможности этого удаленно~о компьютера так жс, как если бы он работал иа нем непосредственноо. + 5МТР— это простой протокол электронной почты (Яшр!е Ма!1 Тгапз1ег Ргососо1). Он являс.гся основой электронной почты — широко распространенного в наше время способа общения. В каждой почтовой программе (например, ВсгЫеу пса!1, М1сгозоГс Онс1оо1с, ЕЫога, 1лспз Хосез) имеются свои собственные механизмы для создания почтовых сообшений, сохранения их в файловой системе пользователя, а также лля обработки дополнитсльных 544 Глава 12.
Сетевое программирование команд. Тем не менее все почтовые программы компилируют сообщения в один и тот же формат, который определяется протоколом 8МТР. Затем почтовая программа отправляет письмо по Интернету, и описанный ранее набор протоколов ТСР/1Р гарантирует, что письмо дойдет до места назначения. Строгое соблюдение протокола БМТР— это то, что позволяет электронной почте функционировать столь успешно. Электронное сообщение может отправить кто угодно, и получатель сможет прочитать его, используя практически любую почтовую программу. Здесь наблюдается сильный контраст с тем хаосом, который царит в области программ обработки текстов,— документ, созданный в какой-либо одной программе, бывае~ весьма непросто прочитать в другой.