жизнь ученого в фотографиях, документах и воспоминаниях


Автобиография

Научная автобиография

С.С. Лавров

эта редакция статьи сохранилась на персональном компьютере С.С. Лаврова

Её можно начать, пожалуй, с факта - читать я умел уже с того времени, с какого себя помню - лет с трех-четырех. И этим умением я активно пользовался - из прочитанного в дошкольные годы помню не столько "Мойдодыра", сколько различные научно-познавательные книжки, например: "Наши друзья и враги - невидимки" (о микробах), "Физика в играх" Доната и даже "Рассказ о великом плане" М. Ильина (изложение основ политэкономии, естественно, с обличением капитализма и восхвалением социализма, но, вот беда, - первое запомнилось ярче).

Я.И. Перельман и Жюль Верн были моими любимыми авторами, но уже несколько позже - во время учёбы в младших классах.

Кстати - об этой учёбе. В первый же день моего пребывания в школе учительница устроила мне проверку знаний по письму и арифметике. И хотя я от волнения начисто забыл, как пишется заглавная буква "М" (вероятно, из-за простоты решения), на следующий день я уже ходил во второй класс. Ещё годом позже семья вернулась из Донбасса в Ленинград и на мою долю выпала новая проверка. И здесь не без казуса - год Октябрьской революции я назвал верно, а про то, когда была Февральская, сказал: "Не помню, - кажется в 1918". Не знаю, что было бы, ошибись я в первом случае, а так я был определён в 4-й класс, сэкономив для себя два года учёбы. Это обошлось мне недешево - я был "домашним" ребенком, да и физическим развитием не отличался, так что в школе (класса до 8-го) чувствовал себя, мягко говоря, неуютно. Но худа без добра не бывает - выпавшие мне испытания закалили мой характер, научили "держать удары".

В школе я последовательно прошёл через увлечения биологией, физикой, химией (но значительно меньшее), математикой (это уже навсегда) и девочками (без комментариев).

Продолжая тему - когда в начале-середине 50-х в стране появились первые ЭВМ, с таким же детским увлечением я влез в программирование. И не в том дело, что это увлечение подогревалось профессиональными интересами (об этом - позже). Это занятие затрагивало какие-то глубинные струны моей души, отвечало складу всей моей личности. И если в математике я всего лишь любитель, то в программировании уверенно считаю себя профессионалом.

В старших классах я занимался в математическом кружке (совместное детище матмеха ЛГУ и Дворца пионеров). Не скажу, что эти занятия проходили для меня без затруднений, но вызывали большой интерес и приносили много эмоций.

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

Подлинные находки и здесь требуют озарения, напряжённой работы подсознания, интуиции - знания, не облеченного в точные формулировки. Радость обретения, горечь разочарования (гораздо чаще), предчувствия, захватывающие дух, присущи математику или конструктору сельскохозяйственных машин ничуть не в меньшей степени, чем композитору или поэту. Ну а без владения техникой своего дела не прожить ни ученому, ни художнику, если это действительно Ученый или Художник.

В 1939 году - в год окончания школы - я был среди победителей, как тогда говорили, Ленинградской математической олимпиады.

Тем не менее, при выборе факультета (вуз - Ленинградский университет - не вызывал у меня сомнений) я заколебался - идти ли на матмех или на физфак. Возможно не без влияния моего друга по кружку - С.А. Каплана, впоследствии видного радиофизика, трагически погибшего при неясных обстоятельствах в конце 70-х. А может быть, я уже тогда почувствовал, что чистая математика - занятие не для меня.

Всё же математика (или самостоятельность) победила.

Я рано лишился отца - в 1937 году (к счастью, если это выражение здесь уместно, он умер в этом трагическом году своей смертью), жили мы с мамой трудно, но, несмотря на все тяготы жизни, два студенческих года были для меня интеллектуальным праздником.

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

