PostScript

Поделись знанием:
Перейти к: навигация, поиск
PostScript
Класс языка:

мультипарадигменный, стековый, процедурный

Появился в:

1982

Автор:

Джон Уорнок, Чарльз Гешке

Выпуск:

PostScript 3 (1997)

Система типов:

строгая, динамическая

Основные реализации:

Adobe PostScript, TrueImage, Ghostscript, InterPress

Испытал влияние:

Forth

Повлиял на:

PDF, Encapsulated PostScript

PostScript (Постскрипт) — язык описания страниц, в основном используемый в настольных издательских системах.





Идеология

Postscript был разработан Джоном Уорноком и Чаком Гешке из Adobe Systems в начале 80-х гг. Исходно Postscript использовался как ядро механизма печати компьютеров Apple, но вскоре стал широко распространенным для большинства компьютерных систем. Интерпретаторы Postscript (в виде программных или аппаратных компонентов) для печати документов присутствуют практически во всех современных компьютерных системах. В Postscript используется модель изображения текста (или рисунков) на чистой странице. Когда страница готова, она выводится на печать и начинается «прорисовка» изображения очередной страницы. Это есть не что иное, как метод компиляции. Каждый документ Postscript обычно представляет собой программу, которая печатает на принтере (или отображает на экране монитора) следующие друг за другом страницы.

История

Концепция языка PostScript была заложена в 1976 году Джоном Уорноком (John Warnock), сотрудником Evans and Sutherland Computer Corporation. Его коллега Джон Гэфни (John Gaffney), занимавшийся тогда интерпретатором для большой базы данных трёхмерной графики Нью-Йоркского порта, создал язык «Design System» (очень похожий на FORTH). Позже Джон Уорнок перешёл в исследовательский центр Xerox в Пало-Альто (Xerox P.A.R.C.) и вместе с Мартином Ньювелом (Martin Newell) создал на базе Design System новую систему JaM (John and Martin), использовавшуюся в исследованиях печати и развившейся в InterPress, протокол печати Xerox.

В 1982 году Джон Уорнок уволился из Xerox и вместе с Чаком Гешке (Chuck Geschke) основал Adobe Systems Inc. Вначале их целью было создание специализированной рабочей станции для печати, которая должна была называться PostScript, но они вскоре поняли, что лучше сконцентрировать усилия на разработке средств для управления принтерами сторонних производителей.

В 1984 году увидел свет PostScript (позже к названию было добавлено Level 1, чтобы отличать его от Level 2 — см. ретроним). Postscript имел ряд преимуществ перед другими системами того времени:

  • Платформонезависимость. Один и тот же файл мог печататься как на лазерном принтере, выдававшем тогда 300 dpi, так и на фотонаборном устройстве с 2400 dpi с наилучшим качеством в каждом случае.
  • Любой производитель мог лицензировать интерпретатор PostScript и использовать PostScript со своим устройством.
  • Спецификации PostScript были общедоступны, таким образом, любой разработчик мог писать программы, поддерживающие PostScript.

Adobe рисковала, выпуская PostScript, и, возможно, ей не удалось бы убедить рынок в необходимости такого языка, если бы не Стив Джобс из Apple Computer. В 1985 году продажи компьютеров Macintosh начали падать, и Apple нужен был «killer app» — нечто, что мог бы только её компьютер. Стив Джобс инвестировал 2,5 миллиона долларов в Adobe, которая создала PostScript-контроллер для принтера Apple LaserWriter, и в Aldus, создавшую программу PageMaker, использовавшую все возможности Macintosh и LaserWriter. Появившаяся тогда возможность допечатной подготовки на компьютере спасла Apple и превратила Adobe и Aldus в крупные компании. Другие производители фотонаборной аппаратуры, начиная с Linotype, оценили PostScript и вскоре оснастили свою фотонаборную аппаратуру интерпретаторами PostScript. PostScript стал стандартом в области допечатной подготовки.

В 1991 Adobe выпустила следующую ревизию PostScript — PostScript Level 2. Это была значительная переработка, давно ожидавшаяся издательским сообществом.

Основными улучшениями были:

  • увеличенная скорость и надёжность (в основном это коснулось управления памятью);
  • поддержка цветоделения в самом контроллере;
  • распаковка сжатых изображений в самом контроллере (JPEG и CCITT group 4);
  • поддержка больших наборов шрифтов (для азиатских стран);
  • кэширование шрифтов и изображений;
  • улучшенные драйверы;
  • улучшенные алгоритмы печати изображения (Accurate Screening).

Adobe совершила ошибку, обнародовав спецификации PostScript Level 2 до начала работ по его аппаратной реализации. Конкуренты неожиданно вышли на рынок с эмуляторами PostScript Level 2 раньше самой Adobe. В результате потребовалось очень много времени, прежде чем приложения начали использовать все новые функции PostScript level 2. Такая функция, как цветоделение в контроллере до сих пор не поддерживается XPress 5, хотя с момента выхода Level 2 прошло много лет.

