Клу

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

Объектно-ориентированный, процедурный

Тип исполнения:

Компилируемый

Появился в:

1974

Автор:

Барбара Лисков

Расширение файлов:

.clu

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

Строгая, статическая

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

Portable Clu, NativeCLU, Клу-Эльбрус, clu2c

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

Симула, Лисп, Паскаль

Повлиял на:

Ада, C++, Java, Sather

Сайт:

[www.pmg.lcs.mit.edu/CLU.html .lcs.mit.edu/CLU.html]

Клу (англ. Clu, CLU) — объектно-ориентированный язык программирования, одним из первых реализовавший концепцию абстрактных типов данных и парадигму обобщённого программирования. Создан группой учёных Массачусетского технологического института под руководством Барбары Лисков в 1974 году, широкого применения в практике не нашёл, однако многие его элементы использованы при создании таких языков, как Ада, C++, Java, Sather, Python, C#.





История

Систематические работы над созданием языка программирования, реализующего на синтаксическом уровне идеи абстракции данных, начаты весной 1973 года Барбарой Лисков и сотрудником исследовательской лаборатории IBM Стивом Зиллесом (Steve Zilles). В сентябре 1973 года вышла их совместная заметка[1], где описана предварительная версия такого паскалеподобного языка, в ней фигурирует такая отличительная особенность будущего языка как кластеры (на основе этой заметки подготовлен доклад на конференции SIGPLAN по сверхвысокоуровневым языкам 1974 года[2]). К концу 1973 года Лисков и Зиллес уже определились с наименованием будущего языка: название «Clu» было выбрано от первых трёх букв английского слова cluster[3]. В качестве оппонента привлекался Остин Хендерсон (Austin Henderson).

В декабре 1973 года в лаборатории информатики Массачусетского технологического института при поддержке Национального научного фонда и DARPA начаты работы по созданию языка, руководила группой Лисков, на начальных стадиях над языком активно работал Зиллес, на постоянной основе в группе трудились три аспиранта — Расс Аткисон (Russ Atkinson), Крейг Шафферт (Craig Schaffert) и Алан Снайдер (Alan Snyder), периодически к работе подключались также студенты и сотрудники института. Все работы велись на машинах PDP-10.

Лисков выделила 7 ключевых принципов языка: строгий фокус на абстракцию данных (отказ от глубокой проработки возможностей, напрямую не связанных с абстракцией данных), минимализм, простота, выразительность средств, унификация (встроенные типы не должны отличаться от типов, определяемых программистом), безопасность и высокая производительность[4]. В соответствии с этими принципами в реализации избраны такие решения, как отказ от перечисляемых типов, параллельное присваивание, статическая типизация, проверка типов на этапе компиляции, сборка мусора на этапе выполнения. В 1974 году был реализован первый компилятор языка, выпускавший код на Лиспе, позднее компилятор переписан под генерацию программ на диалекте Лиспа MDL (англ.), имевшем более богатый набор встроенных структур данных и проверку типов на этапе компиляции. Первая реализация языка 1974 года называлась CLU .5, в ней поддерживались основные конструкции абстракции данных, но пока ещё не были реализованы обработка исключений и итераторы, а реализация параметризованных типов требовала динамической проверки типов в среде выполнения. В 1975 году был в основном спроектирован механизм обработки исключений.

К 1976 году все ключевые элементы языка были реализованы, в 1977 году написан первый компилятор, генерировавший код на ассемблере, компилятор создавался на самом языке Клу, чем должен был продемонстрировать выразительность средств языка. Построение компилятора, порождающего высокопроизводительные программы, потребовало создания специальной среды выполнения, реализующей сборку мусора, отладку, особые техники отработки исключений и поддержки итераторов. В 1979 году проектирование языка завершено[5], в 1980 году выпущен полноценный компилятор для PDP-10, несколько позднее реализованы компиляторы для MC68000 и VAX. Трудозатраты на создание языка оценены в 14 человеко-лет[6].