И в том и в другом курсе уделялось заметное внимание вычислительным вопросам (численному решению уравнений, вычислению элементарных функций и пр.). Не знаю, было ли это независимой (или совместной) инициативой этих двух лекторов, следованием традиции петербургской математической школы доводить исследование до числа или установкой свыше на "приближение университетского образования к жизни". Но эти разделы курса находили живейший отклик в моей душе. А установка "имела место". Как её следствие, нам стали читать нетрадиционный для матмеха курс начертательной геометрии (в довольно любопытной трактовке), а на отделении механики - сопромат.

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

Далее - когда началась война, я, как и все студенты-мужчины, пошёл в ленинградское народное ополчение. Не стану кривить душой и говорить о своих высоких патриотических чувствах, хотя и не был их лишён. Но неделей раньше - неделей позже мне всё равно предстоял призыв в армию. Артиллерийский полк, куда мы все попали, задержался формированием. А в это время к нам подоспели вербовщики из созданной за несколько месяцев до этого Ленинградской военной воздушной академии. Почти все мы согласились пойти туда учиться и были приняты. Трижды продлевался срок нашего обучения - от трёх месяцев до шести, затем до года, а в результате мы были выпущены в 1944 году с дипломом военного инженера-механика, с сумбурным, но достаточно полным инженерным образованием, в звании старшего техника-лейтенанта. Я попал по распределению техником звена в истребительный авиационный полк.

Почти через год после конца войны - новая вербовка. Некий подполковник Королёв в сопровождении майора в авиационной форме предложил мне работу по изучению совершенно новой техники, на что я, долго не раздумывая, согласился. Техника эта оказалась немецкой ракетой Фау-2, действительно производившей впечатление по тем временам.

В итоге всего в начале 1947 года я был демобилизован из армии и принят на работу сразу на должность начальника группы баллистики в подмосковное КБ в отдел Главного конструктора Сергея Павловича Королёва (того самого "подполковника"). Приобретенные мною знания и опыт, среди которых я без колебаний ставлю на первое место свой двухлетний университетский багаж, позволили мне без особых проблем включиться в предложенную мне работу.

Баллистика - это тот узел, куда стягиваются практически все характеристики "изделия" (ракеты или, впоследствии, космического аппарата) - весовые, энергетические, многочисленные параметры системы управления - и где должны быть надежно определены его тактико-технические данные: дальность полёта (параметры орбиты), "полезный" груз, рассеивание у цели. Делается это на всех этапах разработки - от согласования с военным заказчиком технического задания, по ходу эскизного и рабочего проектирования, до подготовки и проведения лётных испытаний (запусков космических аппаратов).

Не в силу каких-либо личных качеств, а благодаря этой особой роли баллистики я был участником разнообразных совещаний, где собирались вообще-то люди, на несколько ступенек выше меня по должности. Совещания проходили и у Главного конструктора, и на полигоне (где я отвечал за подготовку полётного задания на каждый пуск), и в иных инстанциях. Там обсуждались и принимались, обычно в условиях острого столкновения интересов (военных и промышленности, КБ и министерств, Главных конструкторов изделия в целом и отдельных систем), важнейшие решения.

Никогда за все эти годы ни я, ни руководимая мной служба не подводили КБ ни по глубине и качеству исполнения, ни по срокам.

Ежегодно в группе (а затем - в секторе) баллистики выпускалось 2-3 технических отчёта, относившихся к разряду технической документации по тому или иному изделию. Такой отчёт обычно именовался либо разделом эскизного проекта, либо материалами к лётным испытаниям. В КБ с самого начала установилась традиция готовить эскизный проект настолько фундаментально, что на стадии рабочего проектирования уже не требовалось обновлять проектную документацию и выпускалась лишь конструкторская.

Кроме того практически каждый год я выпускал научно-методический отчёт по тому или иному разделу своей специальности. Правда, по установленному порядку он назывался тоже техническим отчётом и нёс кроме моей подписи также подпись заместителя начальника отдела, самого начальника, заместителя главного конструктора и утверждающую подпись главного конструктора. Но за редкими исключениями это был плод моего и только моего труда. Объём такого отчёта был 50-100 машинописных страниц. Часто обстоятельства требовали включения научно-методических материалов и в техническую документацию, но в упорядоченном виде они появлялись все-таки в этих отчётах.

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

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