В 1998 году Adobe ввела новый стандарт PostScript 3. Изменения по сравнению с Level 2 незначительны. Это можно понять, учитывая, что множество приложений до сих пор не могут обеспечить полную поддержку PostScript Level 2.

Основные преимущества PostScript 3:

  • поддержка 4096 уровней на один цвет (12-бит на цвет, до того было 256 оттенков — 8 бит на цвет);
  • поддержка PDF (контроллеры PS Level 3 могут выводить PDF наряду с файлами PS Level 2);
  • расширенная поддержка цветоделения (контроллеры PS 3 могут производить цветоделение изображений, заданных в оттенках серого или в шести цветах);
  • добавлена интернет-функциональность (Web-ready printing), пока что никто из OEM-партнёров Adobe не реализовал её.

Область применения

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

PostScript — больше, чем типичный язык управления принтером, он является полнофункциональным языком программирования. Многие прикладные программы могут преобразовать документ в PostScript-программу, при выполнении которой будет получен начальный документ. Эта программа может быть послана непосредственно на принтер с поддержкой PostScript или преобразована интерпретатором PostScript в другой формат (для принтеров без поддержки PostScript), или результат её выполнения интерпретатором может быть показан на экране. Так как исходная PostScript-программа одна и та же, PostScript называется независимым от устройства.

Большинство высокопроизводительных принтеров и плоттеров имеют встроенный интерпретатор языка PostScript. В то же время, простые принтеры домашнего класса поддерживают только элементарные графические операции, поэтому задача создания растрового изображения возлагается на центральный процессор. Существуют интерпретаторы языка PostScript для различных операционных систем, наиболее известный из них — свободная программа Ghostscript.

Имеется коммерческая версия системы ТеХ — [www.bakoma-tex.com BaKoMa TeX], написанная полностью на PostScript. Автор — В. Малышев (СССР).

Язык

PostScript — полнофункциональный тьюринг-полный язык программирования. Хотя программы на PostScript и создаются в основном не людьми, а другими программами, в принципе ничто не мешает писать на нём программы[1] для обсчёта графики, реализации численных методов решения математических задач и т. п.

PostScript — интерпретируемый стековый язык, похожий на Форт. Синтаксис языка использует обратную польскую нотацию, что делает ненужным использование скобок, однако требует некоторой практики для чтения текста программы из-за необходимости держать в голове содержимое стека. Большинство операторов берут операнды из стека и помещают результат вычислений в стек. Литералы (строки и числа) помещают свою копию в стек.

В PostScript для рисования используется двумерная прямоугольная система координат, начало которой совпадает с левым нижним углом страницы; ось X по умолчанию направлена горизонтально (то есть по ширине страницы), ось Y — вертикально. Единицей измерения линейных координат служит типографский пункт. С помощью операторов языка [6, pp. 517–518] начало системы координат может быть перенесено в любую точку (оператор translate), а сама система — повернута на произвольный угол в плоскости страницы (оператор rotate); масштаб по каждой из двух осей с помощью оператора scale также может быть изменен. Например, «зеркальный» вывод изображения на пленку (т. н. «Emulsion down») в PostScript-принтерах осуществляется при помощи одного единственного оператора scale, задающего отрицательный масштаб по одной из осей системы координат: например, -1.0 1.0 scale.

PostScript имеет черты метафайла, совмещая поддержку как векторных, так и растровых изображений. Шрифты в PostScript только векторные. Немного особняком стоят т. н. Type3-шрифты, в которых для рисования глифов (процедура /BuildGlyph) может быть использована любая процедура, сформулированная в терминах языка PostScript [6, pp. 337–342]. После выхода SP4 для Windows NT 4.0 в 1998 году (см. также support.microsoft.com/gp/lifesupsps ) при установленном в системе Adobe Type Manager 4.0 и драйвере AdobePS 5 все шрифты в не-roman кодировке, в частности кириллица выгружались в PostScript-файл в виде Type3-шрифтов, где каждый глиф был представлен в виде растрового изображения соответствующего разрешения. Выгрузка шрифта в виде растровых изображений создала много проблем при подготовке к выводу на фотонабор и допечатной подготовке вообще. Эта ошибка была исправлена в AdobePS 5.1 и Adobe Type Manager 4.1, которые затем вошли в дистрибутив Windows 2000.

Структура документа

Структура файла PostScript формируется структурными комментариями [14]. Структурные комментарии начинаются с последовательности символов «%%» в начале строки.

Файл PostScript состоит из четырёх частей: заголовка, пролога, тела и эпилога.

Заголовок начинается строкой «%!PS-Adobe-N.M» где N.M — версия спецификации, далее идут структурные комментарии с общими свойствами документа, и заканчивается заголовок строкой «%%EndComments».