В середине 1980-х годов компилятор Клу реализован для советских суперкомпьютеров Эльбрус, язык был отобран среди прочих кандидатов (Ады, Модулы-2, Симулы) как наиболее целостно и полно воплощающий концепцию абстрактных типов данных, при этом достаточно простой в реализации[7]. В 1989 году выпущен компилятор для SPARC под управлением SunOS.

В начале — середине 1990-х годов были созданы компилятор clu2c, генерирующий кроссплатформенный код на Си, и несколько версий реализации Portable Clu со сборками для Linux, NetBSD, Mac OS, Windows NT, Digital Unix (на Alpha), но практический интерес к языку существенно снизился, и реализации фактически не развиваются, программное обеспечение на Клу не разрабатывается.

Барбара Лисков стала лауреатом премии Тьюринга 2008 года, в номинации проектирование языка Клу и создание серии эффективных компиляторов для него отмечены как фундаментальный вклад в информатику, доказавший практическую осуществимость идей абстракции данных и превративший теоретическую концепцию в общепризнанный в индустрии программирования подход[8].

Кластеры

Абстрактный тип данных в Клу реализуется понятием кластера — конструкции, обеспечивающей инкапсуляцию в рамках типа операций над ним и обеспечивающий полиморфизм (кластер может описывать широкий класс типов данных с общей спецификацией — одинаковым набором операций, но различной реализацией).

Начальный фрагмент описания кластера полиморфного списка (с операциями в лисп-нотации):

list = cluster [t: type] is create, car, cdr, cons, elems
  rep = array [t]
  create = proc () return (cvt) % создание списка
             return (rep$new ())
           end create;
  car    = proc (l:cvt) return (t) signals (empty) % получение первого элемента списка
             if rep$empty (l)
               then signal empty
               else return (rep$bottom(l))
             end
           end car;
  % другие операции
end list

В определении кластера указывается спецификация — набор операций над типом, определяется внутреннее представление (rep) и описывается реализация операций. Используются такие конструкции, как преобразование типа из внутреннего представления в объектное и обратно (cvt), $-нотация для доступа к операциям типа. Создание реализации кластера и его экземпляра реализуется указанием конкретного типа:

lint = list [int]; % список целых чисел
l:lint := lint$create(); % создание экземпляра списка
l := lint$cons(1, lint$cons (2, lint$cons(3, l))) % конструирование списка

Встроенные типы также реализуются как кластеры[9]. В отличие от определяемых в программном коде кластеров, никакая операция над базовыми встроенными типами данных Клу (int, real, bool, null, char, string) не может изменить структуру и значение объекта (всякий раз создаётся новый экземпляр объекта с зафиксированным соответствующим состоянием). Но в стремлении к унификации доступ к операциям над встроенными типами доступен в кластерной нотации: int$add(n1,n2) складывает n1 с n2, string$fetch(s,i) обеспечивает доступ к i-му символу строки s, а string$concat(s1,s2) конкатенирует строки s1 и s2, притом реализован синтаксический сахар, обеспечивающий сокращённую запись таких операций: n1+n2, s[i] и s1||s2 соответственно, который распространяется на одноимённые операции (add, fetch, concat), вводимые в определяемых разработчиком кластерах.

Как полиморфные кластеры реализованы встроенные композитные типы, называемые в Клу генераторами типов — массивы, последовательности, записи, структуры (постоянные записи), объединения, варианты (англ.)[10].

Итераторы

Одной из ключевых новаций языка стало введение абстракции управления — итератора. Идея итератора в том, чтобы обеспечить обобщённую реализацию доступа к элементам абстрактного типа данных вне зависимости от его параметризации и реализации. Реализация итератора полиморфного списка:

elems = iter (l:cvt) yields (t)
         for elt:t in rep$elements(l) do
           yield (elt)
         end
        end elems

Вызов такого итератора:

for i:int in lint$elems(l) do
  writeint (i)
end

Применение итератора позволяет избегать использование явных счётчиков цикла в условиях, когда заранее неизвестна конкретная реализация типа данных.