Естественно, что, хотя бы для себя, накопленные материалы собирались, ещё раз обрабатывались и объединялись в некоторое подобие книги, без особых перспектив её издания. Но по прошествии лет такая книга вышла. В 1956 году её издала Артиллерийская академия в качестве учебника для своих слушателей под грифом "Секретно". И только ещё через десять лет, когда во всю летали не только спутники, но и межпланетные аппараты, книгу "Баллистика управляемых ракет дальнего действия" (авторы - Р.Ф. Аппазов, С.С. Лавров и В.П. Мишин, хотя вся она была по несколько раз переписана моей рукой) удалось издать открытым тиражом в издательстве "Наука".

Год 1960 был ознаменован тремя событиями. В мире - было опубликовано "Сообщение об алгоритмическом языке Алгол 60", в стране - была выпущена первая заводская серия из четырёх вычислительных машин М-20, одна из которых попала к нам в ОКБ, во мне - созрело решение посвятить себя впредь уже не баллистике (появилось немало весьма опытных и самостоятельных моих учеников, на которых можно было положиться), а программированию.

Мне было ясно, что массовое программирование не может вестись только силами программистов-профессионалов, а ими пока что с неизбежностью становились все, кому требовалось использовать ЭВМ. Эти люди были вынуждены осваивать машинный язык, приемы программирования и работы на ЭВМ. Не годится для этой цели и язык, ориентированный на машину, но не на массового пользователя, - типа языка ассемблера. Впрочем, для собственных нужд язык такого типа у меня уже сложился и постоянно применялся (с ручным переводом на машинный язык) ещё в 50-х годах на БЭСМ - машине, худо-бедно но неизменно служившей нам тогда для всех баллистических расчётов. Впоследствии он был переделан под М-20 и много позже опубликован под названием "Соглашения о записи программ в символических обозначениях" в моей книге "Введение в программирование". Почему мы мирились с ручной трансляцией?  Потому, во-первых, что это операция намного менее трудоемкая, чем составление программы на ассемблерном языке. А, во-вторых, перфораторщицы, щадя своё зрение, требовали от нас переписывать программы начисто, крупными буквами (цифрами) на специальных бланках. А это похуже ручного перевода.

Не вдохновлял меня и Фортран, возникший из языка чуть более высокого уровня и до сих пор несущий на себе печать этого происхождения. Но Алгол 60 при всех его слабостях воспринимался мной как язык качественно иного уровня и мне захотелось испытать свои силы в работе над транслятором с этого языка. Две группы - одна в ВЦ СОАН под руководством А.П. Ершова, другая в ИПМ АН, возглавлявшаяся М.Р. Шура-Бурой и Э.З. Любимским, уже объявили о своём намерении заняться подобной работой. Той и другой я предложил услуги свои и уже образовавшейся у нас группы программирования. Та и другая это предложение отвергли. Тогда я решился.

К осени 1960 года у меня сложился проект собственного транслятора (программирующей программы, как тогда говорили) и я доложил его в серии докладов на семинаре нашей группы. Вместе мы решили испытать свои силы на реализации этого проекта. Сам я в написании программ транслятора не участвовал, но постоянно следил за ходом дела и помогал в трудных случаях принимать необходимые решения. Непосредственное руководство программированием взял на себя В.А. Степанов и только его самоотверженный труд и ответственное отношение к делу обеспечили его успех. Достаточно сказать, что ему приходилось завершать работу, начатую тем или иным членом группы и по каким-либо причинам выбывшим из неё. Наиболее сложную часть работы - трансляцию процедур - выполнил В.Н. Попов. Самые добрые слова должны быть адресованы и другим участникам работы.  Первая версия транслятора заработала весной 1962 года - даже раньше, чем трансляторы, создававшиеся другими группами в академических институтах.

Из отличий входного языка транслятора от стандартного Алгола 60 стоит упомянуть запрет на использование: рекурсивных процедур и функций, фактических параметров-выражений при вызове по имени, переменных с индексами в качестве параметров циклов и собственных (own) массивов. Если первое ограничение заметно обедняет язык, то остальные оказались в русле последующих тенденций развития языков программирования и не должны особенно досаждать массовому пользователю.