%!PS-Adobe-2.0
%%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software
%%Title: rep.dvi
%%Pages: 9%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%EndComments

В прологе обычно содержатся описания подпрограмм и данные, необходимые для печати документа — например, процедуры и шрифты. Пролог заканчивается комментарием «%%EndProlog».

В теле программы содержатся команды, отвечающие за отрисовку каждой страницы, предваряемые строкой «%%Page: <метка> <номер>», где <метка> — метка страницы, которая не выводится на печать, и <номер> — порядковый номер страницы в файле, например, %%Page: iii 3

После команд отрисовки всех страниц идёт структурный комментарий «%%Trailer», после чего начинается эпилог.

В эпилоге можно продублировать комментарии из заголовка (это реализовано на случай, если в начале вывода программе ещё не известно, например, число страниц) — в этом случае вместо числовых значений параметров в заголовке надо писать «(atend)».

Заканчивается файл строкой «%%EOF».

Обзор элементов языка

Стеки

В PostScript для хранения данных разных типов используются четыре стека: стек операндов, стек графических контекстов, стек исполнения, стек словарей.

Типы данных

Основные типы данных языка PostScript: целое число со знаком, вещественное число, логическое выражение (true или false), строка символов ( ( … ) ), массив ( [ … ] ), процедура ( { … } ), словарь, имя.

Операторы

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

4 5 add

Операторы PostScript можно разделить на несколько групп. Это операторы для работы с содержимым стека (независимо от типа), арифметические операции, операторы работы с массивами, работы со словарями, работы со строками, сравнения, управления потоком команд, работы с типом аргументов и преобразования, доступа и работы с файлами, работы с виртуальной памятью, графического состояния и другие. Описания операторов PostScript можно найти в [5, 6], краткие описания наиболее употребительных операторов на русском языке можно найти в [1].

Краткий обзор механизма рисования изображения

Процесс рисования (растрирования) при выполнении (интерпретации) PostScript-программы заключается в вычислении для каждого пиксела устройства вывода одного (для монохромного) или нескольких (например четырёх для CMYK-устройства или шести для CMYKOrGr) значений параметра (-ов) в диапазоне от 0 до 1.0. Вычисленное значение параметра (-ов) используется в качестве аргумента ещё одной важной функции — transfer function [6, pp. 478–480] (русскоязычный синоним — отображение). По умолчанию в подавляющем большинстве случаев эта функция представляет собой простейшую функцию y(x)=x и её значение тождественно равно значению аргумента. Однако в ряде случаев — например для компенсации растискивания используются достаточно сложные нелинейные зависимости y(x), задаваемые кусочной либо табличной аппроксимацией. Кусочно-линейная аппроксимация transfer function используется например в EPS- и PS-файлах Adobe Photoshop — для аппроксимации используется разбивка области определения [0;1.0] на сорок участков с шагом 0.025 (2.5 % растровой точки); на каждом из сорока участков transfer function имеет вид y(x)=b·x+a. Transfer function вида y(x)=1-x (в терминах PostScript language {1 sub neg} settransfer) обращает изображение, делая из него негатив — именно таким образом печатают негатив PostScript-принтеры.

Для монохромных устройств — например для фотонабора, решение о закрашивании (засветке) пикселя может приниматься в результате сравнения вычисленного для данного пиксела значения transfer function и значения т. н. Spot-функции либо двумерного массива Threshold array [6, pp. 484–490], [15]: в случае, если значение transfer function больше значения Spot-функции или элемента Threshold array для этого пиксела последний закрашивается (засвечивается). Специальный подбор transfer function и Spot-функции или Threshold array позволяет получить отношение числа закрашенных и незакрашенных пикселей устройства вывода для каждого пиксела исходного (растрируемого) изображения таким, что на оттиске (отпечатке) средняя яркость соответствующего участка изображения почти пропорциональна значению вычисленного параметра (см. выше).

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

Пример программы

%!PS-Adobe-1.0

% По умолчанию, постскрипт использует единицу измерения 1 пункт=1/72 дюйма, 
% а нам нравятся миллиметры.
72 25.4 div           % 1 мм = 72/25.4 пунктов
dup                   % дублировать значение на вершине стека
scale                 % растянуть в это количество раз по обеим координатам
100 100 translate     % установить начало координат в (100мм, 100мм)
 
/Times-Roman findfont % взять шрифт Times-Roman
10 scalefont          % растянуть до размера 10 (у нас - мм!)
setfont               % установить выбранный шрифт
 
0 30 330 {            % цикл для углов от 0 до 330 с шагом 30
  gsave                 % запомнить текущее преобразование координат
    rotate              % повернуть систему координат (угол в градусах берём с вершины стека)
    15 0 moveto         % перейти в точку (15мм, 0мм)
    (Wikipedia) show    % написать слово текущим шрифтом
  grestore              % вернуть преобразование координат
} for                 % конец цикла for
 
