Святослав Сергеевич лавров - учёный, учитель, человек

Сафонов Владимир Олегович

СВЯТОСЛАВ СЕРГЕЕВИЧ ЛАВРОВ -УЧЕНЫЙ, УЧИТЕЛЬ, ЧЕЛОВЕК

ВВЕДЕНИЕ

Посвящаю статью светлой памяти моего учителя - Святослава Сергеевича Лаврова, члена-корреспондента АН СССР и РАН, профессора, лауреата Ленинской и Государственной премий, 85-летие со дня рождения которого отмечается в этом году. Эта статья - о нем, о его выдающемся научном вкладе в области программирования, о его преподавании у нас в университете, о нем как об уникальном учителе и человеке, о его учениках - продолжателях его светлых идей.

Статья продолжает и развивает тему моего доклада на международной конференции памяти С.С. Лаврова «Космос. Астрономия. Программирование» [1], которая состоялась в мае 2008 года в Санкт-Петербурге.

1. ОСНОВНЫЕ НАУЧНЫЕ НАПРАВЛЕНИЯ ДЕЯТЕЛЬНОСТИ С.С. ЛАВРОВА ПО ПРОГРАММИРОВАНИЮ

Вклад С.С. Лаврова в развитие отечественного и мирового программирования поистине уникален и разносторонен. По-

ражает разнообразие научных направлений его деятельности в области ИТ. Перечислим лишь основные из них:

- языки программирования,

- компиляторы и методы компиляции,

- обработка символьной информации,

- языки спецификаций, формальная семантика программ и языков программирования,

- абстрактные типы данных,

- автоматический синтез программ.

Не касаюсь здесь выдающихся работ С.С. Лаврова по баллистике космических аппаратов - о них, несомненно, свое слово скажут специалисты в данной области.

1.1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ

В 1960-х годов С.С. Лавров был членом легендарных Рабочих групп ИФИП (Международной Федерации по обработке информации) - Рабочей группы 2.1 по языку АЛГОЛ-60 и Рабочей группы 2.3 по методологии программирования, положивших начало многим современным языкам, методам и технологиям. В состав этих групп

входили такие классики программирования, как Э. Дейкстра, Ч. Хоар, Н. Вирт. К их числу, безусловно, принадлежит и С.С. Лавров. Святослав Сергеевич с начала 1960-х годов стал активным сторонником нового в то время языка АЛГОЛ-60. Его монография [2] - одна из первых в СССР книг по языку АЛГОЛ. В значительной степени благодаря С.С. Лаврову, АЛ-ГОЛ-60 стал широко распространен в СССР как язык для обучения программированию в университетах (ему учились и мы на мат-мехе в середине 1970-х годов) и как инструмент разработки самых разнообразных программ.

С момента появления языка Паскаль в начале 1970-х годов С.С. Лавров стал его активным сторонником и пропагандистом, прежде всего - как языка для университетского обучения программированию. Классический научный и преподавательский стиль С.С. Лаврова прекрасно гармонировал с языком Паскаль, который его автор Н. Вирт задумал как язык для обучения систематическому и доказательному программированию.

Третий язык, которому отдавал предпочтение С.С. Лавров, - это язык символьной обработки ЛИСП, разработанный Дж. Мак-Карти в 1960 г. К языку ЛИСП С.С. Лавров, без преувеличения, относился буквально с нежной любовью, лично разработал на нем большое число программ, в том числе - столь сложных, как компиляторы, несмотря на скобочную структуру программы в ЛИСПе, которая недостаточно удобна для большинства программистов. Причиной приверженности Святослава Сергеевича к языку ЛИСП, на мой взгляд, является удивительная лаконичность и концептуальная экономность этого языка, построенного буквально на нескольких основных концепциях и конструкциях (атом, список, список свойств атома, ассоциативный список имен, списочная память), из которых строятся и выводятся все остальные возможности не только языка ЛИСП, но и и его реализации. Эти черты языка ЛИСП родственны лаконичности и