В 1963 году состояние работ по автоматизации программирования (так тогда именовалась разработка трансляторов) обсуждалась на заседании Президиума АН СССР. Докладчиками были М.Р. Шура-Бура и я. Результаты наших работ получили достаточно высокую оценку в выступлении Президента Академии - М.В. Келдыша и в решении Президиума.

Если быть точным, то желание написать транслятор с языка высокого уровня появилось у меня ещё до 1960 года под влиянием публикации в 1958 году "Сообщения об алгоритмическом языке Алгол". Язык этот (его ещё называли Алгол 58) был прямым предшественником Алгола 60 и уже содержал важнейшие из его конструкций, но не был столь хорошо продуман концептуально. В отечественной литературе наиболее полной работой по технике трансляции была книга А.П. Ершова "Программирующая программа для быстродействующей электронной вычислительной машины", которую я внимательно изучил и нашёл в ней много интересного и полезного, особенно по технике реализации, но и кое-что малоприемлемое - прежде всего входной язык и способ его описания, основанный на схемах А.А. Ляпунова.

Я решил поближе познакомиться с А.П. Ершовым, благо он работал ещё в Москве, в том же здании Института точной механики и вычислительной техники, куда я и мои коллеги регулярно ездили работать на БЭСМ. Андрей Петрович встретил меня очень доброжелательно и обстоятельно рассказал о своих взглядах на программирование вообще и на трансляцию в частности. Среди основных проблем трансляции он назвал задачу экономии памяти. Естественно, любой из программистов, работавших тогда на машинах с оперативной памятью в несколько килобайт, решал для себя эту задачу. Несколько переоценив свой опыт, я заявил, что, кажется, знаю общий метод её решения. "Напишите", - заинтересованно сказал Ершов.

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

Статья содержала ряд понятий, ставших впоследствии достаточно широко распространёнными (не всегда под тем же именем): операторная схема, связь операторов по управлению и по используемым и/или вырабатываемым переменным, переменная как аналог ячейки памяти, маршрут переменной, область действия обозначения. Была показана эквивалентность задач экономии памяти и раскраски графа (графа несовместимости областей действия).

Содержимое статьи достаточно внятно можно было бы изложить на одной журнальной странице, отказавшись от выбранного стиля. А если совсем коротко, то так: экономия памяти - то же самое, что экономия числа обозначений (переменных) в программе. Обозначение становится занятым, как только оно даётся новому значению, и продолжает быть занятым в каждой из ветвей программы, пока это значение ещё может потребоваться. Дерево последовательно исполняемых операторов - от первого присваивания (корень) до последнего на каждой из ветвей использования (листья) - это область действия обозначения. Области несовместимы, если они пересекаются хотя бы по одному оператору.

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

В нашем трансляторе не делалось попыток улучшить использование переменных по сравнению с исходной программой на Алголе. Такое расхождение теории с практикой в жизни встречается не столь уж редко. Я отнюдь не противник теории и знаю множество примеров вполне практичных теоретических решений программистских проблем.

В книге - С.С. Лавров, Л.И. Гончарова. Хранение информации в памяти ЭВМ. - М.: Наука, 1971 - авторы попытались собрать как раз такие практически полезные элементы программистской теории.

Но нельзя заранее ставить крест и на непрактичных в данный момент теориях. В частности, эвристические приемы, упомянутые в связи с задачей экономии памяти, должны как-то оцениваться. Критерием или точкой отсчёта здесь и может служить общая теория экономии памяти. Фантастически быстрое развитие возможностей вычислительной техники иногда делает приемлемым теоретическое решение, до какого-то времени бывшее непригодным для практического применения. Например, во время нашей упомянутой выше беседы А.П. Ершов охарактеризовал линейные (с линейной зависимостью времени исполнения от характерного параметра N) алгоритмы решения отдельных задач трансляции как хорошие, с трудоемкостью N * ln N - как неплохие, а квадратичные - как предельно допустимые. Думаю, что теперь их место занимают алгоритмы с кубичной сложностью.

