Алгол 68

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

Алго́л 68 (англ. Algol 68 от англ. algorithmic — алгоритмический и англ. language — язык) — процедурный императивный высокоуровневый язык программирования, потомок языка Алгол, существенно доработанный. Разрабатывался в период 19641968 годов. Позиционировался как универсальный язык для описания произвольных алгоритмов обработки данных высокой сложности. Отличается большим объёмом, богатством возможностей и сложностью синтаксиса.





Особенности

Несмотря на схожесть названия и официальную преемственность по отношению к языку Алгол 60, Алгол 68 унаследовал от него лишь некоторые элементы синтаксиса и существенно отличается от языка-предшественника прежде всего наличием большого числа дополнительных синтаксических средств и изобразительных возможностей. В частности, он включает встроенные в язык средства организации параллельных вычислений, операции со структурами как с едиными объектами, матричные операции.

Наиболее характерной особенностью синтаксиса Алгола-68 является возможность переопределения синтаксиса и операторов — программист может активно расширять язык в требуемом направлении, создавать собственные операции. Целью включения таких средств в язык было достижение максимальной выразительности и получение возможности удобного описания максимально абстрактных алгоритмов. За эти возможности, а также за наличие мощных операторов для обработки структур и массивов Алгол 68 иногда называют «языком сверхвысокого уровня».

Формально Алгол 68 является процедурным языком программирования, ориентированным на описание последовательности команд, но благодаря развитым средствам описания типов и операций он может быть использован для написания программ практически в любом стиле. Так, в приведённом ниже примере программа на Алголе-68 написана в функциональном стиле.

Эта программа реализует классический алгоритм «Решето Эратосфена» для поиска всех простых чисел меньше 100. nil означает null pointer (нулевой указатель) в других языках. Нотация x of y означает «доступ к x как к элементу struct или union y».

begin # Algol-68 prime number sieve, functional style #

  proc error = (string s) void:
     (print(( newline, " error: ", s, newline)); goto stop);
  proc one to = (int n) list:
     (proc f = (int m,n) list: (m>n | nil | cons(m, f(m+1,n))); f(1,n));

  mode list = ref node;
  mode node = struct (int h, list t);
  proc cons = (int n, list l) list: heap node := (n,l);
  proc hd   = (list l) int: ( l is nil | error("hd nil"); skip | h of l );
  proc tl   = (list l) list: ( l is nil | error("tl nil"); skip | t of l );
  proc show = (list l) void: ( l isnt nil | print((" ",whole(hd(l),0))); show(tl(l)));

  proc filter = (proc (int) bool p, list l) list:
     if l is nil then nil 
     elif p(hd(l)) then cons(hd(l), filter(p,tl(l)))
     else filter(p, tl(l))
     fi;

  proc sieve = (list l) list:
     if l is nil then nil 
     else
        proc not multiple = (int n) bool: n mod hd(l) ≠ 0;
        cons(hd(l), sieve( filter( not multiple, tl(l) )))
     fi;

  proc primes = (int n) list: sieve( tl( one to(n) ));

  show( primes(100) )
end

Ещё одна интересная особенность языка Алгол 68 — его «многоязычность» — в язык заложена возможность использования различных таблиц трансляции, что позволяет для каждого естественного языка определить свой набор ключевых слов Алгола-68. В результате программисты получают возможность писать программы ключевыми словами родного языка. Ниже приведён пример простейшей процедуры на Алголе-68, выполняющей вычисление даты, следующей за переданной в параметре, на двух языках: английском и немецком.

 # Next day date - english variant
 mode date = struct(Int day, string month, Int year);
 proc the day following = (date x) date:
      If day of  x < length of month (month of x, year of x)
      then (day of x + 1, month of x, year of x)
      elif month of x = "December"
      then (1, "January", year of x + 1)
      else (1, successor of month (month of x), year of x)
      fi;
 # Nachfolgetag - Deutsche Variante
 menge datum = tupel(ganz tag, wort monat, ganz Jahr);
 funktion naechster tag nach = (datum x) datum:
          wenn tag von x < monatslaenge(monat von x, jahr von x)
          dann (tag von x + 1, monat von x, jahr von x)
          wennaber monat von x = "Dezember"
          dann (1, "Januar", jahr von x + 1)
          ansonsten (1, nachfolgemonat(monat von x), jahr von x)
          endewenn;      