Идея итератора, построенного по принципу сопрограммы, была впоследствии заимствована в таких языках, как Icon, Sather (англ.), Python, Ruby, C# (начиная с версии 2.0)[11].

Обработка исключений

В Клу реализована структурная обработка исключений, исключительные ситуации в языке подразделяются на статические и динамические, первые используются для завершения исполнения блока в пределах одного программного блока (вызываются оператором exit s(x1, …, xn)), вторые — завершают выполнение программы (вызываются оператором signal s(x1, …, xn)). В обоих случаях обработка исключительной ситуации выполняется программным блоком, начинаемым ключевым словом except, если статическое исключение не обработано в текущем блоке, то она передаётся в следующий, исключения, не обработанные в программе прерывают её выполнение с выдачей соответствующих сообщений. Исключения, которые может генерировать процедура, задаются в её спецификации, исключения рассматриваются как альтернативный выход из процедуры, то есть, процедура должна передать на выход заявленное в спецификации при помощи оператора return, либо выдать одно из заявленных в спецификации исключений при помощи операторов signal или resignal (вызывается в блоке except для повторения вызывавшего исключения) с соответствующими параметрами. Во встроенных типах реализованы стандартные исключения.

При проектировании механизма исключений Клу решения были заимствованы решения из ПЛ/1 и Mesa (англ.), но используемая в них модель возобновления исключений существенно упрощена и структурирована[12], и важным нововведением стала возможность передачи параметров исключений.

Напишите отзыв о статье "Клу"

Примечания

  1. Barbara Liskov, Steve Zilles [csg.csail.mit.edu/CSGArchives/memos/Memo-88.pdf An Approach to Abstraction] (англ.) // Computation Structures Group Memo. — 1973. — Vol. 88.
  2. Barbara Liskov, Stephen Zilles [www.znu.ac.ir/members/afsharchim/lectures/p50-liskov.pdf Programming with Abstract Data Types] (англ.) // Proceedings of the ACM SIGPLAN symposium on Very high level languages. — N.Y.: ACM, 1974. — Vol. 9. — P. 50–59. — DOI:10.1145/800233.807045.
  3. Лисков, 1992, «CLU was chosen as the name of the language in the fall of 1973. The name was selected because it is the first three letters of „cluster.“», p. 3.
  4. Лисков, 1992, p. 8.
  5. Лисков, 1992, «We did a final pass at the language design during 1979», p. 22.
  6. Лисков, 1992, p. 21.
  7. Сафонов, 1989, с. 194.
  8. [www.acm.org/press-room/awards/pdfs/turing-08b.pdf ACM Turing Award Goes to Creator of Influential Innovations in Computer Software Design. MIT’s Liskov Pioneered the Standard for Modern Programming Language and Software Reliability] (англ.). Turing Award. ACM (10 March 2009). — ««Liskov designed the CLU programming language, an object-oriented language incorporating „clusters“ to provide coherent, systematic handling of abstract data types, which are comprised of a set of data and the set of operations that can be performed on the data. She and her colleagues at MIT subsequently developed efficient CLU compiler implementations on several different machines, an important step in demonstrating the practicality of her ideas. Data abstraction is now a generally accepted fundamental method of software engineering that focuses on data rather than processes, often identified as „modular“ or „object-oriented“ programming»»  Проверено 30 ноября 2012. [www.webcitation.org/6DiLajsOZ Архивировано из первоисточника 16 января 2013].
  9. Сафонов, 1989, с. 198.
  10. Сафонов, 1989, с. 201—207.
  11. Jed Liu, Aaron Kimball, Andrew C. Myers Interruptible Iterators (англ.) // POPL ’06 Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages. — N.Y.: ACM, 2006. — Vol. 1 (41). — P. 283—294. — ISBN 1-59593-027-2. — DOI:10.1145/1111037.1111063.
  12. Лисков, 1992, p. 16.