афористичности научного стиля самого С.С. Лаврова и его работ.

Наконец, С.С. Лавров со своими учениками из ВЦ АН СССР разработал свой собственный весьма оригинальный язык программирования - расширяемый язык АБВ [3]. Расшифровка и смысл названия языка двоякие - Анализатор, База, Вычислитель (так были названы три части языка), а также азбука программирования (в англоязычном варианте «the ABC» -азбука). Язык АБВ, в соответствии с идеями того времени, был предназначен в качестве универсального промежуточного языка систем программирования (компиляторов), а также в качестве инструментального языка для системных программистов. По своему скобочному синтаксису он близок к языку ЛИСП, однако по семантике язык АБВ значительно сложнее, интереснее и разнообразнее. В языке АБВ предусмотрены не только гибкий механизм именования и описаний с элементами динамической идентификации (последовательные действия и их составные значения), предвосхитивший более поздние концепции объектно-ориентированного программирования, - но и встроенный параллелизм, общий механизм прерываний - обобщение концепций вызова процедуры и обработки ошибок, - а также удобные операции анализа строк и их представления в виде списков (еще один «конек» С.С. Лаврова).

1.2. КОМПИЛЯТОРЫ И МЕТОДЫ КОМПИЛЯЦИИ

С.С. Лавров, наряду с А.П. Ершовым и М.Р. Шура-Бура, стал «отцом» работ в СССР в области компиляторов (в то время был более распространен термин трансляторы^.

Святослав Сергеевич руководил разработкой первого в СССР транслятора с языка АЛГОЛ-60 для отечественных ЭВМ типа М-220 и БЭСМ-3М, который получил название СИГНАЛ (СИстема программирования На АЛ голе), или ТА-1М (Транслятор с Алгола, версия 1, Модер-

низированный). Этот уникальный продукт явился основным инструментом для обучения программированию студентов большинства вузов СССР, в том числе и нашего университета. В начале и середине 1970-х годов мы, студенты мат-меха, писали свои программы на языке АЛГОЛ, которые набивались на перфокартах и транслировались на ЭВМ М-222 с помощью транслятора СИГНАЛ, разработанного С.С. Лавровым и его сотрудниками. Несомненно, только высококачественный программный продукт мог выдержать такое испытание, как успешный пропуск многих тысяч студенческих программ. Не припомню случая, чтобы хотя бы раз мы испытывали какие-либо проблемы с нашими программами из-за транслятора или находили в нем ошибки. Вот какому качеству разработки следует поучиться не только молодым программистам, но и многим современным программистским фирмам!

С.С. Лавров руководил разработкой нескольких реализаций языка Паскаль для различных типов ЭВМ, в том числе - для М-220, БЭСМ-6, а также разработанного нами компилятора с Паскаля для МВК «Эльбрус» [4]. Разработанные С.С. Лавровым методы компиляции были основаны на эффективном использовании списков вместо линейного поиска. Он разработал базовую структуру таблиц для компилятора с Паскаля, проанализировал основные проблемы его реализации и предложил их оригинальные решения. Святослав Сергеевич поручил мне работу по созданию стандарта СЭВ и ГОСТ языка Паскаль - официального русского перевода стандарта Паскаля, который был мной осуществлен, принят комиссией СЭВ под руководством НИЦЭВТ и опубликован в 1989 г.

С.С. Лавров руководил работами по реализации языка ЛИСП для БЭСМ-6 (автор реализации - Г. Силагадзе [5] ), ЕС ЭВМ (автор реализации - Л. Разбаева, ЛГУ) и для МВК «Эльбрус» (автор реализации - А Рейтсакас, Институт кибернетики, Таллинн).

В 1976 г. С.С. Лавров создал у нас на математико-механическом факультете группу по разработке трансляторов для МВК «Эльбрус», которой он вначале руководил сам, а с 1981 г. поручил руководить мне. Мы начинали заниматься компиляторами, по выражению Святослава Сергеевича, со студенческой скамьи - с 4 курса. Сформировалась группа из шести студентов мат-меха, включая меня, задачей которой была реализация новых в то время языков Паскаль и АБВ для современных отечественных многопроцессорных вычислительных комплексов «Эльбрус» [4]. Надо ли говорить, насколько интересной была для нас эта работа! Святослав Сергеевич организовал для нашей группы семинар, каждое занятие которого было для нас просто бесценным. Он рассказывал нам о методах компиляции, о системе «Эльбрус», слушал и конструктивно критиковал наши доклады по разработке. Эта уникальная школа стала стимулом для меня как специалиста и для моих коллег на многие годы.

В 1970-1980-х годах мы разработали за несколько лет силами небольшой группы молодых программистов (менее 10 человек, включая наших студентов и аспирантов) целое семейство трансляторов для МВК «Эльбрус» с языков Паскаль, АБВ, CLU (это была первая в СССР реализация данного языка, базирующегося на концепции абстрактных типов данных и ставшего впоследствии идейной основой для языков Java и C#), Мо-дула-2, РЕФАЛ, Снобол-4, FORTH, БЕЙСИК, пошаговый транслятор с языка АЛГОЛ-60. Транслятор с языка Паскаль был принят межведомственной комиссией, затем - военными заказчиками, использовался во многих организациях, в том числе - в Центре управления полетами, в институтах МО СССР и Минра-диопрома, в ВЦ КП АН СССР. Во всех этих работах Святослав Сергеевич, его идеи, его поддержка были рядом с нами, о чем я с огромной благодарностью и теплотой буду вспоминать всю свою

жизнь. Он положил начало нашему многолетнему успешному сотрудничеству в области системного программного обеспечения МВК «Эльбрус» и рабочих станций с ИТМ и ВТ АН СССР в 19701990-х годах.

1.3. ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ

Именно так назывался периодический сборник, который издавался в ВЦ АН СССР при активном участии С.С. Лаврова. В нем Святослав Сергеевич опубликовал статью о языке АБВ [3]. К числу других выдающихся работ С.С. Лаврова в области методов представления и обработки данных, прежде всего -символьной информации, относится книга [6], и ныне привлекающая программистов своей, с одной стороны, лаконичностью, с другой - необыкновенной информационной насыщенностью, характерными для научного стиля С.С. Лаврова. Именно из этой книги на втором курсе я впервые узнал, что такое хеш-функция (по терминологии Святослава Сергеевича - функция расстановки), которую впоследствии мы использовали в наших разработках [4]. Это было за четыре года до выхода русского перевода первого тома знаменитой монографии Д. Кнута [7]. Интересно сравнить стиль этих двух выдающихся работ - с одной стороны, энциклопедическую полноту книги Д. Кнута и, как следствие, ее весьма значительный объем, - с другой стороны, краткую и емкую книгу С.С. Лаврова, буквально каждая фраза и каждая строчка программного кода в которой могли бы вырасти в научную статью или дискуссию.

1.4. ЯЗЫКИ СПЕЦИФИКАЦИЙ, ФОРМАЛЬНАЯ СЕМАНТИКА ПРОГРАММ И ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

С.С. Лавров внес значительный вклад в изучение, преподавание и развитие формальной семантики программ и языков спецификаций. Например, в начале 1970-х годов он включил в программу своего учебного курса «Элементы теории множеств и математической логики», который он читал всему потоку кибернетиков первого курса, элементы исчисления программ Р. Флойда - Ч. Хоара: тройки Хоара, пред- и постусловия, схемы аксиом и правил вывода для формализации семантики конструкций структурного программирования и доказательства свойств программ. Уважаемые коллеги наверняка согласятся со мной, что подобное решение носило новаторский (по любимому выражению Святослава Сергеевича, «пионерский») характер. Многие из студентов - слушателей курса - наверняка в своей дальнейшей учебе и последующей работе по специальности могли вообще больше никогда не встретиться на практике с подобными концепциями формальной семантики программ, однако, несомненно, для всех нас исчисление программ было очень интересным и полезным разделом курса, сближающим, с нашей точки зрения, математическую теорию с практикой программирования. Данный пример показывает, сколь большое значение С.С. Лавров уделял доказательному программированию и формальной семантике.

Другой излюбленной темой С.С. Лаврова в данной области была денотационная семантика [8] - формализация се-

мантики программ на основе концепций состояния и предиката, при которой программа рассматривается как преобразователь предикатов, описывающих состояния глобальных переменных программы в последовательные моменты вычислений. Несмотря на то, что в работе [8] С.С. Лавров высказал определенный скептицизм относительно широкой применимости данного подхода ввиду его некоторой громоздкости, он сам испытывал к нему глубокий интерес, некоторые его ученики занимались вопросами денотационной семантики языка Паскаль.

1.5. АБСТРАКТНЫЕ ТИПЫ ДАННЫХ

С.С. Лавров глубоко поддерживал основанный Ч. Хоаром, Б. Лисков, М. Шоу и др. в начале 1970-х годов подход к надежному и доказательному программированию - абстрактные типы данных (АТД), суть которого в том, что тип данных определяется как совокупность его конкретного представления, скрытого или инкапсулированного от пользователей; набора абстрактных операций, доступных пользователю данного типа (кроме их реализаций), а также, что немаловажно, формальной спецификации свойств самого типа, его объектов и операций над ним.

С.С. Лавров внес уникальный вклад в теорию АТД, разработав язык спецификаций и синтеза программ ДЕКАРТ [9], входной язык системы автоматического синтеза программ СПОРА и его аксиоматическую формальную семантику. Более подробно об этом - в следующем разделе.

С.С. Лавров был научным руководителем новаторской работы И.Р. Агамир-зяна по разработке и реализации инструмента использования АТД в повседневной практике системного программирования, а также научным руководителем наших работ по реализации классического языка с абстрактными типами данных - СЬИ [4]. Святослав Сергеевич высказал ряд ценых рекомендаций по реализации. Он (что в тот период «железного занавеса», в нача-

ле 1980-х годов представлялось почти невозможным) обратился непосредственно к автору CLU - проф. Барбаре Лисков (MIT, США) и получил от нее для нашей группы подробное описание языка CLU, столь необходимое в нашей работе.

1.6. АВТОМАТИЧЕСКИЙ СИНТЕЗ ПРОГРАММ

С.С. Лавров, наряду с Э.Х. Тыугу (Эстония), стал классиком работ по автоматическому синтезу программ в СССР и в мире. Будучи директором Института теоретической астрономии (ИТА) АН СССР и руководителем лаборатории автоматизации научных исследований (ЛАНИ) в этом институте, он разработал принципы новаторской по своим идеям системы СПОРА (Система Программного Обеспечения для Решения задач Астрономии) и ее базового языка спецификаций ДЕКАРТ. Язык ДЕКАРТ включал средства формальной спецификации моделей предметных областей и постановки задач на них. Программы для решения поставленных задач синтезировались автоматически системой СПОРА. В столь общем виде постановка и решение задачи автоматического синтеза программ является до сих пор непревзойденным результатом. Для сравнения, в современных интегрированных средах разработки программ автоматически генерируются (синтезируются) лишь наиболее рутинные, типовые, хотя и сложные по своей структуре, модули и фрагменты кода - например для работы с графическими пользовательскими интерфейсами - GUI, организации Web-сервисов. При этом, разумеется, никакой речи не идет о каких-либо формальных спецификациях данных предметных областей (для конструирования GUI используется более простой и наглядный метод - визуальный дизайн). Задача автоматического синтеза программ по их спецификациям в современных инструментальных средах пока (почти через 30 лет!) не ставится, однако, несомненно, за ней будущее, и когда-нибудь глубокие идеи основоположников син-

теза программ, прежде всего - С.С. Лаврова, будут развиты и реализованы в коммерческих системах.

2. С.С. ЛАВРОВ - ПРЕПОДАВАТЕЛЬ

С.С. Лавров оказал глубочайшее вля-ние на преподавание программирования и информатики. В течение более чем 20 лет он возглавлял нашу кафедру математического обеспечения ЭВМ на мат-мехе (с 1994 г. - кафедра информатики). Не только каждая лекция или семинар С.С. Лаврова, но и каждое заседание кафедры с его участием, каждая встреча и беседа с ним любого преподавателя, аспиранта, студента были все нам полезны и поучительны, многие из них надолго остались в нашей доброй и благодарной памяти.

Мне посчастливилось слушать многие лекционные курсы С.С. Лаврова и участвовать в его семинарах для студентов мат-меха. Приведу список курсов и семинаров, которые С.С. Лавров вел на математико-механическом факультете:

1. Практические занятия в группах отделения кибернетики на 1-2 курсах.

2. Элементы теории множеств и математической логики - потоковый курс для студентов 1 курса (включал исчисление программ Р. Флойда - Ч. Хоара, см. п. 1.4).

3.Язык Паскаль и его реализация -спецкурс (см. п. 1.1).

4. Язык ЛИСП и его реализация -спецкурс (см. п. 1.1).

5. Автоматическое доказательство теорем - спецкурс для студентов 5 курса (включал сколемизацию, теорему Эрбра-на, метод резолюций).

6. Система команд МВК «Эльбрус» -спецсеминар (см. п. 1.2).

7 . Спецсеминар для группы студентов -разработчиков компиляторов с языков Паскаль и АБВ для МВК «Эльбрус» (см. п. 1.2).

Материал его курсов и семинаров нашел отражение в его выдающихся работах [2-6, 8, 10, 11].

С.С. Лаврова-преподавателя отличала новизна тематики его курсов, которые он постоянно модернизировал, их высокий теоретический уровень, строгость, точность, лаконичность, лапидарность. Стиль его лекций был удивительным сочетанием, с одной стороны, научной строгости и даже суховатости, с другой - необыкновенной приподнятости и эмоциональности при изложении ключевых идей. Он был начисто лишен жаргона, шуток на обыденные темы, которыми, к сожалению, сейчас грешат занятия многих преподавателей. Это была настоящая научная классика. Очень жаль, что эти лекции не сохранились на видео, но нам повезло, что их материал нашел отражение во многих работах - пусть же молодые программисты поучатся у Святослава Сергеевича четкости формулировок, строгости, доказательности, чистоте научного языка, как учились мы.

3. С.С. ЛАВРОВ -УЧИТЕЛЬ И ЧЕЛОВЕК

Уверен, что практически каждый из нас, студентов и преподавателей, кто учился и работал под руководством С.С. Лаврова, чувствует себя его питомцем. Личность Святослава Сергеевича, его интеллигентность, корректность, лучезарная улыбка, но, вместе с тем, его строгость, аккуратность, нетерпимость к «липе» и хал-

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

• Уникальная точность, скрупулезность, педантичность, аккуратность. Приведу яркий пример. Мне довелось быть свидетелем того, как работал С.С. Лавров у себя в домашнем кабинете. Я был поражен, увидев, как он изучает компилятор с языка Эль-76 для МВК «Эльбрус» по его исходному тексту. На рабочем столе в идеальном порядке были разложены небольшие карточки (листочки бумаги для заметок), на которых Святослав Сергеевич своим только одному ему присущим почти каллиграфическим почерком выписал группы идентификаторов переменных, процедур, функций и других элементов компилятора. В этом - весь Святослав Сергеевич! Изучая подобным же образом любой вопрос, любую программу, любую работу, он всегда знал их столь же досконально и четко и так же объяснял их суть своим ученикам.

• Уникальная четкость и лаконичность формулировок как в научных работах, так и в профессиональном общении.

• Неоценимая поддержка учеников и коллег. Я уже говорил об этом (п. 1.1, 1.2). Приведу еще один из многих примеров, которые у меня в памяти. Святослав Сергеевич решительно выступил в поддержку публикации наших статей по трансляторам для МВК «Эльбрус» в журнале «Программирование» в начале 1980-х годов -обратился с письмом к главному редактору журнала. Благодаря этому, в 1982 -1985 гг. в журнале был опубликован цикл наших статей по реализации языков АБВ, Паскаль, ЛИСП, абстрактных типов данных и др.

• Уникальная внимательность и доскональность при анализе и рецензировании научных работ. Я уже приводил в одной

из статей в нашем журнале пример, когда Святослав Сергеевич сделал 57 (!) замечаний к кандидатской диссертации аспиранта. Еще один, особенно важный для меня пример: в 1987-1989 гг. С.С. Лавров был редактором моей книги [4]. Из замечаний Святослава Сергеевича к моей книге можно составить еще одну уникальную по своему содержанию «книгу замечаний»! Они написаны аккуратнейшим почерком на нескольких десятках страниц, и их я храню в своем домашнем архиве как зеницу ока. Святослав Сергеевич замечал все - неудачную формулировку (сразу подсказывая свой замечательный и точный вариант), ошибку, неточность, некорректность, не только научную, но и житейскую, - например, посоветовал мне убрать реальный номер телефона моих коллег из примера программы на Эль-76, который я заменил на 123-45-67.

• Нетерпимо-ироническое отношение к некомпетентности, пассивности, псевдонаучности. Классический пример - реплика С.С. Лаврова «формализация ради формализации» на попытку искусственно усложненными формальными конструкциями объяснить простые идеи и понятия. Не только автор статьи или диссертации - любой докладчик на заседании кафедры, позволивший себе недостаточно компетентное, либо излишне «заумно-научное», либо необоснованное утверждение, рисковал быть остановленным кратким, точным, подчас едким и ироничным, но всегда к месту - замечанием Святослава Сергеевича. Он также не терпел лентяев, медлительных сотрудников, искренне удивляясь их пассивности.

Резюмируя этот раздел, могу с полным основанием сказать от имени всех моих коллег, кому довелось работать на кафедре или учиться при Святославе Сергеевиче:

Все мы — ученики С.С. Лаврова. Быть его учеником - большое счастье и большая удача.

4. УЧЕНИКИ С.С. ЛАВРОВА И РАЗВИТИЕ ЕГО ИДЕЙ В СПбГУ

Среди учеников С.С. Лаврова, работающих в Санкт-Петербурге, отметим следующих известных специалистов:

• Агамирзян Игорь Рубенович, кандидат физ-мат. наук, доцент; в 1980-х годах -один из ведущих сотрудников лаборатории ЛАНИ ИТА АН СССР; ныне - руководитель Санкт-Петербургского отделения фирмы EMC;

• Дмитриева Марина Валерьевна, кандидат физ.-мат. наук, доцент нашей кафедры информатики СПбГУ;

• Кубенский Александр Александрович, кандидат физ.-мат. наук, доцент, в 19701980-х годах - мой соратник по группе компиляторов для MB К «Эльбрус», затем - доцент нашей кафедры, ныне - сотрудник фирмы Google и доцент СПбГУ ИТМО;

• Сафонов Владимир Олегович, автор данной статьи, доктор технических наук, профессор кафедры информатики мат.-мех. факультета.

Ныне идеи Святослава Сергеевича развиваются и продолжаются в работах лаборатории Java-технологии математико-механического факультета СПбГУ под моим научным руководством в следующих направлениях:

- компиляторы и инструментальные

средства Sun; развитие Java-технологии [12];

- проекты на базе Phoenix [13] - новейшего инструментария для разработки Ъаск-епё'ов компиляторов фирмы Microsoft; наше участие с 2003 г. в Академической программе Phoenix проектами по системе построения front-end^ компиляторов Phoenix-FETE, ориентированной на Phoenix, и по языково-незави-мимым абстрактным синтаксическим деревьям для Phoenix - HL-AST [14];

- аспектно-ориентированное программирование (АОП), система Aspect.NET -инструментарий АОП для платформы .NET, используемый в 22 странах мира, и его применение для разработки надежных и безопасных программ [15, 16];

- инженерия знаний и интеграция ее методов с методами инженерии программ -система Knowledge.NET [17], расширение C# средствами представления гибридных знаний, включая фреймы и онтологии.

Имя Святослава Сергеевича, без преувеличения, для нас свято. Он был, есть и всегда останется с нами в его светлых идеях, в его уникальной школе, которую мы продолжаем. Уверен, что он очень порадовался бы нашим результатам, но и, конечно, покритиковал бы, как всегда, умно, иронично и по делу, - ведь именно таким он был, наш любимый учитель Святослав Сергеевич Лавров.

Литература

1. Web-сайт международной научной конференции памяти С.С. Лаврова «Космос. Астрономия. Программирование»: http://pub.math.spbu.ru/lavrov/

2. Лавров С.С. Универсальный язык программирования АЛГОЛ-бО. М.: Наука, 1967.

3. Лавров С.С., Капустина E.H., Селюн М.И. Расширяемый алгоритмический язык АБВ. B сб.: Обработка символьной информации. Вып. 3. М.: ВЦ АН СССР, 1976.

4. Сафонов В.О. Языки и методы программирования в системе Эльбрус. / под ред. Лаврова С.С. М.: Наука, 1989.

5. Лавров С. С., Силагадзе Г. С. Автоматическая обработка данных. Язык ЛИСП и его реализация. М.: Наука, 1978.

6. Лавров С.С., Гончарова И.С. Автоматическая обработка данных. Хранение информации в памяти ЭВМ. М.: Наука, 1972.

7. Кнут Д. Искусство программирования для ЭВМ. Том 1. Основные алгоритмы. М.: Мир, 1976.

8. Лавров С.С. Лекции по теории программирования. СПб.: НЕСТОР, 1999.

9. Лавров С.С. и др. Язык ДЕКАРТ - входной язык системы СПОРА. В сб.: Прикладная информатика, 1980.

10. Лавров С.С. Введение в программирование. М.: Наука, 1977

11. Лавров С.С. Основные понятия и конструкции языков программирования. М.: Наука, 1986

12. Сафонов В.О. Введение в Java-технологию. СПб: Наука, 2002.

13. Web-сайт Microsoft Phoenix: http://research.microsoft.com/phoenix

14. Phoenix Academic Program booklet. Proceedings of Microsoft Faculty Summit 2007, Redmond, USA.

15. Safonov V.O. Using Aspect-Oriented Programming for Trustworthy Software Development. - Wiley Interscience. John Wiley & Sons, 2008.

16. Сафонов В.О. Aspect.NET - инструмент аспектно-ориентированного программирования для разработки надежных и безопасных программ // Компьютерные инструменты в образовании, 2007, № 5.

17. Сафонов В.О. и др. Интеграция методов инженерии знаний и инженерии программ: Система управления знаниями Knowledge.NET // Компьютерные инструменты в образовании, 2005, № 5.

© Наши авторы, 2008. Our authors, 2008

Сафонов Владимир Олегович, доктор технических наук, профессор кафедрыь информатики СПбГУ, руководитель лаборатории ]а\а-технолог и и.