История языка

К 1960 году была закончена работа Комитета по языку высокого уровня IFIP (International Federation for Information Processing, Международная федерация по обработке информации), сформировавшего один из первых «классических» ЯВУ — Алгол. Алгол сразу же завоевал популярность, в первую очередь — в академических кругах Европы, не только как язык практического программирования, но и как универсальный язык описания вычислительных алгоритмов в научных работах. Но уже тогда было ясно, что Алгол не идеален и требует доработки. С одной стороны, в языке отсутствовали некоторые весьма желательные возможности, с другой — некоторые механизмы и конструкции Алгола использовались настолько редко, что встал вопрос об исключении их из языка для упрощения транслятора. В результате к 1962 году IFIP собрал из специалистов множества стран Западной Европы и Америки новый комитет по Алголу. Комитету было поставлено две задачи:

  • Согласовать и утвердить сокращённый вариант Алгола, в котором отсутствовали бы редко используемые конструкции исходного языка.
  • Создать язык-преемник Алгола с учётом известных достоинств и недостатков языка-предка.

Работа комитета длилась в течение шести лет — с 1962 по 1968 годы. Довольно быстро комитету удалось выполнить первую задачу — согласовать сокращённое подмножество Алгола, содержащее только широко используемые его элементы. Вопрос же о языке-преемнике решался в течение нескольких лет, в постоянных дискуссиях. Двое членов комитета: Чарльз Хоар из Оксфордского университета и Никлаус Вирт из Швейцарии (в то время он преподавал в США, в Станфордском университете) в 1965 году предложили комитету свой вариант нового языка, названного ими Algol-W. Он представлял собой умеренную переработку Алгола, очищенную от известных недостатков и дополненную минимумом необходимых возможностей. Будучи опубликован, проект был положительно оценён многими учёными, но комитет отклонил его. Предложений, различной степени проработанности, было много, часть из них отвергалась, часть была использована в проектировании языка. В декабре 1968 года в Мюнхене, на заседании комитета был официально представлен новый язык программирования, получивший название Алгол 68. Язык оказался чрезвычайно развитым, но при этом весьма объёмным и сложным. Даже опытные программисты испытывали затруднения в понимании «сообщения о языке», выпущенного комитетом.

Официальные документы комитета оценивают проделанную им работу положительно, хотя некоторые из членов комитета высказывались как о работе, так и о её результатах, крайне негативно. Из критиков языка наиболее известны вышеупомянутые Чарльз Хоар и Никлаус Вирт. Хоар ещё во время работы комитета критиковал проект за «неясность, сложность и сверхамбициозность». По завершении работы комитета Хоар, Вирт и ещё ряд учёных создали небольшой доклад, излагающий критику нового языка. В его резюмирующей части говорилось: «как инструмент надёжного создания сложных программ язык следует признать неудачным» (этот доклад был запрещён к распространению руководством IFIP). Впоследствии, в 1980 году, в своей Тьюринговской лекции Хоар подробно останавливался на работе комитета по Алголу-68, недостатках как процесса разработки языка, так и его самого.

Для описания языка был использован оригинальный формализм — двухуровневые грамматики ван Вейнгаардена. Это позволило добиться строгости описания (поскольку этот тип грамматик позволяет описывать в формальном виде контекстные условия, которые при описании языка в БНФ или РБНФ приходится передавать словесно), но ещё больше усложнило описание. Кроме того, по грамматикам ван Вейнгаардена крайне затруднительно прямо построить анализатор языка, поэтому исходное описание можно было рассматривать лишь как первоначальную форму спецификации синтаксиса, требующую серьёзной модификации для реального практического применения. Выбранный комитетом формализм описания языка предопределил сложности в его реализации. Процесс разработки компиляторов под новый язык оказался сложным и длительным, хотя в конечном итоге они были созданы и использовались.