Уже в начале 60-х стало ясно (и мне в том числе), что Алгол вполне приемлем для программирования вычислительных задач, но универсальным языком без большой натяжки называться не может. В это же время ко мне обратились два молодых инженера из конструкторского отдела ОКБ - Г.С. Бегунков и И.Е. Педанов, заявившие о своём желании заняться автоматизацией конструкторских работ и попросившие взять их под своё крыло. Я это и сделал не без сопротивления со стороны начальника их отдела. В это же время стали плодиться "языки" подготовки информации для станков с программным управлением. По своему уровню они были существенно ниже Алгола. Вчетвером - вместе с В.А. Степановым - мы начали думать над ситуацией.

Итогом явилась статья "Аппарат геометрических описаний для автоматизации конструкторских работ" (1963 г.). На примере одной предметной области - описания формы геометрических тел - ещё далёкой от общей задачи автоматизации проектирования, но с оглядкой на нее, мы показали необходимость специфических для этой области типов данных и описали такие типы и соответствующий им набор операций. Однако следующий шаг - включение определений любых новых типов данных в универсальные языки программирования ещё не был сделан, и позже это сделали другие. Делался вывод, что для реализации операций над данными новых типов следует использовать языки обработки символьной информации (ЯОСИ). Это - прообраз тезиса о том, что автоматический синтез программ по спецификациям задач должен быть основан на конструктивном доказательстве теоремы существования решения задачи (именно для проведения этого доказательства и нужны ЯОСИ). Этот тезис был впоследствии использован многими авторами, в том числе и в инициированных мной работах по синтезу программ и системе СПОРА.

В те годы я познакомился с Э.Х. Тыугу - тогда ещё молодым эстонским инженером, размышлявшим об автоматизации решения прикладных задач на вычислительных моделях. Мне очень понравились его замыслы и я старался оказывать ему поддержку в той мере, в какой это вообще от меня требовалось. У нас установилось хорошее взаимопонимание и дружески-деловые отношения с регулярными встречами. Они продолжались бы и сейчас, не будь отношения между республиками бывшего СССР так нелепо осложнены, а в чём-то и испорчены. Не смею быть судьёй другого народа, но думаю, что эстонцам (литовцам, украинцам и т.д.) и русским следовало бы не отгораживаться друг от друга, а объединять силы для преодоления общих трудностей - в политике, в экономике, в собственном миропонимании.

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

И.Е. Педанов до сих пор остался верен задаче автоматизации конструирования с привлечением средств машинной графики и продолжает получать интересные результаты. Г.С. Бегунков избрал для себя иное поприще.

Ну а я, уволившись в 1966 году из ОКБ скончавшегося в начале года С.П. Королёва, погрузился в сферу ЯОСИ.

Первым шагом была работа над языком Снобол-А (препринт ВЦ АН СССР, 1968) и его реализацией на БЭСМ-6 (совместно с Л.И. Гончаровой (Станевичене)). Работа успеха не имела не столько из-за недостатков реализации (отражавших недостатки доступных ЭВМ), сколько из-за непопулярности и слабости языка Снобол.

Существенно более успешной была реализация языка Лисп на БЭСМ-6 (совместно с Г.С. Силагадзе). Удалось создать неплохие интерпретатор и компилятор Лиспа. В книге тех же авторов "Язык Лисп и его реализация" (М.: Наука, 1978) описана более совершенная реализация.

От работ по Алголу берет начало серия работ по синтаксическому анализу (совместно с Г.М. Заикиной (алгоритм, использованный в трансляторе с Алгола 60), Л.И. Станевичене, М.В. Дмитриевой и А. Ордяном). Результаты этих работ способствовали главным образом удовлетворению собственного любопытства, так как тема была уже в основном исчерпана в программистской среде.

Интересные прочитанные работы заставляют иногда отвлечься от основной темы деятельности. Так появился препринт по ПВМ - доморощенной версии универсального машино-ориентированного языка UNCOL, призванного сократить объем работ по трансляции со многих входных на многие объектные языки. Версия не была слишком удачна, но полученный опыт позднее был использован при проектировании части В (вычислителя) языка АБВ.

