Биография

Андрей Петрович Ершов, выдающийся программист и математик, лидер советского программирования, родился 19 апреля 1931 г. в Москве. Умер после тяжелой болезни в Москве 8 декабря 1988 г.

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

С 1943 г. родители А.П. Ершова живут в Сибири, в Кемерово, где в 1949 г. он и закончил среднюю школу. В том же году он поступает на физико-технический факультет Московского университета, собираясь стать физиком. Однако из-за нелепых запретов, которыми была полна сталинская эпоха, учиться на физика ему не дали, а разрешили перевестись на механико-математический факультет того же университета. Там он стал специализироваться на кафедре вычислительной математики, руководимой академиком С.Л. Соболевым, а на последних курсах под влиянием А.А. Ляпунова увлекся программированием. Еще будучи студентом, в 1953 г., он поступил на работу в Институт точной механики и вычислительной техники - организацию, в которой складывался один из первых советских коллективов программистов.

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

В 1954 г. А.П. Ершов закончил университет - это был первый в советских вузах массовый выпуск по специальности "программирование". С 1954 по 1957 г. он аспирант А.А. Ляпунова в Московском университете. Кандидатскую диссертацию, посвященную понятию операторного алгорифма, он подготовил к 1958 г., однако в связи с настороженным отношением математиков к новой науке защитить ее ему удается только в 1962 г. Докторская диссертация по методам построения трансляторов защищается им в 1968 г. В 1970 г. он становится членом-корреспондентом, а в 1984 г. - академиком АН СССР.

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

В 1960 г. он становится и формальным главой этого отдела и окончательно переезжает в Сибирь. Сибирское отделение привлекало молодых активных ученых большими возможностями организации новых масштабных исследований, и Ершов был одним из тех молодых ученых, которые в конце 50-х и начале 60-х гг. вместе с академиками-основателями создавали институты нового научного центра в Академгородке. В дальнейшем отдел Ершова стал одной из основ созданного в 1964 г. Г.И. Марчуком Вычислительного центра СО АН СССР. Благодаря Ершову Академгородок становится одним из ведущих центров по программированию. Ершов создал известную новосибирскую школу системного и теоретического программирования, исследования которой складывались из работ его учеников и последователей в различных новосибирских институтах. Сам Ершов, будучи только заведующим отделом и отделением Вычислительного центра, стал идейным руководителем и неформальным главой большого и активно работающего содружества новосибирских программистов.

Велико влияние Ершова и на развитие программистской науки и практики в стране в целом. Это влияние далеко не ограничивалось тем, что он был главой одной из ведущих советских научных школ, или тем научным вкладом, о котором речь пойдет ниже. С конца 60-х гг. он становится в центре программистской жизни в СССР. Он был одним из основных организаторов первых национальных конференций по программированию, большого числа национальных конференций, семинаров и школ по различным проблемам системного и теоретического программирования, членом редколлегий основных советских программистских журналов, редактором (с момента его образования) журнала "Микропроцессорные средства и системы", председателем ряда национальных комиссий и рабочих групп. В 1987 г. он становится председателем Совета по кибернетике, который координирует все отечественные академические исследования по информатике и программированию.

Вообще, понимая, как важна научно-организационная работа в период становления новых научных направлений, А.П. Ершов уделял ей много внимания, и не только в национальном масштабе. Он активно участвовал в работе International Federation on Information Processing (IFIP) - был членом ряда комитетов и рабочих групп IFIP, активным участником ряда конгрессов, в том числе вице-председателем программного комитета IFIP-68, приглашенным докладчиком IFIP-71, организатором рабочих конференций IFIP. В 1980 г. за свою деятельность в IFIP он был награжден "Серебряным сердечником" (Silver Core). Он также состоял членом редколлегии таких международных изданий, как "Information Processing Letters", "Theoretical Computer Science" и др. Его международные творческие и дружеские связи были обширны. Он выступал с приглашенными докладами в большом числе организаций Европы, Японии и США. С 1965 г. он - член Association for Computing Machinery (АСМ), в 1974 г. стал почетным членом Британского Компьютерного общества. В последние годы жизни А.П. Ершов уделяет много внимания международной работе по информатике в образовании.

Для большого числа советских проектов и работ А.П. Ершов выступал как признанный авторитет и вдумчивый эксперт - они проектировались и выполнялись под его влиянием. Будучи внимательным и заботливым учителем, он уделял много времени подготовке программистских кадров. Среди его учеников - большое число кандидатов наук и несколько докторов наук в различных городах Советского Союза. Собственно преподавательскую работу он начал в 1958 г. - сначала в Московском, затем в Новосибирском университете, в котором он был профессором. В Новосибирском университете он был организатором и бессменным руководителем коллектива, ведущего подготовку студентов и аспирантов по системному и теоретическому программированию.

Огромная научная, организационная и педагогическая деятельность Ершова была признана в стране. Он был награжден несколькими орденами Советского Союза. В 1983 г. ему за теоретические работы по смешанным вычислениям была присуждена премия имени академика Крылова - главная премия Академии Наук СССР за фундаментальные работы по прикладной математике. За все время существования этой премии А.П. Ершов был единственным программистом, ее получившим. В 1985 г. за работы по методике создания больших программных систем он был награжден премией Совета Министров СССР - известной в Советском Союзе премией, присуждаемой за работы, имеющие большое прикладное значение.

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

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

Как и большинство программистов 50-х гг., А.П. Ершов начинал с создания алгоритмов численных методов и стандартных программ. Первая его работа [1] была посвящена разработанному им методу обращения матриц, относящемуся к классу методов пополнения. Хорошая алгоритмичность метода - компактность алгоритма, удобные рекуррентные соотношения - позволила этому методу быть основой для стандартных программ для ряда первых советских ЭВМ (для одной из них - БЭСМ - такая программа была разработана Ершовым).