Того успеха, который имел Алгол 60, Алгол 68 не достиг. В академических кругах он оказался не востребован из-за сложности и громоздкости, а в промышленном программировании не смог потеснить широко используемые в то время Фортран и Кобол. В каком-то смысле Алгол 68 повторил судьбу языка PL/1, разработанного в 1964 году комитетом под эгидой IBM для System/360 в качестве замены Фортрана и Кобола — в обоих случаях большие по численности комитеты, пытаясь удовлетворить потребности совершенно различных заинтересованных групп пользователей, включили в язык множество весьма мощных, но не используемых всеми или даже большинством разработчиков средств, получив в результате мощный, но громоздкий, неуправляемый и трудно реализуемый инструмент. Если в случае с PL/1 это привело к фактическому распаду языка на подмножества (большинство, возможно, даже все компиляторы PL/1, существовавшие в мире, реализовывали только часть возможностей языка), то Алгол 68 всё-таки был реализован в полном объёме, но число таких реализаций оказалось крайне невелико и использование языка было довольно ограниченным. В Европе Алгол 68 в течение длительного времени использовал Британский королевский комитет по связи и радиолокации. В СССР существовали рабочие группы по разработкам на Алголе-68 (например, новосибирская под руководством академика Андрея Петровича Ершова, ленинградская под руководством Андрея Николаевича Терехова, московские под руководством Александра Николаевича Маслова и Михаила Рувимовича Левинсона). В Ленинградском государственном университете был создан компилятор и мощная система программирования на Алголе-68 для ЕС ЭВМ, эксплуатировавшаяся в течение многих лет. Тем не менее, широкого распространения язык также не получил.

Возможно, одним из факторов, предопределивших фактический провал Алгола-68, стало появление в начале 1970 годов нового поколения языков высокого уровня, среди которых особую роль сыграл Pascal — по сути, тот самый «улучшенный и дополненный вариант Алгола», которого ждали в академической среде от комитета по Алголу-68, но гораздо более простой. Его широкое распространение практически не оставило ниши для Алгола-68.

Несмотря на неудачу, Алгол 68 повлиял на разработчиков более поздних объектно-ориентированных языков, в частности C++, хотя многие возможности были отброшены, а часть — реализована другими способами. В 1977 году, когда комитет по языку программирования Министерства обороны США пришёл к выводу о необходимости разработки нового языка программирования встроенных систем, по решению комитета, предложения по будущему языку должны были базироваться на одном из языков PL/1, Pascal и Алгол 68. Таким образом, у Алгола-68 был шанс стать прародителем нового универсального языка, но этот шанс не осуществился: из 15 представленных на конкурс проектов все 4, отобранные на второй этап для доработки, были основаны на языке Pascal. После ещё одного этапа доработки лучший из этих проектов стал языком Ада.

Критика языка

Прежде всего, отрицательные отзывы касаются сложности синтаксиса Алгола-68. В частности, Хоар отмечал, что, отойдя от простоты языка-прародителя, новый язык совершенно не облегчает разработку программ. Как говорил Хоар, «члены комитета использовали постоянные задержки в его работе, чтобы втиснуть в будущий язык всё более сложные конструкции, вместо того, чтобы попытаться упростить его».

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

Напишите отзыв о статье "Алгол 68"

Литература

  • «Практическое руководство по Алголу 68», Пейган Ф. Дж. Пер. с англ. — М., Мир, 1979—240 с.
  • «Пересмотренное сообщение об Алголе 68», ред. А. ван Вейнгаарден. Пер. с англ. — М., Мир, 1979—533 с.
  • «Алгол 68: Методы реализации», А. Н. Балуев и др., под ред. Г. С. Цейтина — Л. изд-во Ленингр. ун-та, 1976—224 с.
  • «Неформальное введение в Алгол 68», Ч. Линдси, С. ван дер Мюйлен. Пер. с англ., 1973—408 с.
  • Роберт В Себеста. Глава 2.11. Ортогональная структура: язык ALGOL 68 // Основные концепции языков программирования = Concepts of Programming Languages. — 5-е изд. — М.: «Вильямс», 2001. — С. 672. — ISBN 5-8459-0192-8.
  • Язык компьютера. — М.: Мир, 1989. — С. 163, 190, 194. — ISBN 5-03-001148-X.
  • ГОСТ 27974-88 — Язык программирования АЛГОЛ 68
  • ГОСТ 27975-88 — Язык программирования АЛГОЛ 68 расширенный