Так же возникла статья "Семантика языков программирования (обзор)", содержащая изложение идей денотационной семантики и её связи с операционной. К ней примыкает и работа совместно с М. Ириарте (Куба) по семантике понятий, традиционно не охватываемых денотационной семантикой. В этой работе получены интересные результаты, но работы математического плана - не совсем моя стихия. Впрочем, уже во 2-й половине 90-х г.г. я взялся за обработку материалов спецкурсов по теории программирования, читавшихся лет за 10 до того на матмехе ЛГУ. Книга написана и вот уже три года лежит в издательстве Петербургского университета. Большую её часть занимают разделы именно по семантике алгоритмических языков.

А.П. Ершов привлёк меня к участию в Рабочей группе WG2.1 ИФИП по Алголу. Это было великолепной школой. Однако мои попытки изложить своё понимание путей развития универсального алгоритмического языка и повлиять на работу над Алголом особого успеха не имели. В рабочих материалах группы зафиксирован мой важный (или важный для меня) тезис о необходимости включения (интеграции) средств взаимодействия с операционной средой в языки программирования. Сейчас этот тезис общепринят, особенно в системах программирования для персональных компьютеров. По ходу работы в группе у меня сложилось убеждение в бесперспективности Алгола 68, если не полной, то в сравнении с ролью, сыгранной Алголом 60.

В той же обстановке (работа в группе WG2.1) родился язык АБВ как альтернатива Алголу 68 и как шаг в основном русле моих раздумий. (С.С.Лавров и др. Расширяемый алгоритмический язык АБВ. - В кн.: Обработка символьной информации, в. 3 - М.: Вычислительный центр АН СССР, 1976; Е.Н. Капустина и др. Схема расширений и основные принципы реализации аппарата процедур языка "Паскаль" ;в языке АБВ. - В кн.: Обработка символьной информации, в. 4 - М.: Вычислительный центр АН СССР, 1978). Появление все новых языков, ориентированных на конкретное применение, рассматривалось как неизбежность, подтверждаемая всей программистской практикой тех лет. А всякая установившаяся практика нуждается в инструментальной поддержке. В этом качестве и был предложен язык АБВ. Был описан механизм последовательного расширения базового языка (т.е. самого АБВ) до языка, в котором заинтересован пользователь. Это - прототип технологий программирования, ставших весьма популярными за последние 10-15 лет.

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

Многим планам моей научно-литературной деятельности не суждено было осуществиться. Так, упомянутые выше мои книги с Л.И. Гончаровой и с Г.С. Силагадзе имели надзаголовок "Автоматическая обработка данных". Предполагалось, что это будет серия (или библиотечка) книг, охватывающая все то, что мне представлялось важным в программистской деятельности. Ради одной из следующих книг серии - "Язык "Паскаль" и его реализация" я занялся написанием транслятора с "Паскаля" для машины Одра-1204 (машина маленькая, но в Ленинградском университете, где я тогда работал, она была доступна почти как персональная для десятка сменяющих друг друга пользователей; на ней же были перед этим проверены многие алгоритмы из книги по Лиспу). Транслятор (и, кажется, неплохой) был написан, а книга - увы, нет.

Вместо неё появилась брошюра "Основные понятия и конструкции языков программирования" - М.: "Финансы и статистика", 1982 - глава также ненаписанной второй части "Введения в программирование". В ней дан обзор основных понятий, встречающихся в таких языках, как "Паскаль", Алгол 68, ПЛ/1 и другие. Показано, как и в чем эти понятия облегчают труд программиста. Дано представление о доказательстве правильности программ.

Последний этап моей научной деятельности почти полностью связан с работой над системой СПОРА. Начался он в 1977 году и продолжался до тех пор, пока обстоятельства (главным образом, здоровье) не заставили меня отказаться от руководства молодыми сотрудниками. Хотя формально были созданы по крайней мере две версии системы, среди них не было той, которая меня бы удовлетворяла. Хуже того, ни одна версия не была испытана в условиях, близки к тем, в которых она должна была работать.