Середина 50-х гг. была временем становления теоретического и системного программирования. Системное программирование начиналось с направления, названного тогда автоматизаций программирования и связанного с разработкой языков программирования и методов их трансляции. Начальный толчок этому направлению дали работы Рутисхаузера и Ляпунова. Первые советские языки программирования были связаны с операторными схемами, предложенными А.А. Ляпуновым. Эти схемы задавали структуру программы в терминах операторов некоторых фиксированных классов с последующим заданием представления этих операторов. А.П. Ершов был руководителем и создателем одних из первых советских программирующих программ для ЭВМ БЭСМ и "Стрела" (программирующими программами тогда назывались интегральные разработки языка и системы программирования). На основе данных работ им была написана первая в мировой литературе монография по автоматизации программирования [9], практически немедленно переведенная и изданная за рубежом, а также ряд работ 1956-1958 гг. В этих работах А.П. Ершовым был впервые предложен ряд понятий, подходов и методов, вошедших в классический багаж языков и систем программирования. Здесь и понятие цикла как фундаментальной конструкции языков программирования, и триадное внутреннее представление выражений, и метод функции расстановки для поиска совпадающих фрагментов (имен), и алгоритм оптимального распределения рабочих ячеек (регистров), и начальные идеи потокового анализа, и пр.

Дальнейшие работы А.П. Ершова по языкам и методам трансляции были одними из тех, которые создали фундамент этого направления. Под руководством А.П. Ершова и по его идейному проекту были созданы такие известные оптимизирующие системы программирования, как АЛЬФА, АЛЬФА-6, БЕТА, которые во многом определили современную методологию оптимизирующей трансляции.

Разработка системы АЛЬФА началась с создания языка - это было характерно для традиций программирующих программ. Язык этот отталкивается от первоначальной версии Алгола 60 - так называемого Алгола 58. Группа, руководимая Ершовым, вела разработку параллельно с международной группой, разрабатывающей Алгол 60. Во многом работы указанных групп оказались совпадающими, и поэтому после опубликования описания Алгола 60 новый, созданный группой Ершова язык был сформулирован как расширение Алгола 60 [19, 34]. Этот язык, носивший предварительные названия "Входной", "Сибирский", окончательно утвердился под названием Альфа-язык.

В Альфа-языке впервые введено понятие многомерных значений и определены операции над ними, в том числе операции конструирования. Все это вошло в стандартный багаж понятий современных языков, таких как ПЛ/1, Алгол 68, Ада. Впервые были введены и такие, естественные для современных языков концепции, как разнообразие циклов, задание начальных значений выражениями. Интересными, но, по существу, не повторенными свойствами языка были перечисления и верхние (временные) индексы. В своих метасредствах язык впервые выходил за пределы контекстно-свободных грамматик.

Система АЛЬФА [40] была первой в мировой практике оптимизирующей системой программирования для языков, более сложных, чем Фортран. Существовавший в то же время английский проект (Хоукинс и Хакстейбл) для Алгола 60, аналогичный АЛЬФА по функциональным возможностям, так и не был доведен до конца. Это важно отметить потому, что сама возможность существования трансляторов для языков, более сложных, чем Фортран, с приемлемой эффективностью объектных программ в то время многими оспаривалась. Система АЛЬФА стала конструктивным доказательством такой возможности, и это существенно, ибо снимало преграды на пути создания новых, семантически более богатых языков.

Работы по системе АЛЬФА внесли крупный вклад в методологию оптимизирующей трансляции. Была предложена и реализована многопроходная схема трансляции, ориентированная на оптимизацию, впервые введены в практику оптимизации программ оптимизирующие преобразования промежуточного представления программы, выделены и построены промежуточные представления программы, ориентированные на алгоритмы оптимизации.

Реализованные в системе АЛЬФА методы экономии памяти, разработанные Ершовым, представляют собой теоретический и практический фундамент последующих работ по экономии памяти. Ершовым было введено понятие информационного графа программы как модели, пригодной для определения такого преобразования, как глобальная экономия памяти, задача экономии памяти была сведена к известной задаче раскраски графа [30], вместе с Г.И. Кожухиным были заложены основы эвристического алгоритма близкой к оптимальной раскраски графа [28]. Основы полной теории экономии памяти были даны Ершовым в статье [90]. Эти труды определили не только работы по экономии памяти, но и другие исследования по оптимизации программ, в частности дали хороший пример построения практичных теоретических моделей для оптимизации программ.

Дальнейшие работы Ершова по оптимизирующей трансляции привели к появлению широко известной системы АЛЬФА-6 [98, 106]. Повторяя во многом систему АЛЬФА, система АЛЬФА-6 обладала более компактной схемой трансляции, концептуально более четко был выделен в схеме трансляции внутренний язык представления программы как основа для алгоритмов оптимизирующих преобразований. Схема оптимизирующей трансляции системы АЛЬФА-6 представляет собой хорошую основу для построения одноязыковых трансляторов с развитой оптимизацией программ, в том числе и глобальной.

В 1968 г. А.П. Ершовым была предложена идея машинно-ориентированного языка СИГМА, основанного на расширяемости и настраиваемости на объектный язык. Этот язык был разработан им совместно с А.Ф. Раром [67], а затем реализован для ряда отечественных ЭВМ Г.Г. Степановым [238]. Язык включал в себя механизмы формального описания объектного языка и параметров машинной архитектуры и был основан на макросах свободной структуры. Компактный набор базисных макросов определял в том числе списки и слова (машинные слова) слоговой структуры, что давало возможность строить эффективные в работе структуры данных. Механизмами расширения были макросы. Опыт применения языка показал хорошие возможности его настройки на различные, в том числе и весьма специфические, машинные архитектуры. Плодотворность идеи компактного и расширяемого ядра показывает теперешняя популярность такого языка, как Форт.