Литература на английском языке
  • Brailsford, D.F. and Walker, A.N., Introductory ALGOL 68 Programming, Ellis Horwood/Wiley, 1979
  • McGettrick, A.D., ALGOL 68, A First and Second Course, Cambridge Univ. Press, 1978
  • Peck, J.E.L., An ALGOL 68 Companion, Univ. of British Columbia, October 1971
  • Tanenbaum, A.S., A Tutorial on ALGOL 68, Computing Surveys 8, 155—190, June 1976 and 9, 255—256, September 1977, [vestein.arb-phys.uni-dortmund.de/~wb/RR/tanenbaum.pdf]

Ссылки

  • [ershov.iis.nsk.su/archive/eaindex.asp?lang=2&did=11624 Tutorial — on the A68LGU compiler (a computer-printed text). -Date: 19.02.1981]
  • [algol68.sourceforge.net Проект Open source Algol 68 implementations] на сайте SourceForge.net
  • [www.nunan.myzen.co.uk/algol68/pame.pdf Programming Algol 68 Made Easy]
  • [www.computer-museum.ru/histsoft/algol68.htm Из истории создания компилятора с Алгол 68]
  • [www.computer-museum.ru/books/n_mozaika/algol.htm Диалог об Алголе-68 (Авторы просматривают архивные материалы и непринужденно беседуют)]
  • [ant.tepkom.ru/newsite/disser/doc/Ruchlin.htm Система программ динамической поддержки для транслятора с Алгола 68] (недоступная ссылка с 30-05-2013 (3983 дня) — историякопия)
  • [www.diegolucenapumar.com/sda3/home/Algol/Algol%2068/Algol68-RevisedReport.pdf Revised Report on the Algorithmic Language ALGOL 68]  (англ.) — The official reference for users and implementors of the language
  • [jmvdveer.home.xs4all.nl/report.html Revised Report on the Algorithmic Language ALGOL 68]  (англ.) — HTML version of the above
  • [www.cs.man.ac.uk/~chl/index.html Charles Lindsey’s paper on the development of ALGOL 68 for the 2nd History of Programming Languages conference proceedings]  (англ.)
  • [www.fh-jena.de/~kleine/history/languages/Algol68-RR-HardwareRepresentation.pdf Algol68 Standard Hardware representation]  (англ.)
  • [www.softwarepreservation.org/projects/ALGOL/ History of ALGOL]

Отрывок, характеризующий Алгол 68

– Только для чего же в Петербург! – вдруг сказала Наташа, и сама же поспешно ответила себе: – Нет, нет, это так надо… Да, Мари? Так надо…