Система СПОРА была задумана как средство построения формальных моделей прикладных (предметных) областей и автоматизации создания программ решения задач в этих областях на основе их спецификаций в модели. Я предполагал начать работу над системой с переноса на БЭСМ-6 системы ПРИЗ, разработанной для сходных целей Э.Х. Тыугу. Убеждён, что если бы это предложение было принято, то создалась бы хорошая база для последующего развития системы и её судьба оказалась бы совсем иной (может быть, вполне благополучной). Но основные участники работы - И.О. Бабаев, Ф.А. Новиков и Т.И. Петрушина - предпочли пойти своим путем. В результате Э. Тыугу получил возможность учиться на наших ошибках и использовать всё полезное из нашего опыта. Упрекнуть его, конечно, не в чем. Но хотелось бы, чтобы такое обогащение было взаимным. Мой принцип невмешательства в реализацию собственных идей, передачи их в руки младшего поколения в данном случае не сработал.

Названные выше мои сотрудники опубликовали свой проект входного языка системы в статье: "Декарт - входной язык системы СПОРА" в кн.: "Прикладная информатика" - М.: "Финансы и статистика", 1980. Не считая только что сделанного замечания, я был согласен с этим проектом, и он был положен в основу дальнейшей работы.

Позже в работе "D-аксиоматизация языка Декарт" (опубликована в сборнике "Прикладная информатика" - М.: "Финансы и статистика", 1987) я рассмотрел вопросы пополнения языка "Декарт" новыми конструкциями, формального описания его семантики средствами исчисления предикатов первого порядка (без равенства и без функциональных букв), автоматического решения задач, сформулированных на этом языке. Анализ ряда примеров позволил выявить основные трудности, возникающие при решении задач, и наметить некоторые пути их преодоления.

В качестве элемента системы СПОРА предполагалось использовать программу автоматического доказательства/опровержения теорем в исчислении предикатов. Над этой программой я работал сам. Но, увлёкшись универсальной программой доказательства теорем, я вовремя не переключился на выделение из исчисления предикатов такого фрагмента, который охватывал бы только нужды эффективного доказательства теорем существования для синтеза программ. Возможно, что такой фрагмент найти и не удалось бы, но попытаться следовало. Исходным материалом для предъявления требований к такому фрагменту должны были послужить модели двух предметных областей: элементарной геометрии (задачи на построение) и элементарного программирования (типичные задачи на программирование, предлагаемые первокурсникам). Эти модели были построены (с участием Е. Несветаевой и Т. Шошкиной), могут быть ещё усовершенствованы, но их опыт ещё требует более глубокого осмысления.

Обзор "Использование вычислительной техники, программирование и искусственный интеллект (перспективы развития)" - "Микропроцессорные средства и системы", N 3, 1984 - отражает достаточно субъективную позицию автора по перечисленным в заголовке проблемам. Сформулированы предпосылки появления баз знаний в качестве основы нового поколения систем программирования (совместной работы человека с ЭВМ).

База знаний определена как совокупное представление понятийного, фактуального (предметного) и процедурного знания и системы их взаимодействия. "Задача, - говорится в статье, - может быть решена машиной только в том случае, если ... для неё написана формальная спецификация. Последняя должна опираться на некоторую базу знаний. Модель предметной области описывает общую обстановку, в которой возникла задача, а спецификация - содержание задачи". Традиционные системы программирования не содержат необходимых для этого средств. Затронут также человеческий аспект проблемы. Выдвинут ряд предложений для Государственной программы развития вычислительной техники и средств взаимодействия человека с этой техникой. Статья написана мной на основе доклада, представленного в комиссию по подготовке такой программы. Насколько мне известно, все труды этой комиссии, как и многих других, ей подобных, ушли в песок.

В статье "Представление и использование знаний в автоматизированных системах" - "Микропроцессорные средства и системы", N 3, 1986 - существенно дополнены положения предыдущего обзора. Подчеркнута роль метазнания (воплощения опыта работы с моделью предметной областью) как основы развития базы знаний. Система СПОРА описана в терминах рассмотренных в статье понятий.