В 1971 г. Ершовым были опубликованы статьи [85, 86], которые положили начало работе по проекту БЕТА. Исследования по проекту БЕТА представляли собой многолетнюю (итоговая публикация появилась в 1982 г. [240]) методологическую и экспериментальную работу, связанную с осознанием фундаментальных основ трансляции и языков программирования. Сам подход к совместной реализации широкого класса языков программирования требовал выявления сущностей, определяющих эти основы.

Работы по проекту БЕТА складывались из исследовательской и экспериментальной работ (они осуществлялись в 70-х гг.) и собственно работы по созданию многоязыковой транслирующей системы (она заняла первую половину 80-х).

Семидесятые годы характерны тем, что именно в это время складывалась современная методология трансляции, проходило освоение и внедрение в практику программирования нового поколения алгоритмических языков высокого уровня: от ПЛ/1 до Паскаля. Позднее появившиеся в практике программирования языки, такие как Си, Ада, Модула-2, как по языковым свойствам, так и по реализации во многом продолжали линию указанных выше языков.

Исследования по проекту БЕТА шли в русле этих общих исследований и во многом повлияли на них. Насущной была проблема выработки типовой, общей для широкого класса языков схемы трансляции. Именно такая схема была предложена и реализована в системе БЕТА [133]. Важно заметить, что создаваемая на опыте языков 70-х гг., она оказалась практически пригодной и для языков 80-х: в системе БЕТА по общей схеме были реализованы как Симула-67 и Паскаль, так и Ада и Модула-2. В исследованиях проекта БЕТА была предложена и отрабатывалась идея метапроцессоров [118], автоматизированным образом создающих соответствующие фрагменты транслирующей схемы, что составляет основу современных систем построения трансляторов. Правда, в окончательной реализации метапроцессоры были сведены к общей библиотеке транслирующих процедур, что оказалось практически выгодным и также представляет перспективное направление автоматизации построения языковых процессоров. В работе [155] (совместно с В.В. Грушецким) существенно развивается понятие абстрактного синтаксиса, введенное Маккарти, что заложило основу широкого внедрения этого понятия в создание различных языковых процессоров и автоматизацию их построения.

Одной из центральных концепций схемы трансляции в проекте БЕТА является концепция внутреннего языка [116]. Исследования по внутреннему языку в проекте БЕТА составили заметную часть общемировых исследований, которые ввели понятие внутреннего языка, внутреннего представления программы как фундаментальное для методологии построения большого числа различных языковых процессоров - трансляторов, анализаторов свойств, систем преобразований программ и пр. В системе БЕТА внутренний язык выступает в трех качествах: как семантический базис входных языков, как основа для оптимизирующих преобразований на его уровне, как исходное представление для генерации объектного кода на различные ЭВМ. С этой функциональной нагруженностью внутреннего языка были связаны и трудности его разработки. Начальные подходы к внутреннему языку как минимальному набору ортогональных понятий были интересны в теоретическом и методологическом отношении, но практически оказались не совсем подходящими. Окончательная версия внутреннего языка была создана на основе подхода, указанного Ершовым в [85], как объединение абстракций общих понятий и конструкций входных языков с включением не полностью интерпретируемых конструкций, зависящих от конкретного входного языка. Анализ большого числа входных языков, выделение общностей и построение абстракций [131, 147] были важной и значительной работой, обогатившей понимание общей содержательной семантики существующих языков программирования.

Созданный на основе идей и подходов, предложенных Ершовым, внутренний язык системы БЕТА показал свою практическую пригодность для алгоритмов потокового анализа и оптимизирующих преобразований [119]. Внесение в этот язык машинно-ориентированных свойств сделало практичным генерацию с этого языка на весьма различающиеся машинные архитектуры - такие как БЭСМ-6 и СМ ЭВМ.

В некотором смысле из анализа общих понятий языков программирования и осознания их определенной ограниченности выросла предложенная Ершовым в статье [341] фундаментальная и многообещающая идея лексикона программирования как общей среды для разработки и обоснования программ. Он определяет лексикон как "лингвистическую систему с фразовой структурой, содержащую в себе формальную нотацию для выражения всех общезначимых конструкций, употребляемых при формулировании условий задач, при синтезе и преобразовании программ".

Лексикон, говорит Ершов, "выражает не только и не столько программы, сколько их свойства и наши суждения о них. Язык программирования кодирует объекты предметной области задачи, а наше знание об этих объектах остается за пределами программного текста. Лексикон же является средством описания объектов предметных областей и содержит нотацию для построения баз знания о предметных областях. Программа, выраженная средствами лексикона, в определенном смысле содержит в своем тексте описание своей семантики в виде совокупности нетривиальных фактов о вычисляемой ею функции - в отличие от "чистых" программ, которые не говорят ничего о своих функциональных свойствах.

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

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

На наш взгляд, идея лексикона является одной из основных, оставленных нам Ершовым. Она может служить источником создания научных и методических основ программирования на десятки лет вперед.

