ersh.jpg (1897 bytes)

                            Ершов

        Андрей Петрович

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Назад в Известные программисты