showpage              % вывести страницу

Вывод программы

Тенденции и перспективы

В настоящее время помимо PostScript на рынке лазерных принтеров широкое распространение получил язык управления принтером PCL, разработанный Hewlett-Packard. PCL изначально нацеливался на иные задачи, чем PostScript (управление принтером, а не описание страницы), и не может обеспечивать переносимость. Однако для офисного использования он в ряде случаев более удобен.

PCL использует стандартные Windows-шрифты TrueType (в отличие от PostScript). Кроме того, последняя его версия (PCL6) разрабатывалась HP в тесном сотрудничестве с Microsoft и потому обеспечивает ускоренный возврат ответа в приложение, быструю печать сложных графических изображений, улучшенное качество печати и повышенную точность при выводе документов.

Кроме того, язык PostScript предполагает лицензирование и выплату лицензионных отчислений Adobe с каждого контроллера RIP (Raster Image Processor), в то время как язык PCL может использоваться сторонними производителями бесплатно. Поэтому в настоящее время лицензированные RIP PostScript 3 для плоттеров производства HP стоят около 500 долларов, в то время как нелицензированные контроллеры — «эмуляция PS2» производства OKI стоят 30-70 долларов.

В результате, если десять лет назад практически все лазерные принтеры поддерживали PostScript в качестве основного языка, то в настоящее время множество лазерных принтеров класса SOHO не оснащается поддержкой PostScript с целью удешевления. Таким образом, PostScript вытесняется из офисов языком PCL, оставаясь, тем не менее, практически безальтернативным стандартом в области допечатной подготовки.

Напишите отзыв о статье "PostScript"

Примечания

  1. Evan Danaher. [www.tjhsst.edu/~edanaher/pslife/ Life in PostScript] (англ.). — Игра «Жизнь» на языке PostScript (GPL). — «англ. I learned that Postscript is a real language, not just for graphics. So I spent a bit of time learning it, and wanted to do something interesting in it. So of course, the obvious choice was John Conway's game of life.»  Проверено 9 апреля 2012. [www.webcitation.org/67fz9xU2a Архивировано из первоисточника 15 мая 2012].