Идейно к работам по автоматизации программирования примыкают и работы А.П. Ершова по теоретическому программированию. Первой его работой в этой области стала статья об операторных алгоритмах [8]. В ней предлагалась модель программы, которая была одним из источников такой известной модели, как стандартные схемы. Понятие операторного алгоритма исходило из предложенного А.А. Ляпуновым понятия логической схемы программы и ставило целью создание точной модели, хорошо представляющей свойства реальных программ. В последующих работах [17, 29] Ершовым были уточнены понятие операторного алгоритма и его отношение к реальным программам, заданным логическими схемами, и исследована его связь с такими известными понятиями алгоритма, как частично-рекурсивные функции и нормальные алгоритмы Маркова. В этих же работах ставились содержательные задачи определения на модели программ преобразований, оптимизирующих программу, и построения по реальной программе ее модели. Все эти работы Ершова были одним из основных источников современной теории схем программ.

Первой моделью программы в современной теории схем программ стали схемы Янова, предложенные Ю.И. Яновым в опубликованной в 1958 г. статье. В 1968 г. Ершов публикует статью [65], в которой придает результатам Янова ту форму, которая и является для схем Янова принятой в современной теории схем программ. Здесь он использует для схем Янова графовое представление, уже примененное в работах Ершова по операторным алгоритмам. Переизложение в новой форме аксиоматики схем Янова позволило ввести большую формализацию и сделать эту аксиоматику более ясной. Именно на эту аксиоматику опираются дальнейшие исследования схем Янова, так как упрощение аксиоматики позволило исследовать более глубокие свойства преобразований схем Янова.

В 1968 г. Ершов публикует статью [64] об операторных схемах над общей и распределенной памятью. В этой статье вводится понятие информационного графа в том виде, в котором оно используется в теории схем программ и оптимизации программ сейчас, а также понятие схем над распределенной памятью. Оба понятия оказались важными как для самой теории, так и для ряда приложений, таких, как, например экономия памяти и распараллеливание программ. В [64]  рассмотрены и решены проблемы взаимных преобразований схем над распределенной и общей памятью. Создание общей теории распределения памяти завершено работой [89].

Крайне интересной и методологически богатой была монография "Введение в теоретическое программирование: Беседы о методе" [153]. В ней подведен итог исследованиям Ершова и его учеников по теории и практике экономии памяти и по схемам Янова. Непреходящая ценность этой работы заключается в том, что в ней прослеживается связь между теорией и практикой программирования, ясно показывается, как на основе практических нужд возникают теоретические модели и как затем исследования этих моделей дают нужные для практики результаты. Монографий подобного характера в мировой литературе по программированию, к сожалению, крайне мало, и книга Ершова здесь является неоценимым примером, полезным как для практиков, так и для теоретиков, стимулирующим их совместную работу. В этой книге сказался характер Ершова как ученого, всегда объединявшего в своей деятельности теорию, методологию и практику программирования.

Очень важное значение для развития теории схем программ имела статья Ершова и Ляпунова о формализации понятия программы [53]. В ней сведены воедино и сопоставлены известные к тому времени в этой теории результаты. Существенно, что здесь были охвачены и работы по теории параллельных схем программ, начатые в Новосибирске под руководством Ершова. Теоретические результаты рассматривались и в их практическом приложении к автоматизации программирования и к оптимизации программ. Важной для дальнейшего исследования была постановка ряда новых задач, связанных как с развитием теории, так и с ее приложениями.

Подобное же значение на новом этапе имели работы Ершова о современном состоянии схем программ [89,105]. Помимо вовлечения новых по отношению к [53] работ и переосмысливания возникших за это время задач следует отметить два новых аспекта. Первый заключался в содержательном изложении требований к алгебре программирования как универсальному символизму, позволяющему манипулировать с процессами-алгоритмами. Второй был связан с демонстрацией взаимного влияния внутреннего языка и теоретических моделей программ. Работа [89] - текст приглашенного доклада на Конгресс IFIP в Любляне - была затем переиздана как одна из лучших работ 1971 г.

Все работы 1967-1973 гг. оказали стимулирующее влияние на развитие теоретического программирования. В них был очерчен круг проблем теории схем программ, сопоставлены различные направления и модели этой теории, выработана общая система понятий и связаны воедино разнообразные результаты и их применения, иначе говоря, создан фундамент теории схем программ как цельного направления теоретического программирования.

Если теория схем программ имела дело с таким исследуемым и моделируемым объектом, как программа, то в дальнейшей деятельности по теории программирования Ершов делает следующий шаг, заключающийся в том, что предметом исследований становится процесс работы над программой. Начало этому новому направлению было положено Ершовым в опубликованной им в 1977 году статье "О сущности трансляции" [156]. В данной и последующих статьях он сформулировал понятие смешанного вычисления как фундаментальный принцип системного программирования, определяющий в тех или иных аспектах функционирование процессоров обработки программ.

Смешанное вычисление представляет собой некоторый универсальный процесс, определяемый над парами (программа, данные) и приводящий в общем случае к получению остаточной программы и частичных результатов. Математическим аналогом смешанного вычисления является функционал, который для определенного класса функций с несколькими аргументами строит (при задании некоторых аргументов) функции с меньшим числом аргументов. Процесс смешанного вычисления может быть, в свою очередь, задан в виде программы (смешанного вычислителя), что позволяет ставить вопрос о самоприменимости смешанных вычислений, а сам смешанный вычислитель уподобить s-n-m - функции Клини.

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

Именно определение принципа смешанных вычислений как общей основы большого числа процессов работы над программами отличает работу Ершова от ряда предыдущих работ и догадок Ломбарди, Футамуры, Турчина и др. Это и стало причиной того, что работы Ершова легли в основу нового и активно развивающегося направления в программировании, связанного с теоретическими исследованиями и практическими приложениями смешанных вычислений. Применение смешанных вычислений оказалось весьма полезным методологически для понимания и трактовки различных понятий и сущностей программирования.