Прошло семь лет после 12 го года. Взволнованное историческое море Европы улеглось в свои берега. Оно казалось затихшим; но таинственные силы, двигающие человечество (таинственные потому, что законы, определяющие их движение, неизвестны нам), продолжали свое действие.
Несмотря на то, что поверхность исторического моря казалась неподвижною, так же непрерывно, как движение времени, двигалось человечество. Слагались, разлагались различные группы людских сцеплений; подготовлялись причины образования и разложения государств, перемещений народов.
Историческое море, не как прежде, направлялось порывами от одного берега к другому: оно бурлило в глубине. Исторические лица, не как прежде, носились волнами от одного берега к другому; теперь они, казалось, кружились на одном месте. Исторические лица, прежде во главе войск отражавшие приказаниями войн, походов, сражений движение масс, теперь отражали бурлившее движение политическими и дипломатическими соображениями, законами, трактатами…
Эту деятельность исторических лиц историки называют реакцией.
Описывая деятельность этих исторических лиц, бывших, по их мнению, причиною того, что они называют реакцией, историки строго осуждают их. Все известные люди того времени, от Александра и Наполеона до m me Stael, Фотия, Шеллинга, Фихте, Шатобриана и проч., проходят перед их строгим судом и оправдываются или осуждаются, смотря по тому, содействовали ли они прогрессу или реакции.
В России, по их описанию, в этот период времени тоже происходила реакция, и главным виновником этой реакции был Александр I – тот самый Александр I, который, по их же описаниям, был главным виновником либеральных начинаний своего царствования и спасения России.
В настоящей русской литературе, от гимназиста до ученого историка, нет человека, который не бросил бы своего камушка в Александра I за неправильные поступки его в этот период царствования.
«Он должен был поступить так то и так то. В таком случае он поступил хорошо, в таком дурно. Он прекрасно вел себя в начале царствования и во время 12 го года; но он поступил дурно, дав конституцию Польше, сделав Священный Союз, дав власть Аракчееву, поощряя Голицына и мистицизм, потом поощряя Шишкова и Фотия. Он сделал дурно, занимаясь фронтовой частью армии; он поступил дурно, раскассировав Семеновский полк, и т. д.».
Надо бы исписать десять листов для того, чтобы перечислить все те упреки, которые делают ему историки на основании того знания блага человечества, которым они обладают.
Что значат эти упреки?
Те самые поступки, за которые историки одобряют Александра I, – как то: либеральные начинания царствования, борьба с Наполеоном, твердость, выказанная им в 12 м году, и поход 13 го года, не вытекают ли из одних и тех же источников – условий крови, воспитания, жизни, сделавших личность Александра тем, чем она была, – из которых вытекают и те поступки, за которые историки порицают его, как то: Священный Союз, восстановление Польши, реакция 20 х годов?
В чем же состоит сущность этих упреков?
В том, что такое историческое лицо, как Александр I, лицо, стоявшее на высшей возможной ступени человеческой власти, как бы в фокусе ослепляющего света всех сосредоточивающихся на нем исторических лучей; лицо, подлежавшее тем сильнейшим в мире влияниям интриг, обманов, лести, самообольщения, которые неразлучны с властью; лицо, чувствовавшее на себе, всякую минуту своей жизни, ответственность за все совершавшееся в Европе, и лицо не выдуманное, а живое, как и каждый человек, с своими личными привычками, страстями, стремлениями к добру, красоте, истине, – что это лицо, пятьдесят лет тому назад, не то что не было добродетельно (за это историки не упрекают), а не имело тех воззрений на благо человечества, которые имеет теперь профессор, смолоду занимающийся наукой, то есть читанном книжек, лекций и списыванием этих книжек и лекций в одну тетрадку.
Но если даже предположить, что Александр I пятьдесят лет тому назад ошибался в своем воззрении на то, что есть благо народов, невольно должно предположить, что и историк, судящий Александра, точно так же по прошествии некоторого времени окажется несправедливым, в своем воззрении на то, что есть благо человечества. Предположение это тем более естественно и необходимо, что, следя за развитием истории, мы видим, что с каждым годом, с каждым новым писателем изменяется воззрение на то, что есть благо человечества; так что то, что казалось благом, через десять лет представляется злом; и наоборот. Мало того, одновременно мы находим в истории совершенно противоположные взгляды на то, что было зло и что было благо: одни данную Польше конституцию и Священный Союз ставят в заслугу, другие в укор Александру.
Про деятельность Александра и Наполеона нельзя сказать, чтобы она была полезна или вредна, ибо мы не можем сказать, для чего она полезна и для чего вредна. Если деятельность эта кому нибудь не нравится, то она не нравится ему только вследствие несовпадения ее с ограниченным пониманием его о том, что есть благо. Представляется ли мне благом сохранение в 12 м году дома моего отца в Москве, или слава русских войск, или процветание Петербургского и других университетов, или свобода Польши, или могущество России, или равновесие Европы, или известного рода европейское просвещение – прогресс, я должен признать, что деятельность всякого исторического лица имела, кроме этих целей, ещь другие, более общие и недоступные мне цели.
Но положим, что так называемая наука имеет возможность примирить все противоречия и имеет для исторических лиц и событий неизменное мерило хорошего и дурного.
Положим, что Александр мог сделать все иначе. Положим, что он мог, по предписанию тех, которые обвиняют его, тех, которые профессируют знание конечной цели движения человечества, распорядиться по той программе народности, свободы, равенства и прогресса (другой, кажется, нет), которую бы ему дали теперешние обвинители. Положим, что эта программа была бы возможна и составлена и что Александр действовал бы по ней. Что же сталось бы тогда с деятельностью всех тех людей, которые противодействовали тогдашнему направлению правительства, – с деятельностью, которая, по мнению историков, хороша и полезна? Деятельности бы этой не было; жизни бы не было; ничего бы не было.
Если допустить, что жизнь человеческая может управляться разумом, – то уничтожится возможность жизни.