Ссылки

  1. postscript-vk.narod.ru - Книга на русском языке с описанием основных команд языка PostScript и конкретными примерами программ
  2. psdraw.narod.ru — Русский сайт о языке и технологии PostScript
  3. [www.prepressure.com/ps/history/history.htm The history of PostScript]
  4. [web.archive.org/web/20010414163008/www.geocities.com/SiliconValley/5682/PSHistory.html History of PostScript]
  5. [www.cs.indiana.edu/docproject/programming/postscript/postscript.html First Guide to PostScript]
  6. [partners.adobe.com/public/developer/en/ps/PLRM.pdf PostScript Language Reference, 3rd ed. Published by Addison-Wesley, ISBN 0-201-37922-8]
  7. [www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF PostScript Language Tutorial and Cookbook]
  8. [web.archive.org/web/20000914161447/www.rightbrain.com/download/books/ThinkingInPostScript.pdf Glenn C. Reid. Thinking in PostScript. Addison-Wesley, 1990.]
  9. Роберт Шимонски. Освой самостоятельно Unix. 10 минут на урок = Sams Teach Yourself Unix in 10 Minutes. — М.: «Вильямс», 2006. — С. 272. — ISBN 0-672-32764-3.
  10. С. Немнюгин, М. Чаунин, А. Комолкин. Эффективная работа в UNIX. СПб.: «Питер», 2001. ISBN 5-272-00197-4
  11. [www.ict.edu.ru/ft/001777//index.html Романовский Иосиф Владимирович, Столяр Сергей Ефимович. «Стеки и стековые языки»], Учебное пособие. — СПб.: Издательство ЦПО «Информатизация образования», 2002. — 35 с.
  12. [www.adobe.com/print/features/psvspdf/ PostScript или PDF? (англ.)]
  13. [www.itunion.ru/news/index.phtml?act=show&tid=6&fid=11144 Языки PCL и PostScript]
  14. [web.archive.org/web/20100603203600/www.adobe.com/devnet/postscript/pdfs/5001.DSC_Spec.pdf PostScript Language Document Structuring Conventions Specification. Version 3. 25 September 1992]
  15. [www.adobe.com/devnet/postscript/pdfs/TN5602.HalfToning.pdf Halftones and Screens. Adobe® Developers Association. 9 October 1997]

Отрывок, характеризующий PostScript

К десяти часам уже человек двадцать унесли с батареи; два орудия были разбиты, чаще и чаще на батарею попадали снаряды и залетали, жужжа и свистя, дальние пули. Но люди, бывшие на батарее, как будто не замечали этого; со всех сторон слышался веселый говор и шутки.
– Чиненка! – кричал солдат на приближающуюся, летевшую со свистом гранату. – Не сюда! К пехотным! – с хохотом прибавлял другой, заметив, что граната перелетела и попала в ряды прикрытия.
– Что, знакомая? – смеялся другой солдат на присевшего мужика под пролетевшим ядром.
Несколько солдат собрались у вала, разглядывая то, что делалось впереди.
– И цепь сняли, видишь, назад прошли, – говорили они, указывая через вал.
– Свое дело гляди, – крикнул на них старый унтер офицер. – Назад прошли, значит, назади дело есть. – И унтер офицер, взяв за плечо одного из солдат, толкнул его коленкой. Послышался хохот.
– К пятому орудию накатывай! – кричали с одной стороны.
– Разом, дружнее, по бурлацки, – слышались веселые крики переменявших пушку.
– Ай, нашему барину чуть шляпку не сбила, – показывая зубы, смеялся на Пьера краснорожий шутник. – Эх, нескладная, – укоризненно прибавил он на ядро, попавшее в колесо и ногу человека.
– Ну вы, лисицы! – смеялся другой на изгибающихся ополченцев, входивших на батарею за раненым.
– Аль не вкусна каша? Ах, вороны, заколянились! – кричали на ополченцев, замявшихся перед солдатом с оторванной ногой.
– Тое кое, малый, – передразнивали мужиков. – Страсть не любят.
Пьер замечал, как после каждого попавшего ядра, после каждой потери все более и более разгоралось общее оживление.
Как из придвигающейся грозовой тучи, чаще и чаще, светлее и светлее вспыхивали на лицах всех этих людей (как бы в отпор совершающегося) молнии скрытого, разгорающегося огня.
Пьер не смотрел вперед на поле сражения и не интересовался знать о том, что там делалось: он весь был поглощен в созерцание этого, все более и более разгорающегося огня, который точно так же (он чувствовал) разгорался и в его душе.
В десять часов пехотные солдаты, бывшие впереди батареи в кустах и по речке Каменке, отступили. С батареи видно было, как они пробегали назад мимо нее, неся на ружьях раненых. Какой то генерал со свитой вошел на курган и, поговорив с полковником, сердито посмотрев на Пьера, сошел опять вниз, приказав прикрытию пехоты, стоявшему позади батареи, лечь, чтобы менее подвергаться выстрелам. Вслед за этим в рядах пехоты, правее батареи, послышался барабан, командные крики, и с батареи видно было, как ряды пехоты двинулись вперед.
Пьер смотрел через вал. Одно лицо особенно бросилось ему в глаза. Это был офицер, который с бледным молодым лицом шел задом, неся опущенную шпагу, и беспокойно оглядывался.
Ряды пехотных солдат скрылись в дыму, послышался их протяжный крик и частая стрельба ружей. Через несколько минут толпы раненых и носилок прошли оттуда. На батарею еще чаще стали попадать снаряды. Несколько человек лежали неубранные. Около пушек хлопотливее и оживленнее двигались солдаты. Никто уже не обращал внимания на Пьера. Раза два на него сердито крикнули за то, что он был на дороге. Старший офицер, с нахмуренным лицом, большими, быстрыми шагами переходил от одного орудия к другому. Молоденький офицерик, еще больше разрумянившись, еще старательнее командовал солдатами. Солдаты подавали заряды, поворачивались, заряжали и делали свое дело с напряженным щегольством. Они на ходу подпрыгивали, как на пружинах.
Грозовая туча надвинулась, и ярко во всех лицах горел тот огонь, за разгоранием которого следил Пьер. Он стоял подле старшего офицера. Молоденький офицерик подбежал, с рукой к киверу, к старшему.
– Имею честь доложить, господин полковник, зарядов имеется только восемь, прикажете ли продолжать огонь? – спросил он.
– Картечь! – не отвечая, крикнул старший офицер, смотревший через вал.
Вдруг что то случилось; офицерик ахнул и, свернувшись, сел на землю, как на лету подстреленная птица. Все сделалось странно, неясно и пасмурно в глазах Пьера.
Одно за другим свистели ядра и бились в бруствер, в солдат, в пушки. Пьер, прежде не слыхавший этих звуков, теперь только слышал одни эти звуки. Сбоку батареи, справа, с криком «ура» бежали солдаты не вперед, а назад, как показалось Пьеру.
Ядро ударило в самый край вала, перед которым стоял Пьер, ссыпало землю, и в глазах его мелькнул черный мячик, и в то же мгновенье шлепнуло во что то. Ополченцы, вошедшие было на батарею, побежали назад.
– Все картечью! – кричал офицер.
Унтер офицер подбежал к старшему офицеру и испуганным шепотом (как за обедом докладывает дворецкий хозяину, что нет больше требуемого вина) сказал, что зарядов больше не было.
– Разбойники, что делают! – закричал офицер, оборачиваясь к Пьеру. Лицо старшего офицера было красно и потно, нахмуренные глаза блестели. – Беги к резервам, приводи ящики! – крикнул он, сердито обходя взглядом Пьера и обращаясь к своему солдату.
– Я пойду, – сказал Пьер. Офицер, не отвечая ему, большими шагами пошел в другую сторону.
– Не стрелять… Выжидай! – кричал он.
Солдат, которому приказано было идти за зарядами, столкнулся с Пьером.
– Эх, барин, не место тебе тут, – сказал он и побежал вниз. Пьер побежал за солдатом, обходя то место, на котором сидел молоденький офицерик.
Одно, другое, третье ядро пролетало над ним, ударялось впереди, с боков, сзади. Пьер сбежал вниз. «Куда я?» – вдруг вспомнил он, уже подбегая к зеленым ящикам. Он остановился в нерешительности, идти ему назад или вперед. Вдруг страшный толчок откинул его назад, на землю. В то же мгновенье блеск большого огня осветил его, и в то же мгновенье раздался оглушающий, зазвеневший в ушах гром, треск и свист.
Пьер, очнувшись, сидел на заду, опираясь руками о землю; ящика, около которого он был, не было; только валялись зеленые обожженные доски и тряпки на выжженной траве, и лошадь, трепля обломками оглобель, проскакала от него, а другая, так же как и сам Пьер, лежала на земле и пронзительно, протяжно визжала.


Пьер, не помня себя от страха, вскочил и побежал назад на батарею, как на единственное убежище от всех ужасов, окружавших его.
В то время как Пьер входил в окоп, он заметил, что на батарее выстрелов не слышно было, но какие то люди что то делали там. Пьер не успел понять того, какие это были люди. Он увидел старшего полковника, задом к нему лежащего на валу, как будто рассматривающего что то внизу, и видел одного, замеченного им, солдата, который, прорываясь вперед от людей, державших его за руку, кричал: «Братцы!» – и видел еще что то странное.
Но он не успел еще сообразить того, что полковник был убит, что кричавший «братцы!» был пленный, что в глазах его был заколон штыком в спину другой солдат. Едва он вбежал в окоп, как худощавый, желтый, с потным лицом человек в синем мундире, со шпагой в руке, набежал на него, крича что то. Пьер, инстинктивно обороняясь от толчка, так как они, не видав, разбежались друг против друга, выставил руки и схватил этого человека (это был французский офицер) одной рукой за плечо, другой за гордо. Офицер, выпустив шпагу, схватил Пьера за шиворот.
Несколько секунд они оба испуганными глазами смотрели на чуждые друг другу лица, и оба были в недоумении о том, что они сделали и что им делать. «Я ли взят в плен или он взят в плен мною? – думал каждый из них. Но, очевидно, французский офицер более склонялся к мысли, что в плен взят он, потому что сильная рука Пьера, движимая невольным страхом, все крепче и крепче сжимала его горло. Француз что то хотел сказать, как вдруг над самой головой их низко и страшно просвистело ядро, и Пьеру показалось, что голова французского офицера оторвана: так быстро он согнул ее.
Пьер тоже нагнул голову и отпустил руки. Не думая более о том, кто кого взял в плен, француз побежал назад на батарею, а Пьер под гору, спотыкаясь на убитых и раненых, которые, казалось ему, ловят его за ноги. Но не успел он сойти вниз, как навстречу ему показались плотные толпы бегущих русских солдат, которые, падая, спотыкаясь и крича, весело и бурно бежали на батарею. (Это была та атака, которую себе приписывал Ермолов, говоря, что только его храбрости и счастью возможно было сделать этот подвиг, и та атака, в которой он будто бы кидал на курган Георгиевские кресты, бывшие у него в кармане.)
Французы, занявшие батарею, побежали. Наши войска с криками «ура» так далеко за батарею прогнали французов, что трудно было остановить их.
С батареи свезли пленных, в том числе раненого французского генерала, которого окружили офицеры. Толпы раненых, знакомых и незнакомых Пьеру, русских и французов, с изуродованными страданием лицами, шли, ползли и на носилках неслись с батареи. Пьер вошел на курган, где он провел более часа времени, и из того семейного кружка, который принял его к себе, он не нашел никого. Много было тут мертвых, незнакомых ему. Но некоторых он узнал. Молоденький офицерик сидел, все так же свернувшись, у края вала, в луже крови. Краснорожий солдат еще дергался, но его не убирали.
Пьер побежал вниз.
«Нет, теперь они оставят это, теперь они ужаснутся того, что они сделали!» – думал Пьер, бесцельно направляясь за толпами носилок, двигавшихся с поля сражения.
Но солнце, застилаемое дымом, стояло еще высоко, и впереди, и в особенности налево у Семеновского, кипело что то в дыму, и гул выстрелов, стрельба и канонада не только не ослабевали, но усиливались до отчаянности, как человек, который, надрываясь, кричит из последних сил.


Главное действие Бородинского сражения произошло на пространстве тысячи сажен между Бородиным и флешами Багратиона. (Вне этого пространства с одной стороны была сделана русскими в половине дня демонстрация кавалерией Уварова, с другой стороны, за Утицей, было столкновение Понятовского с Тучковым; но это были два отдельные и слабые действия в сравнении с тем, что происходило в середине поля сражения.) На поле между Бородиным и флешами, у леса, на открытом и видном с обеих сторон протяжении, произошло главное действие сражения, самым простым, бесхитростным образом.
Сражение началось канонадой с обеих сторон из нескольких сотен орудий.
Потом, когда дым застлал все поле, в этом дыму двинулись (со стороны французов) справа две дивизии, Дессе и Компана, на флеши, и слева полки вице короля на Бородино.
От Шевардинского редута, на котором стоял Наполеон, флеши находились на расстоянии версты, а Бородино более чем в двух верстах расстояния по прямой линии, и поэтому Наполеон не мог видеть того, что происходило там, тем более что дым, сливаясь с туманом, скрывал всю местность. Солдаты дивизии Дессе, направленные на флеши, были видны только до тех пор, пока они не спустились под овраг, отделявший их от флеш. Как скоро они спустились в овраг, дым выстрелов орудийных и ружейных на флешах стал так густ, что застлал весь подъем той стороны оврага. Сквозь дым мелькало там что то черное – вероятно, люди, и иногда блеск штыков. Но двигались ли они или стояли, были ли это французы или русские, нельзя было видеть с Шевардинского редута.
Солнце взошло светло и било косыми лучами прямо в лицо Наполеона, смотревшего из под руки на флеши. Дым стлался перед флешами, и то казалось, что дым двигался, то казалось, что войска двигались. Слышны были иногда из за выстрелов крики людей, но нельзя было знать, что они там делали.
Наполеон, стоя на кургане, смотрел в трубу, и в маленький круг трубы он видел дым и людей, иногда своих, иногда русских; но где было то, что он видел, он не знал, когда смотрел опять простым глазом.
Он сошел с кургана и стал взад и вперед ходить перед ним.
Изредка он останавливался, прислушивался к выстрелам и вглядывался в поле сражения.
Не только с того места внизу, где он стоял, не только с кургана, на котором стояли теперь некоторые его генералы, но и с самых флешей, на которых находились теперь вместе и попеременно то русские, то французские, мертвые, раненые и живые, испуганные или обезумевшие солдаты, нельзя было понять того, что делалось на этом месте. В продолжение нескольких часов на этом месте, среди неумолкаемой стрельбы, ружейной и пушечной, то появлялись одни русские, то одни французские, то пехотные, то кавалерийские солдаты; появлялись, падали, стреляли, сталкивались, не зная, что делать друг с другом, кричали и бежали назад.
С поля сражения беспрестанно прискакивали к Наполеону его посланные адъютанты и ординарцы его маршалов с докладами о ходе дела; но все эти доклады были ложны: и потому, что в жару сражения невозможно сказать, что происходит в данную минуту, и потому, что многие адъютапты не доезжали до настоящего места сражения, а передавали то, что они слышали от других; и еще потому, что пока проезжал адъютант те две три версты, которые отделяли его от Наполеона, обстоятельства изменялись и известие, которое он вез, уже становилось неверно. Так от вице короля прискакал адъютант с известием, что Бородино занято и мост на Колоче в руках французов. Адъютант спрашивал у Наполеона, прикажет ли он пореходить войскам? Наполеон приказал выстроиться на той стороне и ждать; но не только в то время как Наполеон отдавал это приказание, но даже когда адъютант только что отъехал от Бородина, мост уже был отбит и сожжен русскими, в той самой схватке, в которой участвовал Пьер в самом начале сраженья.
Прискакавший с флеш с бледным испуганным лицом адъютант донес Наполеону, что атака отбита и что Компан ранен и Даву убит, а между тем флеши были заняты другой частью войск, в то время как адъютанту говорили, что французы были отбиты, и Даву был жив и только слегка контужен. Соображаясь с таковыми необходимо ложными донесениями, Наполеон делал свои распоряжения, которые или уже были исполнены прежде, чем он делал их, или же не могли быть и не были исполняемы.
Маршалы и генералы, находившиеся в более близком расстоянии от поля сражения, но так же, как и Наполеон, не участвовавшие в самом сражении и только изредка заезжавшие под огонь пуль, не спрашиваясь Наполеона, делали свои распоряжения и отдавали свои приказания о том, куда и откуда стрелять, и куда скакать конным, и куда бежать пешим солдатам. Но даже и их распоряжения, точно так же как распоряжения Наполеона, точно так же в самой малой степени и редко приводились в исполнение. Большей частью выходило противное тому, что они приказывали. Солдаты, которым велено было идти вперед, подпав под картечный выстрел, бежали назад; солдаты, которым велено было стоять на месте, вдруг, видя против себя неожиданно показавшихся русских, иногда бежали назад, иногда бросались вперед, и конница скакала без приказания догонять бегущих русских. Так, два полка кавалерии поскакали через Семеновский овраг и только что въехали на гору, повернулись и во весь дух поскакали назад. Так же двигались и пехотные солдаты, иногда забегая совсем не туда, куда им велено было. Все распоряжение о том, куда и когда подвинуть пушки, когда послать пеших солдат – стрелять, когда конных – топтать русских пеших, – все эти распоряжения делали сами ближайшие начальники частей, бывшие в рядах, не спрашиваясь даже Нея, Даву и Мюрата, не только Наполеона. Они не боялись взыскания за неисполнение приказания или за самовольное распоряжение, потому что в сражении дело касается самого дорогого для человека – собственной жизни, и иногда кажется, что спасение заключается в бегстве назад, иногда в бегстве вперед, и сообразно с настроением минуты поступали эти люди, находившиеся в самом пылу сражения. В сущности же, все эти движения вперед и назад не облегчали и не изменяли положения войск. Все их набегания и наскакивания друг на друга почти не производили им вреда, а вред, смерть и увечья наносили ядра и пули, летавшие везде по тому пространству, по которому метались эти люди. Как только эти люди выходили из того пространства, по которому летали ядра и пули, так их тотчас же стоявшие сзади начальники формировали, подчиняли дисциплине и под влиянием этой дисциплины вводили опять в область огня, в которой они опять (под влиянием страха смерти) теряли дисциплину и метались по случайному настроению толпы.


Генералы Наполеона – Даву, Ней и Мюрат, находившиеся в близости этой области огня и даже иногда заезжавшие в нее, несколько раз вводили в эту область огня стройные и огромные массы войск. Но противно тому, что неизменно совершалось во всех прежних сражениях, вместо ожидаемого известия о бегстве неприятеля, стройные массы войск возвращались оттуда расстроенными, испуганными толпами. Они вновь устроивали их, но людей все становилось меньше. В половине дня Мюрат послал к Наполеону своего адъютанта с требованием подкрепления.
Наполеон сидел под курганом и пил пунш, когда к нему прискакал адъютант Мюрата с уверениями, что русские будут разбиты, ежели его величество даст еще дивизию.
– Подкрепления? – сказал Наполеон с строгим удивлением, как бы не понимая его слов и глядя на красивого мальчика адъютанта с длинными завитыми черными волосами (так же, как носил волоса Мюрат). «Подкрепления! – подумал Наполеон. – Какого они просят подкрепления, когда у них в руках половина армии, направленной на слабое, неукрепленное крыло русских!»
– Dites au roi de Naples, – строго сказал Наполеон, – qu'il n'est pas midi et que je ne vois pas encore clair sur mon echiquier. Allez… [Скажите неаполитанскому королю, что теперь еще не полдень и что я еще не ясно вижу на своей шахматной доске. Ступайте…]
Красивый мальчик адъютанта с длинными волосами, не отпуская руки от шляпы, тяжело вздохнув, поскакал опять туда, где убивали людей.
Наполеон встал и, подозвав Коленкура и Бертье, стал разговаривать с ними о делах, не касающихся сражения.
В середине разговора, который начинал занимать Наполеона, глаза Бертье обратились на генерала с свитой, который на потной лошади скакал к кургану. Это был Бельяр. Он, слезши с лошади, быстрыми шагами подошел к императору и смело, громким голосом стал доказывать необходимость подкреплений. Он клялся честью, что русские погибли, ежели император даст еще дивизию.
Наполеон вздернул плечами и, ничего не ответив, продолжал свою прогулку. Бельяр громко и оживленно стал говорить с генералами свиты, окружившими его.
– Вы очень пылки, Бельяр, – сказал Наполеон, опять подходя к подъехавшему генералу. – Легко ошибиться в пылу огня. Поезжайте и посмотрите, и тогда приезжайте ко мне.
Не успел еще Бельяр скрыться из вида, как с другой стороны прискакал новый посланный с поля сражения.
– Eh bien, qu'est ce qu'il y a? [Ну, что еще?] – сказал Наполеон тоном человека, раздраженного беспрестанными помехами.
– Sire, le prince… [Государь, герцог…] – начал адъютант.
– Просит подкрепления? – с гневным жестом проговорил Наполеон. Адъютант утвердительно наклонил голову и стал докладывать; но император отвернулся от него, сделав два шага, остановился, вернулся назад и подозвал Бертье. – Надо дать резервы, – сказал он, слегка разводя руками. – Кого послать туда, как вы думаете? – обратился он к Бертье, к этому oison que j'ai fait aigle [гусенку, которого я сделал орлом], как он впоследствии называл его.