Понятие смешанных вычислений, введенное Ершовым как общая модель для различных видов обработки программ, с необходимостью потребовало широкого круга исследований как по свойствам самой модели, так и по ее трактовке в различных областях возможного применения. Именно такая широта свойственна работам, выполненным Ершовым вместе со своими учениками - В.Э. Иткиным, Б.Н. Островским, В.К. Сабельфельдом, М.А. Бульонковым [163, 177, 184, 211, 213, 253, 357, 376, 427]. Было введено понятие корректности смешанных вычислений и определены модели смешанных вычислений и получения остаточной программы, для которых можно было доказывать корректность. Одной из таких моделей, на которых фокусировалось внимание, стала трансформационная модель, для которой смешанное вычисление задавалось набором базовых трансформаций. Сама модель смешанных вычислений и их корректность рассматривались как для императивных языков, так и для рекурсивных программ. Был получен ряд важных результатов по определению механизма задержки (замораживания) вычислений и данных, по описанию процесса смешанных вычислений для различных языков представления программ, по формулированию набора базовых трансформаций, по надежности (незацикливанию) процесса смешанных вычислений и пр.

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

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

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

Отталкиваясь от трансформационной модели смешанных вычислений и от своих работ в области трансляции и оптимизации программ, в [224] Ершов определяет концепцию трансформационной машины. Трансформационная машина есть абстрактное вычислительное устройство, выполняющее программы в некотором "сверхязыке", действиями которого являются трансформации пар (программа, данные). Действия эти поддерживают сохранение некоторого инварианта, что обеспечивает корректность трансформаций. Концепция трансформационной машины представляется весьма многообещающей - и как теоретическая модель для описания и обоснования процессов обработки программ, и как методологическая основа построения различных инструментальных процессов.

Концепция трансформационной машины является тем важным вкладом в трансформационный подход к построению программ, энтузиастом и пропагандистом которого был А.П. Ершов и различные аспекты которого исследуются в ряде его работ 80-х гг. Трансформационный подход развивается сейчас в ряде коллективов у нас и за рубежом и представляется весьма перспективным, так как он дает возможность получать программы с хорошими показателями таких качеств, как надежность и эффективность, а также повышает степень переиспользования программного обеспечения. Работы Ершова по трансформационному подходу [192, 224] дают естественную точку роста для последующих исследований.

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

Заключают работы Ершова по теории программирования его публикации [221, 235], посвященные понятию вычислимости. Сам он определяет эти работы как попытку синтеза взглядов на вычислимость, сложившихся как в математической логике, так и в теоретическом программировании. Так как понятие вычислимости является одним из главных как в той, так и в другой области и имеет фундаментальное значение для других программистских понятий, очевидно, что определение понятия вычислимости, абстрагированного от несущественных синтаксических или модельных понятий и вместе с тем вбирающего необходимые для теории и многочисленной практики сущности, является одной из главных задач, определяющих дальнейшее взаимовлияние математики и программирования. В фундаментальной работе [235] проводится глубокий анализ большого числа определений вычислимости, сложившихся в указанных областях, их сопоставление и оценка вклада в общую теорию. На основании данного анализа Ершов нащупывает идею определения вычислимости: свести определение вычислимой функции к понятию детерминанта, т.е. того, что является инвариантным к различным способам задания вычислений. По-видимому, эти работы Ершова будут иметь такое же стимулирующее значение для исследований в данной области, как и его работы начала 70-х гг. для теории схем программ.

Одной из важных заслуг Ершова перед отечественным и мировым программированием является то, что он умел оценить текущее состояние науки и практики и наметить те реальные точки роста и перспективы исследований, которые будут определять развитие программирования. Так, во второй половине 60-х гг. он одним из первых в стране осознал те новые возможности общения с ЭВМ, которые создают системы разделения времени. В 1966 г. он организует работы по автоматическим информационным станциям (проект АИСТ). Проект АИСТ, создателем и руководителем которого был А.П. Ершов, объединял широкий круг исследований по архитектуре вычислительных комплексов, их программному обеспечению и моделированию вычислительных систем. В рамках этого проекта была создана первая в стране развитая система разделения времени АИСТ-0, проект которой был предметом доклада на Конгрессе AFIPS 1967 г. [61], а итоговый доклад был сделан на 2-й Всесоюзной конференции по программированию в 1970 г. [80]. Реализованная на многомашинном комплексе из отечественных ЭВМ, эта система была во многом пионерской и внесла большой вклад в развитие отечественных работ по архитектуре ЭВМ и операционным системам, которые, к сожалению, были в дальнейшем заторможены ориентацией на копирование зарубежных разработок. Ряд таких свойств системы, как разделение в процессорах комплекса управления и обработки, иерархичность строения программного обеспечения, выделение ядра операционной системы, естественное сочетание различных режимов общения и обработки, обеспечили хорошую эффективность и гибкость системы.

Осмысливая опыт проекта АИСТ и других подобных работ у нас в стране и за рубежом в своем докладе на Конгрессе ИФИП-68 [72], Ершов выдвигает несколько насущных тезисов: о специализации процессов в многопроцессорном комплексе для разделения времени, об универсальных и специализированных системах разделения времени и областях их применимости, о различии требований профессионалов и непрофессионалов в программировании к общению с системами разделения времени и о том аспекте систем, который впоследствии будет назван дружественностью к пользователю.