Если допустить, как то делают историки, что великие люди ведут человечество к достижению известных целей, состоящих или в величии России или Франции, или в равновесии Европы, или в разнесении идей революции, или в общем прогрессе, или в чем бы то ни было, то невозможно объяснить явлений истории без понятий о случае и о гении.
Если цель европейских войн начала нынешнего столетия состояла в величии России, то эта цель могла быть достигнута без всех предшествовавших войн и без нашествия. Если цель – величие Франции, то эта цель могла быть достигнута и без революции, и без империи. Если цель – распространение идей, то книгопечатание исполнило бы это гораздо лучше, чем солдаты. Если цель – прогресс цивилизации, то весьма легко предположить, что, кроме истребления людей и их богатств, есть другие более целесообразные пути для распространения цивилизации.
Почему же это случилось так, а не иначе?
Потому что это так случилось. «Случай сделал положение; гений воспользовался им», – говорит история.
Но что такое случай? Что такое гений?
Слова случай и гений не обозначают ничего действительно существующего и потому не могут быть определены. Слова эти только обозначают известную степень понимания явлений. Я не знаю, почему происходит такое то явление; думаю, что не могу знать; потому не хочу знать и говорю: случай. Я вижу силу, производящую несоразмерное с общечеловеческими свойствами действие; не понимаю, почему это происходит, и говорю: гений.
Для стада баранов тот баран, который каждый вечер отгоняется овчаром в особый денник к корму и становится вдвое толще других, должен казаться гением. И то обстоятельство, что каждый вечер именно этот самый баран попадает не в общую овчарню, а в особый денник к овсу, и что этот, именно этот самый баран, облитый жиром, убивается на мясо, должно представляться поразительным соединением гениальности с целым рядом необычайных случайностей.
Но баранам стоит только перестать думать, что все, что делается с ними, происходит только для достижения их бараньих целей; стоит допустить, что происходящие с ними события могут иметь и непонятные для них цели, – и они тотчас же увидят единство, последовательность в том, что происходит с откармливаемым бараном. Ежели они и не будут знать, для какой цели он откармливался, то, по крайней мере, они будут знать, что все случившееся с бараном случилось не нечаянно, и им уже не будет нужды в понятии ни о случае, ни о гении.
Только отрешившись от знаний близкой, понятной цели и признав, что конечная цель нам недоступна, мы увидим последовательность и целесообразность в жизни исторических лиц; нам откроется причина того несоразмерного с общечеловеческими свойствами действия, которое они производят, и не нужны будут нам слова случай и гений.
Стоит только признать, что цель волнений европейских народов нам неизвестна, а известны только факты, состоящие в убийствах, сначала во Франции, потом в Италии, в Африке, в Пруссии, в Австрии, в Испании, в России, и что движения с запада на восток и с востока на запад составляют сущность и цель этих событий, и нам не только не нужно будет видеть исключительность и гениальность в характерах Наполеона и Александра, но нельзя будет представить себе эти лица иначе, как такими же людьми, как и все остальные; и не только не нужно будет объяснять случайностию тех мелких событий, которые сделали этих людей тем, чем они были, но будет ясно, что все эти мелкие события были необходимы.
Отрешившись от знания конечной цели, мы ясно поймем, что точно так же, как ни к одному растению нельзя придумать других, более соответственных ему, цвета и семени, чем те, которые оно производит, точно так же невозможно придумать других двух людей, со всем их прошедшим, которое соответствовало бы до такой степени, до таких мельчайших подробностей тому назначению, которое им предлежало исполнить.