Литература

  • Владимир Сафонов. Язык программирования Клу и система Клу-Эльбрус // Языки и методы программирования в системе «Эльбрус». — М.: Наука, 1989. — С. 189—242. — 389 с. — ISBN 5-02-013983-1.
  • Barbara Liskov. [publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-561.pdf A History of CLU] (англ.). History of programming languages (1 April 1992). doi:[dx.doi.org/10.1145/234286.1057826 10.1145/234286.1057826]. Проверено 30 ноября 2012. [www.webcitation.org/6DiLbZVtl Архивировано из первоисточника 16 января 2013].
  • Барбара Лисков, Джон Гатэг. Использование абстракций и спецификаций при разработке программ. — М.: Мир, 1989. — 424 с. — ISBN 5-03-000489-0.

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

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


– Едет! – закричал в это время махальный.
Полковой командир, покраснел, подбежал к лошади, дрожащими руками взялся за стремя, перекинул тело, оправился, вынул шпагу и с счастливым, решительным лицом, набок раскрыв рот, приготовился крикнуть. Полк встрепенулся, как оправляющаяся птица, и замер.
– Смир р р р на! – закричал полковой командир потрясающим душу голосом, радостным для себя, строгим в отношении к полку и приветливым в отношении к подъезжающему начальнику.
По широкой, обсаженной деревьями, большой, бесшоссейной дороге, слегка погромыхивая рессорами, шибкою рысью ехала высокая голубая венская коляска цугом. За коляской скакали свита и конвой кроатов. Подле Кутузова сидел австрийский генерал в странном, среди черных русских, белом мундире. Коляска остановилась у полка. Кутузов и австрийский генерал о чем то тихо говорили, и Кутузов слегка улыбнулся, в то время как, тяжело ступая, он опускал ногу с подножки, точно как будто и не было этих 2 000 людей, которые не дыша смотрели на него и на полкового командира.
Раздался крик команды, опять полк звеня дрогнул, сделав на караул. В мертвой тишине послышался слабый голос главнокомандующего. Полк рявкнул: «Здравья желаем, ваше го го го го ство!» И опять всё замерло. Сначала Кутузов стоял на одном месте, пока полк двигался; потом Кутузов рядом с белым генералом, пешком, сопутствуемый свитою, стал ходить по рядам.
По тому, как полковой командир салютовал главнокомандующему, впиваясь в него глазами, вытягиваясь и подбираясь, как наклоненный вперед ходил за генералами по рядам, едва удерживая подрагивающее движение, как подскакивал при каждом слове и движении главнокомандующего, – видно было, что он исполнял свои обязанности подчиненного еще с большим наслаждением, чем обязанности начальника. Полк, благодаря строгости и старательности полкового командира, был в прекрасном состоянии сравнительно с другими, приходившими в то же время к Браунау. Отсталых и больных было только 217 человек. И всё было исправно, кроме обуви.
Кутузов прошел по рядам, изредка останавливаясь и говоря по нескольку ласковых слов офицерам, которых он знал по турецкой войне, а иногда и солдатам. Поглядывая на обувь, он несколько раз грустно покачивал головой и указывал на нее австрийскому генералу с таким выражением, что как бы не упрекал в этом никого, но не мог не видеть, как это плохо. Полковой командир каждый раз при этом забегал вперед, боясь упустить слово главнокомандующего касательно полка. Сзади Кутузова, в таком расстоянии, что всякое слабо произнесенное слово могло быть услышано, шло человек 20 свиты. Господа свиты разговаривали между собой и иногда смеялись. Ближе всех за главнокомандующим шел красивый адъютант. Это был князь Болконский. Рядом с ним шел его товарищ Несвицкий, высокий штаб офицер, чрезвычайно толстый, с добрым, и улыбающимся красивым лицом и влажными глазами; Несвицкий едва удерживался от смеха, возбуждаемого черноватым гусарским офицером, шедшим подле него. Гусарский офицер, не улыбаясь, не изменяя выражения остановившихся глаз, с серьезным лицом смотрел на спину полкового командира и передразнивал каждое его движение. Каждый раз, как полковой командир вздрагивал и нагибался вперед, точно так же, точь в точь так же, вздрагивал и нагибался вперед гусарский офицер. Несвицкий смеялся и толкал других, чтобы они смотрели на забавника.
Кутузов шел медленно и вяло мимо тысячей глаз, которые выкатывались из своих орбит, следя за начальником. Поровнявшись с 3 й ротой, он вдруг остановился. Свита, не предвидя этой остановки, невольно надвинулась на него.
– А, Тимохин! – сказал главнокомандующий, узнавая капитана с красным носом, пострадавшего за синюю шинель.
Казалось, нельзя было вытягиваться больше того, как вытягивался Тимохин, в то время как полковой командир делал ему замечание. Но в эту минуту обращения к нему главнокомандующего капитан вытянулся так, что, казалось, посмотри на него главнокомандующий еще несколько времени, капитан не выдержал бы; и потому Кутузов, видимо поняв его положение и желая, напротив, всякого добра капитану, поспешно отвернулся. По пухлому, изуродованному раной лицу Кутузова пробежала чуть заметная улыбка.
– Еще измайловский товарищ, – сказал он. – Храбрый офицер! Ты доволен им? – спросил Кутузов у полкового командира.
И полковой командир, отражаясь, как в зеркале, невидимо для себя, в гусарском офицере, вздрогнул, подошел вперед и отвечал:
– Очень доволен, ваше высокопревосходительство.
– Мы все не без слабостей, – сказал Кутузов, улыбаясь и отходя от него. – У него была приверженность к Бахусу.
Полковой командир испугался, не виноват ли он в этом, и ничего не ответил. Офицер в эту минуту заметил лицо капитана с красным носом и подтянутым животом и так похоже передразнил его лицо и позу, что Несвицкий не мог удержать смеха.
Кутузов обернулся. Видно было, что офицер мог управлять своим лицом, как хотел: в ту минуту, как Кутузов обернулся, офицер успел сделать гримасу, а вслед за тем принять самое серьезное, почтительное и невинное выражение.
Третья рота была последняя, и Кутузов задумался, видимо припоминая что то. Князь Андрей выступил из свиты и по французски тихо сказал:
– Вы приказали напомнить о разжалованном Долохове в этом полку.
– Где тут Долохов? – спросил Кутузов.
Долохов, уже переодетый в солдатскую серую шинель, не дожидался, чтоб его вызвали. Стройная фигура белокурого с ясными голубыми глазами солдата выступила из фронта. Он подошел к главнокомандующему и сделал на караул.
– Претензия? – нахмурившись слегка, спросил Кутузов.
– Это Долохов, – сказал князь Андрей.
– A! – сказал Кутузов. – Надеюсь, что этот урок тебя исправит, служи хорошенько. Государь милостив. И я не забуду тебя, ежели ты заслужишь.
Голубые ясные глаза смотрели на главнокомандующего так же дерзко, как и на полкового командира, как будто своим выражением разрывая завесу условности, отделявшую так далеко главнокомандующего от солдата.
– Об одном прошу, ваше высокопревосходительство, – сказал он своим звучным, твердым, неспешащим голосом. – Прошу дать мне случай загладить мою вину и доказать мою преданность государю императору и России.
Кутузов отвернулся. На лице его промелькнула та же улыбка глаз, как и в то время, когда он отвернулся от капитана Тимохина. Он отвернулся и поморщился, как будто хотел выразить этим, что всё, что ему сказал Долохов, и всё, что он мог сказать ему, он давно, давно знает, что всё это уже прискучило ему и что всё это совсем не то, что нужно. Он отвернулся и направился к коляске.
Полк разобрался ротами и направился к назначенным квартирам невдалеке от Браунау, где надеялся обуться, одеться и отдохнуть после трудных переходов.
– Вы на меня не претендуете, Прохор Игнатьич? – сказал полковой командир, объезжая двигавшуюся к месту 3 ю роту и подъезжая к шедшему впереди ее капитану Тимохину. Лицо полкового командира выражало после счастливо отбытого смотра неудержимую радость. – Служба царская… нельзя… другой раз во фронте оборвешь… Сам извинюсь первый, вы меня знаете… Очень благодарил! – И он протянул руку ротному.