Опыт руководства такими большими проектами, как АЛЬФА и АИСТ, и работы в этих проектах дали Ершову осознание общих проблем программирования и создания программного обеспечения. В 1973 г. В журнале "Кибернетика" появляется оказавшая большое влияние на развитие отечественных работ статья  "Математическое обеспечение четвертого пколения" [100]. В этой работе проводился глубокий и развернутый анализ как внешних свойств машин четвертого поколения, так и различных видов программных систем: операционных систем, систем программирования и их входных языков, специализированных систем обработки информации, в том числе пакетов прикладных программ (в работе дается классификация ППП, сохраняющая свою ценность и в наше время). Выделен ряд характерных систем обработки информации и определены их внешние и внутренние свойства. Очерчена общая модель операционной системы - так называемая базовая операционная система с концентрическим строением. Отмеченная в работе общность в реализации языков программирования, создании процессоров диалоговых языков и систем отображения хотя и не вылилась, как предполагал автор, в создание универсальных систем, но стимулировала работы по нахождению общей методологии создания таких систем (впрочем, некоторая ограниченная в своей универсальности многоязыковая транслирующая система на данной общности была построена - это система БЕТА, о которой говорилось выше).

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

Ершов еще в 60-х гг. отстаивал точку зрения, что программирование, несмотря на интеллектуальность и творческий характер этого процесса, нуждается в организации и регламентации, наборе или системе соглашений и правил, не говоря уже об инструментальном обеспечении. Руководя и активно участвуя в больших программных проектах, Ершов с его пытливым умом не мог не задуматься над вопросом: "Как это делается?"Еще в работах по АЛЬФА и АИСТу он пишет о ряде организационных принципов и регламентирующих соглашений. Первой его работой, полностью посвященной технологии программирования, была статья "Технология разработки систем программирования" [95], она же была первой советской работой в этом возникшем в те годы новом направлении, и сам русский термин - технология программирования (software engineering) - был предложен Ершовым. В соответствии с названием большая часть работы была посвящена собственно технологии трансляции. В ней рассматривались общие вопросы проектирования трансляторов: их структуры, системы технических процедур и пр., вопросы выбора методов реализации, вопросы организации отладки и документирования. Отдельно рассматривались проблемы автоматизации построения трансляторов и автоматизированного построения документации. Важной стороной работы было то, что проблемы технологии трансляции рассматривались в общем контексте технологии создания больших программных систем. В [95] был приведен почти исчерпывающий обзор существовавших к тому времени работ по технологии программирования и примыкающим проблемам с их развернутым анализом. Все это сделало работу фундаментальной для последующих отечественных исследований в данном направлении.

В ряде других работ Ершов исследует и развивает идеи технологии программирования. Им была предложена матричная организация коллектива разработчиков [99], внесен вклад в спецификацию этапов разработки, в том числе применительно к разработке трансляторов, проведен анализ реальной разработки (АЛЬФА-6) с точки зрения ее технологичности [131]. В работе [175], написанной совместно с Г.Д. Чининым, определяется, как должен быть организован коллектив, ведущий разработку промышленных трансляторов, как должна решаться такая важная проблема, как преемственность и переиспользование разработанного программного обеспечения, как должен проходить и информационно обеспечиваться процесс разработки. Ориентированная на технологию трансляции, эта работа дает ряд хороших идей по технологиям промышленной разработки других видов программного обеспечения.

С общеметодологической точки зрения для развития технологий программирования, их обоснования и формирования концептуального фундамента крайне важной является работа 1984 г. "Научные основы доказательного программирования"[285], представляющая текст доклада Ершова на заседании Президиума Академии наук СССР. Для программистской общественности эта работа мне кажется не менее важной, чем для членов Президиума АН, которым сделан этот доклад.

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

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

Работа по доказательному программированию помимо ее значимости для технологии программирования примыкает, как и уже упоминавшаяся работа [99], к работам Ершова по общим проблемам программирования. Ряд таких работ Ершова в течение 70-80-х гг. четко анализировали и оценивали текущую ситуацию у нас и в мире, ясно формулировали проблемы и возможные пути их решения.

Многое говорят сами названия статей: "Вычислительные центры коллективного пользования" [137], "Система программирования для мини - и микроЭВМ" [160], "Некоторые субъективные замечания к актуальным проблемам программирования" [183], "Комплексное развитие системного программного обеспечения - постановка проблемы" [269], "Персональная ЭВМ - предок млекопитающих в динозавровом мире ВЦКП" [271], "Опыт интегрального подхода к актуальной проблематике программного обеспечения" [290]. Обращенные к профессионалам, но доступные и непрофессионалам, написанные ясным языком, обладающие продуманной, хорошо организованной структурой и четким изложением идей и суждений, эти работы оказывали большое влияние на читателей программистов, служили делу осмысления текущей ситуации, переоценки ценностей, становлению новых идей и направлений.

Статья [137] обобщает опыт разработки архитектур и программного обеспечения больших систем обработки информации и вовлекает в отечественный опыт превалировавшую тогда линию ЕС ЭВМ. Работа [160] оценивает с точки зрения применения средств вычислительной техники новый тогда феномен - появление мини - и микроЭВМ, прогнозирует те неограниченные возможности, которые они создают, выделяет те новые черты, которые характерны для программного обеспечения микроЭВМ: интегральность подхода к совместному проектированию оборудования и софтвера, специализированность программного обеспечения (ПО), его ориентация на использование непрофессионалами в программировании. Здесь же делается оправдавшийся впоследствии вывод о крайней важности для ПО этих ЭВМ проблем переноса и совместимости, а также намечаются возможные пути решения этих проблем. В [183] справедливо отрицается выдвигавшийся некоторыми специалистами тезис о стабилизации положения в программировании и излагаются активные точки роста - новые концепции в языках программирования, кристаллизация и фундаментализация понятий трансляции, переход от баз данных к базам знаний (в работе они называются "сложными" базами данных), появление инструментальных комплексов (что впоследствии с легкой руки "адистов" стало называться "окружением программирования"). Надо сказать, что прогноз Ершова полностью оправдался. Здесь же оценивается состояние теории программирования и ее соотношения с практикой, что весьма существенно для определения путей развития теории. Много в работе говорится об обучении программированию, о подготовке кадров - но об этой ее стороне скажем позднее.