Основной, существенный смысл европейских событий начала нынешнего столетия есть воинственное движение масс европейских народов с запада на восток и потом с востока на запад. Первым зачинщиком этого движения было движение с запада на восток. Для того чтобы народы запада могли совершить то воинственное движение до Москвы, которое они совершили, необходимо было: 1) чтобы они сложились в воинственную группу такой величины, которая была бы в состоянии вынести столкновение с воинственной группой востока; 2) чтобы они отрешились от всех установившихся преданий и привычек и 3) чтобы, совершая свое воинственное движение, они имели во главе своей человека, который, и для себя и для них, мог бы оправдывать имеющие совершиться обманы, грабежи и убийства, которые сопутствовали этому движению.
И начиная с французской революции разрушается старая, недостаточно великая группа; уничтожаются старые привычки и предания; вырабатываются, шаг за шагом, группа новых размеров, новые привычки и предания, и приготовляется тот человек, который должен стоять во главе будущего движения и нести на себе всю ответственность имеющего совершиться.
Человек без убеждений, без привычек, без преданий, без имени, даже не француз, самыми, кажется, странными случайностями продвигается между всеми волнующими Францию партиями и, не приставая ни к одной из них, выносится на заметное место.
Невежество сотоварищей, слабость и ничтожество противников, искренность лжи и блестящая и самоуверенная ограниченность этого человека выдвигают его во главу армии. Блестящий состав солдат итальянской армии, нежелание драться противников, ребяческая дерзость и самоуверенность приобретают ему военную славу. Бесчисленное количество так называемых случайностей сопутствует ему везде. Немилость, в которую он впадает у правителей Франции, служит ему в пользу. Попытки его изменить предназначенный ему путь не удаются: его не принимают на службу в Россию, и не удается ему определение в Турцию. Во время войн в Италии он несколько раз находится на краю гибели и всякий раз спасается неожиданным образом. Русские войска, те самые, которые могут разрушить его славу, по разным дипломатическим соображениям, не вступают в Европу до тех пор, пока он там.
По возвращении из Италии он находит правительство в Париже в том процессе разложения, в котором люди, попадающие в это правительство, неизбежно стираются и уничтожаются. И сам собой для него является выход из этого опасного положения, состоящий в бессмысленной, беспричинной экспедиции в Африку. Опять те же так называемые случайности сопутствуют ему. Неприступная Мальта сдается без выстрела; самые неосторожные распоряжения увенчиваются успехом. Неприятельский флот, который не пропустит после ни одной лодки, пропускает целую армию. В Африке над безоружными почти жителями совершается целый ряд злодеяний. И люди, совершающие злодеяния эти, и в особенности их руководитель, уверяют себя, что это прекрасно, что это слава, что это похоже на Кесаря и Александра Македонского и что это хорошо.
Тот идеал славы и величия, состоящий в том, чтобы не только ничего не считать для себя дурным, но гордиться всяким своим преступлением, приписывая ему непонятное сверхъестественное значение, – этот идеал, долженствующий руководить этим человеком и связанными с ним людьми, на просторе вырабатывается в Африке. Все, что он ни делает, удается ему. Чума не пристает к нему. Жестокость убийства пленных не ставится ему в вину. Ребячески неосторожный, беспричинный и неблагородный отъезд его из Африки, от товарищей в беде, ставится ему в заслугу, и опять неприятельский флот два раза упускает его. В то время как он, уже совершенно одурманенный совершенными им счастливыми преступлениями, готовый для своей роли, без всякой цели приезжает в Париж, то разложение республиканского правительства, которое могло погубить его год тому назад, теперь дошло до крайней степени, и присутствие его, свежего от партий человека, теперь только может возвысить его.