Назову ещё несколько работ, опубликованных в это время.

Статья "Кому и для чего нужна персональная ЭВМ" - первая (почти восторженная) реакция на появление персональных компьютеров - содержала, в частности, предложения по составу программного обеспечения для пользователя - научного работника.

Статью "Методология программирования" - В кн. "Семиотика и информатика", в. 23 - М: ВИНИТИ, 1984 - трудно изложить кратко, так как она сама достаточно конспективна. Построена она на базе энциклопедического определения методологии как "учения о структуре, логической организации, методах и средствах деятельности", методологии науки - как "учения о принципах построения, формах и способах научного познания".

Статья "О знаниях и языке машины и человека" - В кн. "Семиотика и информатика", в. 24 - М: ВИНИТИ, 1985 - анализирует понятие "искусственного интеллекта" ЭВМ, его принципиального отличия от "естественного" интеллекта человека, описывает слабые и некоторые сильные стороны этого понятия, обосновывает правомерность его употребления. Оспаривается точка зрения, что естественный язык, пусть даже соответствующим образом ограниченный, может служить наилучшим средством общения человека с ЭВМ. Статья заканчивается резюме: "Естественный интеллект породил себе на помощь множество искусственных языков, не следует предполагать, что искусственный интеллект возродит естественный язык".

Статья "Формализация, лингвистика, логика" - В кн. "Семиотика и информатика", в. 27 - М: ВИНИТИ, 1986 - описывает свойства естественного языка как модели внешнего мира, его сильные и слабые стороны в этом качестве. Охарактеризованы те средства (язык математики, компьютеры и их языки, графические и им подобные языки), которые человек привлекает для преодоления слабостей естественного языка. Проведено сравнение лингвистических и логических моделей. Показано, что построение любой модели не только объясняет моделируемое явление человеку, но и (тем самым) изменяет, а иногда и "убивает" это явление. Такое может произойти, в частности, просто при попытке пронумеровать элементы бесконечного множества, исходя из нашего представления о его составе (диагональный метод в теории множеств). А в жизни закон, направленный на пресечение преступлений той или иной категории, обычно всего лишь меняет методы, применяемые преступниками, на новые - "легальные" с позиций этого закона.

Спустя некоторое время после перехода на работу в Институт прикладной астрономии РАН я начал робкие попытки предложить свои услуги в качестве помощника по решению тех или иных математических или программистских проблем. Успеха они не имели. Скорее всего, потому, что требовали от очень занятых людей уделить время на то, чтобы ознакомить меня с содержательной (физической) сущностью дела. Только Л.Ю. Петров предоставил мне такую возможность - ему это было нетрудно сделать, т.к. у него была написана обширная, достаточно полная и понятная, одним словом - хорошая, документация по комплексу ВОРИН, над которым он тогда работал. Мне, как кажется, удалось предложить ряд изменений в его алгоритмах и программах, благодаря чему программы стали заметно более быстрыми, а алгоритмы - более универсальными. Но видимого интереса эти предложения ни у Л.Ю., ни у В.С. Губанова - в ту пору его руководителя - не вызвали.

Большим везением для меня стала случайная необходимость выступить официальным оппонентом по докторской диссертации А.Т. Байковой, посвященной восстановлению изображений в радиоинтерфометрии. Я совершенно не был знаком с физической стороной проблемы, но обладал достаточным объемом математич ских знаний, чтобы разобраться с ней, а главное - заинтересоваться ею. Думается, что мне и здесь удалось получить некоторые существенные результаты теоретического характера, а главное - найти возможность для массового вычислительного эксперимента, позволившего как подтвердить с уверенностью многие результаты А.Т. Байковой, так и обнаружить некоторые новые явления. Всё это описано в "Сообщениях ИПА РАН, N 106 - К обоснованию методов восстановления изображений на основе выпуклых критериев качества" и в отчёте о моей работе по этой теме за 1997 г. Но ряд исследований по этой проблеме ещё хотелось бы провести.

Март 1998 г.