Если ряд предыдущих работ, существенно повлияв на развитие программирования до настоящего времени, сыграл свою роль, то работы 1983-84 г. продолжают оставаться актуальными. Богатство содержания и лапидарность изложения не дают возможности мне сколько-нибудь представительно пересказать их основные идеи и суждения - это потребовало бы, наверное, вдвое большего объема обзора, чем тот, который перед читателем. Стержневой и объединяющей идеей здесь является необходимость создания развитой инфосферы будущего информатизированного общества. В работах оценивается состав и спецификация оборудования, нужные СССР для создания такой инфосферы, определяются черты различных систем ПО для нее, намечается большой спектр научных проблем, от решения которых зависит ее создание. В работах отмечаются те черты вычислительных средств - микропроцессоров и персональных ЭВМ (именно ПЭВМ, а не ВЦКП), которые способствуют созданию такой инфосферы. Очень важен пропагандируемый здесь тезис, что "ПЭВМ - это не просто маленькая большая машина, а технический феномен, требующий свежего, непредвзятого и в то же время глобального подхода к созданию методов и приемов работы с ним".

Важно отметить, что развитие программирования требует не только новых идей, но и глубокого осмысления уже накопленного багажа и самой эволюции программирования, определенной периодизации развития, связанной прежде всего со сменой поколений ЭВМ. В [290] об этом говорится, но помимо этого Ершовым был выполнен ряд научно-исторических работ по изучению становления и развития программирования и информатики в СССР [135, 140, 143, 144, 191] (некоторые из них написаны совместно с М.Р. Шурой-Бурой).

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

Замечания и суждения Ершова по этому поводу разбросаны во многих его работах, но есть несколько широко известных его статей, многократно переведенных и изданных, которые целиком посвящены не научным или техническим проблемам программирования, а чисто, если можно так выразиться, профессиологическим аспектам - что есть программирование как наука и деятельность, что есть программист как специалист специфического интеллектуального труда. Это такие работы, как "О человеческом и эстетическом факторах в программировании" [91], "Программирование - вторая грамотность" [220], "Два облика программирования" [236]. В работе [91], посвященной памяти рано умершего талантливого программиста Г.И. Кожухина, содержится конструктивный анализ противоречий, возникающих между творческой природой программистского труда и необходимой для любых массовых профессий производственной его организацией. Главный тезис статьи: "Программирование обладает богатой, глубокой и своеобразной эстетикой, которая лежит в основе внутреннего отношения программиста к своей профессии, являясь источником интеллектуальной силы, ярких переживаний и глубокого удовлетворения. Корни этой эстетики лежат в творческой природе программирования, его трудности и общественной значимости". Статья полна глубоких суждений и замечаний, поясняющих этот тезис. В статье отмечается элитарность программистов и в то же время говорится о необходимости сделать искусство программирования общим достоянием.

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

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

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

В ряде уже упоминавшихся работ Ершов уделял внимание проблемам обучения программированию. Впервые свою развернутую точку зрения по этим проблемам он изложил в заметке [47] (текст его выступления на Международной конференции по надежности программного обеспечения, 1975 г.) В этой работе он предложил план подготовки системных программистов в вузах, которая сочетала бы фундаментальную подготовку, глубокое изучение профессиональных курсов и реальное участие в программистских проектах. В уже упоминавшейся статье [183]  рассматривается организация курса основ программирования как стержня образования системных программистов. Курс этот предполагает последовательность изложения содержательных - математических - языковых - технологических - системно-организационных основ программирования, что является наиболее продуманной организацией такого курса. Заметим, что все это было прямо основано на реальной деятельности Ершова - он был профессором Новосибирского университета, ставил и читал первые годы общий курс программирования на механико-математическом факультете этого университета, руководил организацией обучения специалистов по системному и теоретическому программированию на мехмате НГУ.

В дальнейшем Ершова привлекло обучение программированию и, более широко, информатике в школе. Поняв принципиальную важность обучения информатике для страны и человечества, Ершов отдал этому делу в последний десяток лет и большую долю своей энергии, и то, что называют жаром души. Ершов был одним из создателей так называемой школьной информатики, признанным лидером советской школьной информатики и одним из ведущих мировых специалистов в ней. В написанной вместе с Г.А. Звенигородским и Ю.А. Первиным работе "Школьная информатика. Концепции, состояние, перспективы" [193] он определил развитие этого направления вплоть до наших дней. Ершов был одним из авторов и редакторов первого школьного курса информатики, а также методического пособия к этому курсу. Незадолго до его смерти появился новый учебник по информатике [431, 432], одним из авторов и редактором которого он являлся. Он создавал телевизионный курс по этому предмету, руководил созданием школьных систем программирования и школьного программного обеспечения вообще, вел большую организационную и экспертную работу и т.п. Здесь, как и во многом другом, проявилась его активная жизненная позиция, высокое чувство гражданской и общечеловеческой ответственности. Преодолевая множество помех и затруднений, часто мелочных и изматывающих, ведя пропагандистскую, воспитательную, организаторскую работу, выступая в самых неожиданных, но требуемых обстоятельствами амплуа, Ершов посвятил становлению школьной информатики много своих сил и времени.

Необходимо отметить, что для работ Ершова по школьной информатике характерна серьезная научная обоснованность предлагаемых решений, их связь с глубоко понимаемой сущностью информатики. В работах [220, 330] Ершов обосновывает строение курса исходя из ряда принципов: разделения и сочетания "теоретического" и "операционного" умения, антропоцентрического подхода (отождествление учащимися себя с исполнителем алгоритмов), апелляции к повседневному опыту и т.д. Он подчеркивает важность отдельного осознания понятия алгоритма и существования системы обозначений для выражения алгоритмов (алгоритмического языка), дает схему алгоритмизации и решения задач, естественную для начального обучения. В одной из своих последних работ [455] Ершов дает обстоятельный анализ состояния дела в СССР с компьютеризацией школьного образования и преподаванием информатики в школе и, что важно, рассматривает проблемы школьной информатики в широком контексте информатизации общества и связывает их с проблемами математического образования. Незадолго до смерти им была подготовлена рукопись рабочего варианта концепции информатизации народного образования, которая была издана в 1990 г. [456]. Делом его последних лет, которому Ершов отдал много сил и внимания, было создание школьной энциклопедии по информатике.

Заметной линией работ Ершова являются работы, посвященные общению с ЭВМ на естественном языке. Начальным подходом к конструктивизации этих проблем была работа "Об одном виде контакта человека с машиной" [32]. Впервые в отечественной и, по-видимому, мировой литературе Ершов попытался сформулировать ряд точно поставленных задач реализации такого общения. Размышления по этому поводу, объединенные с исследованиями лингвистов (И.А. Мельчук) и системных программистов (А.С. Нариньяни), привели к появлению проекта РИТА, опубликованного в [132]. Проект РИТА в таком виде, как описывался, не был реализован, но можно четко проследить, как ряд существенных идей этого проекта перешел во впоследствии реализованные лингвистические процессоры и системы искусственного интеллекта: выделение промежуточного уровня семантического представления, соотношение лингвистических и программных составляющих диалоговой системы, наличие интерфейсных блоков для других (классических) программных систем, множественность значений интерпретирующих функций (что позже А.С. Нариньяни было обобщено в понятии недоопределенных множеств) и т.д.

В последующем Ершов проводит дальнейшую конструктивизацию проблем общения на естественном языке, выделяя из естественного языка очень важное подмножество языка деловой прозы. В работе [182] он дает общее определение деловой прозе как языковому носителю производственных отношений человека и отмечает, что она фактически выделяется в особую лингвистическую категорию. Ряд свойств деловой прозы - внутренняя формализованность, четкость функций сообщения - говорит об актуальности не только необходимости, но и возможности научить машину полностью (Ершов это подчеркивает) понимать и воспринимать этот язык. Далее Ершов рассматривает некоторые существенные черты глобальной модели полного восприятия языка применительно к деловой прозе.

Здесь в своих исследованиях и рассуждениях Ершов выходит за пределы собственно программирования и формулирует фундаментальную проблему создания машинного фонда русского языка. Отмечая связь этой проблемы с решением задачи общения с ЭВМ на естественном языке, он подчеркивает очень важную научную, общекультурную и прикладную значимость этой проблемы. К уточнению внешней постановки этой проблемы он возвращается в работах [320, 386] - после того, как эта задача была осмыслена и подхвачена лингвистами. Интересно отметить, что пионерство Ершова в постановке такой проблемы подчеркивается и чисто внешне тем, что цитаты из статьи [182] вынесены как элементы оформления на обложку сборника статей по этому вопросу.

Это - только один из примеров пионерских работ Ершова в новых областях программирования и, более широко, применения ЭВМ. Много таких примеров уже приводилось. Список их, однако, может быть продолжен.

Один из первых подходов к созданию интеллектуальных систем был представлен в работе [52], написанной совместно с Г.И. Марчуком (доклад на конгрессе IFIP 1965 г.). Становлению проблематики пакетов прикладных программ в отечественном программировании способствовала совместная с В.П. Ильиным работа [170] "Пакеты программ - технология решения прикладных задач". Важное значение для отечественных работ в таком новом направлении, как бюротика, имеет работа "Автоматизация работы служащих" [281].

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

Очень хорошим примером являются его колонки редактора в журнале "Микропроцессорные средства и системы"- достаточно перечислить лишь некоторые названия этих редакторских обращений: "Как учить программированию", "Об информационной модели машины", "Об объектно-ориентированном взаимодействии с ЭВМ", "Школьный компьютер - вызов промышленности", "Вызов программистам", "Обработка информации: от данных к знаниям", "Школьная информатика - второй звонок", "Академик А.И.Берг о кибернетике и перестройке в 1959 году", "Как перестроиться программистам", "Модем для ПЭВМ - недорогой и надежный", "Персональные ЭВМ: как сделать их полезными", "Союз информатики и вычислительной техники - на службу обществу". Сам Ершов придавал этому диалогу с читателем (а все эти обращения возбуждали активный отклик) большое значение, и не зря! Редакционная колонка, которую вел Ершов, придавала журналу неповторимое своеобразие доверительного разговора и приглашения к дискуссии.

Ершов был инициатором и идейным руководителем и ряда других проектов — таких,  как система программирования СЕТЛ для языка сверхвысокого уровня (языка спецификаций), профессиональная рабочая станция МРАМОР или школьная система программирования ШКОЛЬНИЦА. Хотя Ершов не был  разработчиком в таких проектах и не участвовал в публикациях по ним, эти проекты питались его идеями и обсуждениями с ним.

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

Творческое наследие академика А.П. Ершова, одного из выдающихся ученых в области информатики, внесло определяющий вклад в становление и современное состояние мирового программирования. Оно содержит как подходы и методы, прочно вошедшие в теорию, методологию и практику современного программирования и овеществленные в них, так и ряд идей и концепций, дающих основу для будущих исследований.

И.В. Поттосин

На главную in English Webmaster © ИСИ СО РАН, 2000-2014