АНДРЕЙ ПЕТРОВИЧ ЕРШОВ: ЖИЗНЬ И ТВОРЧЕСТВО
И.В.Поттосин
Андрей Петрович Ершов, выдающийся программист и математик, лидер советского программирования, родился 19 апреля 1931г. в Москве. Умер после тяжелой болезни в Москве 8 декабря 1988 г.
А.П. Ершов читает лекцию о смешанных вычислениях в Институте математики СО АН СССР. Новосибирск, 1981 г.
Происходил он из семьи потомственных интеллигентов. Отец был инженером-химиком, мать – библиотекарем. В его роду – типичном роду русской демократической интеллигенции – были военный врач, профессор-химик, академик – специалист по истории Византии, революционеры и партийные работники первых лет советской власти.
С 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 г. стал почетным членом Британского Компьютерного общества. В последние годы жизни А.П. Ершов уделяет много внимания международной работе по информатике в образовании.
Для большого числа советских проектов и работ А.П. Ершов выступал как признанный авторитет и вдумчивый эксперт – они проектировались и выполнялись под его влиянием. Будучи внимательным и заботливым учителем, он уделял много времени подготовке программистских кадров. Среди его учеников – большое число кандидатов наук и несколько докторов наук в различных городах России, ближнего и дальнего зарубежья.
Огромная научная, организационная и педагогическая деятельность Ершова была признана в стране. Он был награжден несколькими орденами Советского Союза. В 1983 г. ему за теоретические работы по смешанным вычислениям была присуждена премия имени академика Крылова – главная премия Академии Наук СССР за фундаментальные работы по прикладной математике. За все время существования этой премии А.П. Ершов был единственным программистом, ее получившим. В 1985 г. за работы по методике создания больших программных систем он был награжден премией Совета Министров СССР – известной в Советском Союзе премией, присуждаемой за работы, имеющие большое прикладное значение.
А.П. Ершов – один из тех ведущих мировых ученых, благодаря деятельности которых выделились и оформились такие научные направления современного программирования, как теоретическое и системное программирование. Его творческое наследие обширно, оно включает более 200 книг, статей, препринтов, не считая большого числа предисловий, редакционных статей, отзывов и т.п., а также газетных публикаций, стихов (и хороших стихов!) и пр. Объем этой статьи не позволяет дать достаточно подробный обзор всех результатов Ершова, и здесь мы ограничимся изложением основных идей и ведущих публикаций.
А.П. Ершов был одним из первых советских программистов, внесшим определяющий вклад в отечественное программирование, поэтому естественно, что становление и развитие его научных интересов в большой степени соответствует становлению и развитию как советского, так и мирового программирования.
Очень важно оценить роль Ершова как выдающегося ученого, чьи результаты и достижения способствовали становлению и развитию теории и практики программирования. Программирование велико и обширно и было бы трудно ожидать от любого человека, даже такого ранга, как Ершова, вклада во все его области. Ершов, хоть и занимался в начале своей деятельности прикладным программированием, но реально его роль в отечественном программировании, как уже говорилось, заключается в том, что он был одним из создателей складывающихся в 50-х годах системного и теоретического программирования.
Системное программирование начиналось с направления, названного тогда автоматизацией программирования и связанного с разработкой языков программирования и методов их трансляции. Начальный толчок этому направлению дали работы Рутисхаузера и Ляпунова. Именно с операторных схем Ляпунова начался период первых советских систем программирования – так называемых программирующих программ. А.П. Ершов был руководителем и создателем одних из первых советских программирующих программ для ЭВМ БЭСМ и «Стрела». На основе данных работ им была написана первая в мировой литературе монография по автоматизации программирования, практически немедленно переведенная и изданная за рубежом. В названной монографии и других работах А.П.Ершовым был впервые предложен ряд понятий, подходов и методов, вошедших в классический багаж языков и систем программирования.
Дальнейшие работы А.П. Ершова по языкам и методам трансляции были одними из тех, которые создали фундамент этого направления. Под руководством А.П. Ершова и по его идейному проекту были созданы такие известные оптимизирующие системы программирования, как АЛЬФА, АЛЬФА-6, БЕТА, которые во многом определили современную методологию оптимизирующей трансляции.
Разработка системы АЛЬФА началась с создания языка – это было характерно для традиций программирующих программ. Язык этот отталкивался от первоначальной версии Алгола 60 – так называемого Алгола 58. Группа, руководимая Ершовым, вела разработку параллельно с международной группой, разрабатывающей Алгол 60. Во многом работы указанных групп оказались совпадающими, и поэтому после опубликования описания Алгола 60 новый, созданный группой Ершова язык был сформулирован как расширение Алгола 60. Этот язык, носивший предварительные названия «Входной», «Сибирский», окончательно утвердился под названием Альфа-язык.
В Альфа-языке впервые введено понятие многомерных значений и определены операции над ними, в том числе операции конструирования. Все это вошло в стандартный багаж понятий современных языков. Впервые были введены и такие, естественные для современных языков концепции, как разнообразие циклов, задание начальных значений выражениями. В своих метасредствах язык впервые выходил за пределы контекстно-свободных грамматик.
Система АЛЬФА была первой в мировой практике оптимизирующей системой программирования для языков, более сложных, чем Фортран. Это важно отметить потому, что сама возможность существования трансляторов для языков, более сложных, чем Фортран, с приемлемой эффективностью объектных программ в то время многими оспаривалась. Система АЛЬФА стала конструктивным доказательством такой возможности, и это существенно, ибо снимало преграды на пути создания новых, семантически более богатых языков.
Работы по системе АЛЬФА внесли крупный вклад в методологию оптимизирующей трансляции. Была предложена и реализована многопроходная схема трансляции, ориентированная на оптимизацию, впервые введены в практику оптимизации программ оптимизирующие преобразования промежуточного представления программы, выделены и построены промежуточные представления программы, ориентированные на алгоритмы оптимизации.
Реализованные в системе АЛЬФА методы экономии памяти, разработанные Ершовым, представляют собой теоретический и практический фундамент последующих работ по экономии памяти. Ершовым были даны основы полной теории экономии памяти. Эти труды определили не только работы по экономии памяти, но и другие исследования по оптимизации программ, в частности дали хороший пример построения практичных теоретических моделей для оптимизации программ.
Дальнейшие работы Ершова по оптимизирующей трансляции привели к появлению широко известной системы АЛЬФА-6. Повторяя во многом систему АЛЬФА, система АЛЬФА-6 обладала более компактной схемой трансляции, концептуально более четко был выделен в схеме трансляции внутренний язык представления программы как основа для алгоритмов оптимизирующих преобразований.
В 1971 г. Ершовым были опубликованы статьи, которые положили начало работе по проекту БЕТА. Исследования по проекту БЕТА представляли собой многолетнюю (итоговая публикация появилась в 1982 г.) методологическую и экспериментальную работу, связанную с осознанием фундаментальных основ трансляции и языков программирования. Сам подход к совместной реализации широкого класса языков программирования требовал выявления сущностей, определяющих эти основы.
Работы по проекту БЕТА складывались из исследовательской и экспериментальной работ (они осуществлялись в 70-х гг.) и собственно работы по созданию многоязыковой транслирующей системы (она заняла первую половину 80-х).
Семидесятые годы характерны тем, что именно в это время складывалась современная методология трансляции, проходило освоение и внедрение в практику программирования нового поколения алгоритмических языков высокого уровня: от ПЛ/1 до Паскаля. Позднее появившиеся в практике программирования языки, такие как Си, Ада, Модула-2, как по языковым свойствам, так и по реализации во многом продолжали линию указанных выше языков.
Исследования по проекту БЕТА шли в русле этих общих исследований и во многом повлияли на них. Насущной была проблема выработки типовой, общей для широкого класса языков схемы трансляции. Именно такая схема была предложена и реализована в системе БЕТА. Важно заметить, что создаваемая на опыте языков 70-х гг., она оказалась практически пригодной и для языков 80-х: в системе БЕТА по общей схеме были реализованы как Симула-67 и Паскаль, так и Ада и Модула-2.
Одной из центральных концепций схемы трансляции в проекте БЕТА является концепция внутреннего языка. Исследования по внутреннему языку в проекте БЕТА составили заметную часть общемировых исследований, которые ввели понятие внутреннего языка, внутреннего представления программы как фундаментальное для методологии построения большого числа различных языковых процессоров – трансляторов, анализаторов свойств, систем преобразований программ и пр. В системе БЕТА внутренний язык выступает в трех качествах: как семантический базис входных языков, как основа для оптимизирующих преобразований на его уровне, как исходное представление для генерации объектного кода на различные ЭВМ. Окончательная версия внутреннего языка была создана на основе подхода, указанного Ершовым, как объединение абстракций общих понятий и конструкций входных языков с включением не полностью интерпретируемых конструкций, зависящих от конкретного входного языка. Анализ большого числа входных языков, выделение общностей и построение абстракций были важной и значительной работой, обогатившей понимание общей содержательной семантики существующих языков программирования.
Созданный на основе идей и подходов, предложенных Ершовым, внутренний язык системы БЕТА показал свою практическую пригодность для алгоритмов потокового анализа и оптимизирующих преобразований. Внесение в этот язык машинно-ориентированных свойств сделало практичным генерацию с этого языка на весьма различающиеся машинные архитектуры – такие как БЭСМ-6 и СМ ЭВМ.
В некотором смысле из анализа общих понятий языков программирования и осознания их определенной ограниченности выросла предложенная Ершовым фундаментальная и многообещающая идея лексикона программирования как общей среды для разработки и обоснования программ. Он определяет лексикон как «лингвистическую систему с фразовой структурой, содержащую в себе формальную нотацию для выражения всех общезначимых конструкций, употребляемых при формулировании условий задач, при синтезе и преобразовании программ».
Лексикон, говорит Ершов, «выражает не только и не столько программы, сколько их свойства и наши суждения о них. Язык программирования кодирует объекты предметной области задачи, а наше знание об этих объектах остается за пределами программного текста. Лексикон же является средством описания объектов предметных областей и содержит нотацию для построения баз знания о предметных областях. Программа, выраженная средствами лексикона, в определенном смысле содержит в своем тексте описание своей семантики в виде совокупности нетривиальных фактов о вычисляемой ею функции – в отличие от »чистых« программ, которые не говорят ничего о своих функциональных свойствах.
Лексикон, в отличие от конкретного языка программирования, является открытой системой. Для него в целом не ставится задача трансляции любого его текста в машинную программу, хотя любая машинная программа в случае необходимости может быть выражена в лексиконе. Аналогично естественному языку лексикон обладает способностью описания одной своей части средствами другой своей же части.
Не надо думать, что лексикон – это все и навсегда. Это тщательно отобранная, но развивающаяся система удачных обозначений. Степень его успеха определяется степенью общезначимости и общепонятности его нотации».
На наш взгляд, идея лексикона является одной из основных, оставленных нам Ершовым. Она может служить источником создания научных и методических основ программирования на десятки лет вперед.
Идейно к работам по автоматизации программирования примыкают и работы А.П. Ершова по теоретическому программированию. Первой его работой в этой области стала статья об операторных алгоритмах. В ней предлагалась модель программы, которая была одним из источников такой известной модели, как стандартные схемы. В последующих работах Ершовым были уточнены понятие операторного алгоритма и его отношение к реальным программам, заданным логическими схемами, и исследована его связь с такими известными понятиями алгоритма, как частично-рекурсивные функции и нормальные алгоритмы Маркова. В этих же работах ставились содержательные задачи определения на модели программ преобразований, оптимизирующих программу, и построения по реальной программе ее модели. Все эти работы Ершова были одним из основных источников современной теории схем программ.
Первой моделью программы в современной теории схем программ стали схемы Янова, предложенные Ю.И. Яновым в опубликованной в 1958 г. статье. В 1968 г. Ершов публикует статью, в которой придает результатам Янова ту форму, которая и является для схем Янова принятой в современной теории схем программ. Здесь он использует для схем Янова графовое представление, уже примененное в работах Ершова по операторным алгоритмам. Переизложение в новой форме аксиоматики схем Янова позволило ввести большую формализацию и сделать эту аксиоматику более ясной. Именно на эту аксиоматику опираются дальнейшие исследования схем Янова, так как упрощение аксиоматики позволило исследовать более глубокие свойства преобразований схем Янова.
В 1968 г. Ершов публикует статью об операторных схемах над общей и распределенной памятью. В этой статье вводится понятие информационного графа в том виде, в котором оно используется в теории схем программ и оптимизации программ сейчас, а также понятие схем над распределенной памятью. Оба понятия оказались важными как для самой теории, так и для ряда приложений, таких, как, например экономия памяти и распараллеливание программ.
Крайне интересной и методологически богатой была уже упомянутая монография «Введение в теоретическое программирование». В ней подведен итог исследованиям Ершова и его учеников по теории и практике экономии памяти и по схемам Янова. Непреходящая ценность этой работы заключается в том, что в ней прослеживается связь между теорией и практикой программирования, ясно показывается, как на основе практических нужд возникают теоретические модели и как затем исследования этих моделей дают нужные для практики результаты. Монографий подобного характера в мировой литературе по программированию, к сожалению, крайне мало, и книга Ершова здесь является неоценимым примером, полезным как для практиков, так и для теоретиков, стимулирующим их совместную работу. В этой книге сказался характер Ершова как ученого, всегда объединявшего в своей деятельности теорию, методологию и практику программирования.
Очень важное значение для развития теории схем программ имела статья Ершова и Ляпунова о формализации понятия программы. В ней сведены воедино и сопоставлены известные к тому времени в этой теории результаты. Существенно, что здесь были охвачены и работы по теории параллельных схем программ, начатые в Новосибирске под руководством Ершова. Теоретические результаты рассматривались и в их практическом приложении к автоматизации программирования и к оптимизации программ. Важной для дальнейшего исследования была постановка ряда новых задач, связанных как с развитием теории, так и с ее приложениями.
Подобное же значение на новом этапе имели работы Ершова о современном состоянии схем программ. Следует отметить два новых аспекта. Первый заключался в содержательном изложении требований к алгебре программирования как универсальному символизму, позволяющему манипулировать с процессами-алгоритмами. Второй был связан с демонстрацией взаимного влияния внутреннего языка и теоретических моделей программ. Работа “Theory of program scemata” – текст приглашенного доклада на Конгресс IFIP в Любляне – была затем переиздана как одна из лучших работ 1971 г.
Все работы 1967–1973 гг. оказали стимулирующее влияние на развитие теоретического программирования. В них был очерчен круг проблем теории схем программ, сопоставлены различные направления и модели этой теории, выработана общая система понятий и связаны воедино разнообразные результаты и их применения, иначе говоря, создан фундамент теории схем программ как цельного направления теоретического программирования.
Если теория схем программ имела дело с таким исследуемым и моделируемым объектом, как программа, то в дальнейшей деятельности по теории программирования Ершов делает следующий шаг, заключающийся в том, что предметом исследований становится процесс работы над программой. Начало этому новому направлению было положено Ершовым в статье «О сущности трансляции» (Программирование, 1977, № 5). В данной и последующих статьях он сформулировал понятие смешанного вычисления как фундаментальный принцип системного программирования, определяющий в тех или иных аспектах функционирование процессоров обработки программ.
Смешанное вычисление представляет собой некоторый универсальный процесс, определяемый над парами (программа, данные) и приводящий в общем случае к получению остаточной программы и частичных результатов. Математическим аналогом смешанного вычисления является функционал, который для определенного класса функций с несколькими аргументами строит (при задании некоторых аргументов) функции с меньшим числом аргументов.
Понятие смешанного вычисления (и смешанного вычислителя) в применении к процессорам обработки программ, для которых программы и их атрибуты есть данные, позволяет с общей точки зрения исследовать и определить различные виды обработки программ: от трансляции и интерпретации до анализа программ, их преобразования и генерации самих языковых процессоров. В ряде работ по смешанным вычислениям и трансформационному подходу Ершов методологически исследует эту концептуальную сторону смешанных вычислений.
Именно определение принципа смешанных вычислений как общей основы большого числа процессов работы над программами отличает работу Ершова от ряда предыдущих работ и догадок Ломбарди, Футамуры, Турчина и др. Это и стало причиной того, что работы Ершова легли в основу нового и активно развивающегося направления в программировании, связанного с теоретическими исследованиями и практическими приложениями смешанных вычислений. Применение смешанных вычислений оказалось весьма полезным методологически для понимания и трактовки различных понятий и сущностей программирования.
Для реальных приложений смешанных вычислений помимо, разумеется, необходимых свойств корректности и надежности важными оказываются их гибкость и глубина. И здесь Ершову и его ученикам удалось существенно продвинуться в исследованиях.
Таким образом, в области смешанных вычислений Ершову принадлежит не только определение основополагающих понятий и моделей, но и определяющий вклад в теорию и методологию этой области. Он по праву считается основателем и лидером этого направления, активно развиваемого сейчас в разных коллективах и странах.
Отталкиваясь от трансформационной модели смешанных вычислений и от своих работ в области трансляции и оптимизации программ, Ершов определяет концепцию трансформационной машины. Трансформационная машина есть абстрактное вычислительное устройство, выполняющее программы в некотором «сверхязыке», действиями которого являются трансформации пар (программа, данные).
Концепция трансформационной машины является тем важным вкладом в трансформационный подход к построению программ, энтузиастом и пропагандистом которого был А.П. Ершов и различные аспекты которого исследуются в ряде его работ 80-х гг. Трансформационный подход развивается сейчас в ряде коллективов у нас и за рубежом и представляется весьма перспективным, так как он дает возможность получать программы с хорошими показателями таких качеств, как надежность и эффективность, а также повышает степень переиспользования программного обеспечения. Работы Ершова по трансформационному подходу дают естественную точку роста для последующих исследований.
Следует заметить, что наряду с работами по языкам и методам трансляции работы по смешанным вычислениям и трансформационному подходу были источником уже упоминавшейся идеи Ершова о лексиконе программирования.
Заключают работы Ершова по теории программирования его публикации, посвященные понятию вычислимости. Сам он определяет эти работы как попытку синтеза взглядов на вычислимость, сложившихся как в математической логике, так и в теоретическом программировании. Так как понятие вычислимости является одним из главных как в той, так и в другой области и имеет фундаментальное значение для других программистских понятий, очевидно, что определение понятия вычислимости, абстрагированного от несущественных синтаксических или модельных понятий и вместе с тем вбирающего необходимые для теории и многочисленной практики сущности, является одной из главных задач, определяющих дальнейшее взаимовлияние математики и программирования. А.П. Ершовым проводится глубокий анализ большого числа определений вычислимости, сложившихся в указанных областях, их сопоставление и оценка вклада в общую теорию. На основании данного анализа Ершов нащупывает идею определения вычислимости: свести определение вычислимой функции к понятию детерминанта, т.е. того, что является инвариантным к различным способам задания вычислений. По-видимому, эти работы Ершова будут иметь такое же стимулирующее значение для исследований в данной области, как и его работы начала 70-х гг. для теории схем программ.
Одной из важных заслуг Ершова перед отечественным и мировым программированием является то, что он умел оценить текущее состояние науки и практики и наметить те реальные точки роста и перспективы исследований, которые будут определять развитие программирования. Так, во второй половине 60-х гг. он одним из первых в стране осознал те новые возможности общения с ЭВМ, которые создают системы разделения времени. В 1966 г. он организует работы по автоматическим информационным станциям (проект АИСТ). Проект АИСТ, создателем и руководителем которого был А.П. Ершов, объединял широкий круг исследований по архитектуре вычислительных комплексов, их программному обеспечению и моделированию вычислительных систем. В рамках этого проекта была создана первая в стране развитая система разделения времени АИСТ-0, проект которой был предметом доклада на Конгрессе AFIPS 1967 г., а итоговый доклад был сделан на 2-й Всесоюзной конференции по программированию в 1970 г. Реализованная на многомашинном комплексе из отечественных ЭВМ, эта система была во многом пионерской и внесла большой вклад в развитие отечественных работ по архитектуре ЭВМ и операционным системам, которые, к сожалению, были в дальнейшем заторможены ориентацией на копирование зарубежных разработок. Ряд таких свойств системы, как разделение в процессорах комплекса управления и обработки, иерархичность строения программного обеспечения, выделение ядра операционной системы, естественное сочетание различных режимов общения и обработки, обеспечили хорошую эффективность и гибкость системы.
Опыт руководства такими большими проектами, как АЛЬФА и АИСТ, и работы в этих проектах дали Ершову осознание общих проблем программирования и создания программного обеспечения. В 1973 г. появляется оказавшая большое влияние на развитие отечественных работ статья, в которой проводился глубокий и развернутый анализ как внешних свойств машин четвертого поколения, так и различных видов программных систем: операционных систем, систем программирования и их входных языков, специализированных систем обработки информации, в том числе пакетов прикладных программ (в работе дается классификация ППП, сохраняющая свою ценность и в наше время).
Существенным в этой работе было также то, что в ней поднимались технологические проблемы разработки программного обеспечения. Ершов был одним из первых в стране, кто поставил проблему создания технологии программирования. Надо сказать, что стремление Ершова провести аналогию между созданием программного обеспечения и промышленным производством, ввести дисциплину, организацию, инструментирование в такой казавшийся многим старым программистам нерегламентируемый творческий процесс, как программирование, встречало у многих наших коллег конца 60-х гг. активное сопротивление и даже резкий протест. То, что сейчас кажется тривиальным утверждением, Ершову приходилось отстаивать в жарких спорах и дискуссиях.
Ершов еще в 60-х гг. отстаивал точку зрения, что программирование, несмотря на интеллектуальность и творческий характер этого процесса, нуждается в организации и регламентации, наборе или системе соглашений и правил, не говоря уже об инструментальном обеспечении. Руководя и активно участвуя в больших программных проектах, Ершов с его пытливым умом не мог не задуматься над вопросом: «Как это делается?» Еще в работах по АЛЬФА и АИСТу он пишет о ряде организационных принципов и регламентирующих соглашений. Первой его работой, полностью посвященной технологии программирования, была статья « Технология разработки систем программирования» (Системное и теоретическое программирование, ВЦ СО АН СССР, Новосибирск, 1972), она же была первой советской работой в этом возникшем в те годы новом направлении, и сам русский термин – технология программирования для английского software e ngineering – был предложен Ершовым. В соответствии с названием большая часть работы была посвящена собственно технологии трансляции. Важной стороной работы было то, что проблемы технологии трансляции рассматривались в общем контексте технологии создания больших программных систем. Был приведен почти исчерпывающий обзор существовавших к тому времени работ по технологии программирования и примыкающим проблемам с их развернутым анализом. Все это сделало работу фундаментальной для последующих отечественных исследований в данном направлении.
С общеметодологической точки зрения для развития технологий программирования, их обоснования и формирования концептуального фундамента крайне важной является работа «Научные основы доказательного программирования» (Вестник АН СССР, 1984, № 10), представляющая текст доклада Ершова на заседании Президиума Академии наук СССР. Для программистской общественности эта работа кажется не менее важной, чем для членов Президиума АН, которым сделан этот доклад.
Уже давно ведутся попытки построить процесс программирования как доказательный, при котором правильность программы обеспечиваема или проверяема на каждом этапе ее построения. Для реальных технологий программирования с их несомненным требованием обеспечения надежности (высокой степени правильности) программы эти попытки при их удачном продвижении имели бы неоценимое значение.
Ершов выделяет и анализирует три вида программирования, обеспечивающих его доказательность: синтезирующее, сборочное и конкретизирующее. Ершов, с одной стороны, рассматривает специфику каждого вида и отмечает их различия, которые должны выражаться в различных технологических приемах и инструментах, с другой стороны, говорит о том, что при построении реального программного обеспечения эти виды могут и нередко должны комбинироваться. Все это дает основу для создания развитого методологического фундамента будущих технологий программирования.
Работа по доказательному программированию помимо ее значимости для технологии программирования примыкает к работам Ершова по общим проблемам программирования. Ряд таких работ Ершова в течение 70–80-х гг. четко анализировали и оценивали текущую ситуацию у нас и в мире, ясно формулировали проблемы и возможные пути их решения.
Многое говорят сами названия статей: «Вычислительные центры коллективного пользования», «Система программирования для мини – и микроЭВМ», «Некоторые субъективные замечания к актуальным проблемам программирования», «Комплексное развитие системного программного обеспечения – постановка проблемы», «Персональная ЭВМ – предок млекопитающих в динозавровом мире ВЦКП», «Опыт интегрального подхода к актуальной проблематике программного обеспечения». Обращенные к профессионалам, но доступные и непрофессионалам, написанные ясным языком, обладающие продуманной, хорошо организованной структурой и четким изложением идей и суждений, эти работы оказывали большое влияние на читателей программистов, служили делу осмысления текущей ситуации, переоценки ценностей, становлению новых идей и направлений.
Если ряд этих работ, существенно повлияв на развитие программирования до настоящего времени, сыграл свою роль, то среди них есть работы, которые продолжают оставаться актуальными. Стержневой и объединяющей идеей в них является необходимость создания развитой инфосферы будущего информатизированного общества. В работах оценивается состав и спецификация оборудования, нужные СССР для создания такой инфосферы, определяются черты различных систем ПО для нее, намечается большой спектр научных проблем, от решения которых зависит ее создание. Очень важно, что Ершов заметил существенный и новый тогда феномен – появление персональных компьютеров – и сумел правильно предугадать его роль в создании такой инфосферы. Неожиданным для многих и прекрасно оправдавшимся затем стал сформулированный Ершовым тезис, что персональный компьютер – «это не просто маленькая большая машина, а технический феномен, требующий свежего, непредвзятого и в то же время глобального подхода к созданию методов и приемов работы с ним».
Становление новой научной дисциплины невозможно без осознания ее специфики в ряду других научных дисциплин. Тем более это важно для программирования, которое за сравнительно короткое время стало одной из самых массовых интеллектуальных профессий. Громадной заслугой Ершова перед отечественным и мировым программированием является то, что в своих работах он выявил и прояснил ряд существенных черт, свойственных программированию как науке и человеческой деятельности.
Замечания и суждения Ершова по этому поводу разбросаны во многих его работах, но есть несколько широко известных его статей, многократно переведенных и изданных, которые целиком посвящены не научным или техническим проблемам программирования, а чисто, если можно так выразиться, профессиологическим аспектам – что есть программирование как наука и деятельность, что есть программист как специалист специфического интеллектуального труда. Это такие работы, как «О человеческом и эстетическом факторах в программировании», «Программирование – вторая грамотность», «Два облика программирования». В первой работе, посвященной памяти рано умершего талантливого программиста Г.И. Кожухина, содержится конструктивный анализ противоречий, возникающих между творческой природой программистского труда и необходимой для любых массовых профессий производственной его организацией. Главный тезис статьи: «Программирование обладает богатой, глубокой и своеобразной эстетикой, которая лежит в основе внутреннего отношения программиста к своей профессии, являясь источником интеллектуальной силы, ярких переживаний и глубокого удовлетворения. Корни этой эстетики лежат в творческой природе программирования, его трудности и общественной значимости». Статья полна глубоких суждений и замечаний, поясняющих этот тезис. В статье отмечается элитарность программистов и в то же время говорится о необходимости сделать искусство программирования общим достоянием.
Продолжает и развивает эту идею вторая статья. Само название ее, ставшее популярной метафорой, употребляемой везде, в том числе и с довольно высоких трибун, без ссылки на автора, подчеркивает историческую аналогию между грамотностью, ставшей в цивилизованном обществе достоянием каждого, и умением программировать (в широком смысле), которое должно быть присуще каждому члену информатизированного общества. Ершов отмечает, что программирование необходимо современному человеку не только в силу того, что ЭВМ в ближайшем будущем пронижет все стороны жизни, но и потому, что современная жизнь требует повседневного планирования и предвидения.. Он говорит: «Вторая грамотность – это не только умение писать команды, но и воспитание человека, решительного и предусмотрительного вместе». Программирование, заключает Ершов, является существенной компонентой современного обучения и воспитания.
В третьей работе Ершов четко формулирует интуитивно осознававшееся положение о том, что нельзя программирование рассматривать единообразно. Он разделяет программирование на два вида: программирование для себя и программирование для заказчика и точно описывает коренные различия этих видов, обликов программирования. Соответственно он вводит термины «программист-слуга» и «программист-хозяин» и показывает, как глубоко различаются их манеры, стили и даже критерии. Такая конструктивная дифференциация программирования крайне важна при создании реальных технологий программирования, да и для ряда более общих вещей, выражающихся даже в этике и эстетике программирования. В чисто научном плане эта работа содержит модель программной обстановки для программиста-хозяина, основанную на уже упоминавшейся трансформационной машине.
Написанные с присущим Ершову литературным талантом, несущие на себе хорошо видный отпечаток интеллектуальной силы, внутренней убежденности, активной позиции автора, эти статьи становились ярким событием программистской жизни. Хочется отметить тот аспект этих статей, который заключается в их влиянии на программистскую этику; проблемы же этики, с учетом того общественного и государственного значения, которое имеют сейчас продукты программистской деятельности и тем более которое они будут иметь в будущем, кажутся очень важными.
Заметной линией работ Ершова являются работы, посвященные общению с ЭВМ на естественном языке. Начальным подходом к конструктивизации этих проблем была работа «Об одном виде контакта человека с машиной». Впервые в отечественной и, по-видимому, мировой литературе Ершов попытался сформулировать ряд точно поставленных задач реализации такого общения. В последующем Ершов проводит дальнейшую конструктивизацию проблем общения на естественном языке, выделяя из естественного языка очень важное подмножество языка деловой прозы. Он дает общее определение деловой прозе как языковому носителю производственных отношений человека и отмечает, что она фактически выделяется в особую лингвистическую категорию. Ряд свойств деловой прозы – внутренняя формализованность, четкость функций сообщения – говорит об актуальности не только необходимости, но и возможности научить машину полностью (Ершов это подчеркивает) понимать и воспринимать этот язык. Далее Ершов рассматривает некоторые существенные черты глобальной модели полного восприятия языка применительно к деловой прозе.
Здесь в своих исследованиях и рассуждениях Ершов выходит за пределы собственно программирования и формулирует фундаментальную проблему создания машинного фонда русского языка. Отмечая связь этой проблемы с решением задачи общения с ЭВМ на естественном языке, он подчеркивает очень важную научную, общекультурную и прикладную значимость этой проблемы. К уточнению внешней постановки этой проблемы он возвращается в ряде работ – после того, как эта задача была осмыслена и подхвачена лингвистами. Интересно отметить, что пионерство Ершова в постановке такой проблемы подчеркивается и чисто внешне тем, что цитаты из его статьи вынесены как элементы оформления на обложку сборника статей по этому вопросу.
Это – только один из примеров пионерских работ Ершова в новых областях программирования и, более широко, применения ЭВМ. Много таких примеров уже приводилось. Список их, однако, может быть продолжен.
Один из первых подходов к созданию интеллектуальных систем был представлен в работе, написанной совместно с Г. И. Марчуком (доклад на конгрессе IFIP 1965 г.). Становлению проблематики пакетов прикладных программ в отечественном программировании способствовала совместная с В.П. Ильиным работа «Пакеты программ – технология решения прикладных задач». Важное значение для отечественных работ в таком новом направлении, как бюротика, имеют работы 1984 г.
Публикации Ершова в профессиональных изданиях, которым посвящен этот обзор, далеко не исчерпывают его творческого наследия. Статьи в газетах и журналах, обращенные к широкому кругу читателей, редакционные предисловия к многочисленным монографиям и сборникам работ по программированию и информатике – все это написано с литературным блеском, четкостью формулировок, великолепной манерой изложения – полны ценных идей, суждений, оценок, интересных и профессионалам, и тем, чья область деятельности только соприкасается с информатикой, и тем, кто достаточно далек от нее.
Очень хорошим примером, заслуживающим отдельного разговора, являются его колонки редактора в журнале «Микропроцессорные средства и системы» – достаточно перечислить лишь некоторые названия этих редакторских обращений: «Как учить программированию», «Об информационной модели машины», «Об объектно-ориентированном взаимодействии с ЭВМ», «Школьный компьютер – вызов промышленности», «Вызов программистам», «Обработка информации: от данных к знаниям», «Школьная информатика – второй звонок», «Академик А.И.Берг о кибернетике и перестройке в 1959 году», «Как перестроиться программистам», «Модем для ПЭВМ – недорогой и надежный», «Персональные ЭВМ: как сделать их полезными», «Союз информатики и вычислительной техники – на службу обществу». Сам Ершов придавал этому диалогу с читателем (а все эти обращения возбуждали активный отклик) большое значение, и не зря! Редакционная колонка, которую вел Ершов, придавала журналу неповторимое своеобразие доверительного разговора и приглашения к дискуссии, которое, к сожалению, со смертью Ершова было, этим изданием утрачено.
Научные направления деятельности Ершова многообразны. В принципе это свойственно многим программистам 50-х и начала 60-х гг. – можно привести немало примеров советских и зарубежных программистов, которые имеют хорошие результаты в трех – четырех различающихся научных направлениях. Такой характер деятельности естествен для ученых, стоящих у истоков новой научной дисциплины (и, к сожалению, мало доступен тем, кто вступает в уже сложившуюся, с большим спектром оформившихся направлений науку). Но даже и на фоне первых программистов Ершов выделяется поистине «ломоносовской» широтой своих интересов и результатов.
Не менее важной, чем научная деятельность А.П. Ершова, является его деятельность по воспитанию программистских кадров. В значительной мере эта деятельность была связана с Новосибирским университетом. Сам дух Новосибирского университета – привлечение к преподаванию ведущих научных школ, большая свобода в определении программ обучения, расчет на инициативу, самостоятельность и талант студентов – способствовал большому успеху этой деятельности. Благодаря Ершову и руководимому им коллективу Новосибирский университет стал одной из ведущих российских кузниц программистских кадров. Научные дети, внуки и правнуки Ершова работают во многих городах России и большом числе стран мира – от Соединенных Штатов Америки и до Южно-Африканской Республики и Китая.
Собственно преподавательскую работу он начал в 1958 г. – сначала в Московском, затем в Новосибирском университете, в котором он был профессором. В Новосибирском университете он был организатором и бессменным руководителем коллектива, ведущего подготовку студентов и аспирантов по системному и теоретическому программированию. Именно он начинал чтение курсов по программированию и теоретическому программированию на механико-математическом факультете НГУ. Последующие лекторы отталкивались от его методических и научных разработок. Первый у нас в стране курс по теоретическому программированию, читавшийся А.П. Ершовым, послужил основой известной уже упоминавшейся его монографии «Введение в теоретическое программирование. Беседы о методе» (Москва, Наука, 1977 г.) – английский перевод « Origin of programming . Discourses on methodology» (New - York , Springer - Verlag , 1990 г.).
Коллектив преподавателей и научных руководителей сначала существовал как отделение программирования кафедры теоретической кибернетики, руководимой его учителем А.А. Ляпуновым, а после смерти Ляпунова он стал таким же отделением кафедры вычислительной математики, руководимой тогда Г.И. Марчуком.
Впоследствии на базе этого коллектива возникли созданные учениками Ершова кафедры вычислительных систем и программирования механико-математического факультета НГУ.
Как это вообще характерно для Новосибирского университета, обучение студентов происходило, так сказать, «в бою», с активным участием в важных научных проектах. Хорошим примером было создание уже упоминавшейся системы АЛЬФА-6. Возникла задача создания высокооптимизирующей системы программирования для самой тогда мощной отечественной ЭВМ БЭСМ-6. Отталкиваться было от чего – существовала широко распространенная и хорошо себя зарекомендовавшая система АЛЬФА. По инициативе Ершова был отобран коллектив из лучших студентов, специализирующихся на кафедре, и мы обратились к ним с призывом – "Давайте, ребята, сделаем большое и нужное стране дело».. Энтузиазм, энергия и талант студентов принесли свои плоды – и к моменту защиты дипломных работ прототип системы был создан. Начатая как чисто студенческий проект система стала одной из основных систем программирования для БЭСМ-6.
Так было и со многими другими упоминавшимися и не упоминавшимися выше системами – не менее половины программного обеспечения системы АИСТ-0 было создано студентами мехмата, известный проект отечественной рабочей станции Кронос был начат как проект студентов мехмата и физфака НГУ и т.п.
Но влияние Ершова на образование не сводилось только к прямой педагогической деятельности – он многое сделал и в становлении самой методики обучения информатике.
В ряде уже упоминавшихся работ Ершов уделял внимание проблемам обучения программированию. Впервые свою развернутую точку зрения по этим проблемам он изложил в выступлении на Международной конференции по надежности программного обеспечения, 1975 г. В этой работе он предложил план подготовки системных программистов в вузах, которая сочетала бы фундаментальную подготовку, глубокое изучение профессиональных курсов и реальное участие в программистских проектах. В уже упоминавшейся статье «Некоторые субъективные замечания к актуальным вопросам программирования» рассматривается организация курса основ программирования как стержня образования системных программистов. Курс этот предполагает последовательность изложения содержательных – математических – языковых – технологических – системно-организационных основ программирования, что является наиболее продуманной организацией такого курса. Заметим, что все это было прямо основано на реальной деятельности Ершова как профессора Новосибирского университета.
В дальнейшем Ершова привлекло обучение программированию и, более широко, информатике в школе. Поняв принципиальную важность обучения информатике для страны и человечества, Ершов отдал этому делу в последний десяток лет и большую долю своей энергии, и то, что называют жаром души. Ершов был одним из создателей так называемой школьной информатики, признанным лидером советской школьной информатики и одним из ведущих мировых специалистов в ней. Ершов был одним из авторов и редакторов первого школьного курса информатики, а также методического пособия к этому курсу. Незадолго до его смерти появился новый учебник по информатике, одним из авторов и редактором которого он являлся. Он создавал телевизионный курс по этому предмету, руководил созданием школьных систем программирования и школьного программного обеспечения вообще, вел большую организационную и экспертную работу и т.п. Здесь, как и во многом другом, проявилась его активная жизненная позиция, высокое чувство гражданской и общечеловеческой ответственности. Преодолевая множество помех и затруднений, часто мелочных и изматывающих, ведя пропагандистскую, воспитательную, организаторскую работу, выступая в самых неожиданных, но требуемых обстоятельствами амплуа, Ершов посвятил становлению школьной информатики много своих сил и времени.
Необходимо отметить, что для работ Ершова по школьной информатике характерна серьезная научная обоснованность предлагаемых решений, их связь с глубоко понимаемой сущностью информатики. Ершов обосновывает строение курса исходя из ряда принципов: разделения и сочетания «теоретического» и «операционного» умения, антропоцентрического подхода (отождествление учащимися себя с исполнителем алгоритмов), апелляции к повседневному опыту и т.д. Он подчеркивает важность отдельного осознания понятия алгоритма и существования системы обозначений для выражения алгоритмов (алгоритмического языка), дает схему алгоритмизации и решения задач, естественную для начального обучения. В последней, опубликованной при его жизни работе Ершов дает обстоятельный анализ состояния дела в СССР с компьютеризацией школьного образования и преподаванием информатики в школе и, что важно, рассматривает проблемы школьной информатики в широком контексте информатизации общества и связывает их с проблемами математического образования. Незадолго до смерти им была подготовлена рукопись рабочего варианта концепции информатизации народного образования, которая была издана в 1990 г. Делом его последних лет, которому Ершов отдал много сил и внимания, было создание школьной энциклопедии по информатике.
Благодаря этой деятельности Ершова Новосибирский университет стал одним из первых отечественных центров школьной информатики. Уже более 20 лет действует ежегодная летняя школа юных программистов, организуемая Новосибирским Университетом и Сибирским отделением РАН, возникла и функционирует организованная Высшим колледжем информатики НГУ программа «Молодые информатики Сибири», влияющая на школьное образование в регионе.
Многое как в создании научного коллектива, так и в воспитании кадров определяли черты личности Ершова – его внутренний демократизм, глубокое и доброжелательное внимание к работе молодежи, его умение увидеть существенное.
Он был глубоко демократичен – не демократичностью панибратства, а демократичностью доброжелательства и внимательности. Он был постоянно окружен людьми, отвечал на вопросы, давал свои оценки, спорил. Он умел и любил спорить, умел вызывать на спор. В отличие от некоторых, он никогда не относился к спору и дискуссии как к средству самовыражения, средству «донести до народу свою единственно правильную позицию», не слушая, да и не желая слушать другие мнения и доводы. Для него дискуссия была инструментом нахождения истины, и в процессе спора он всегда стремился извлечь из высказываний ту долю истины, которая отражает реальный и специфический опыт каждого дискутанта. Он понимал и учил понимать других, что для нашей нарождающейся научной дисциплины крайне важно извлекать зерна истины из разнообразного опыта новичков, профессионалов и непрофессионалов.
Обстановка спора ему нравилась, она, как правило, возбуждала его энергию. Он успевал четко оценить позицию говорящего, извлечь то, что представлялось в тех или иных аспектах правильным, найти новые доводы и аргументы. Он, что не часто, думал и работал во время спора.
Его авторитет, а он обладал громадным авторитетом среди программистов, никогда не подавлял собеседников: это был авторитет знания и интеллекта, а не авторитет должности и власти. Андрей Петрович не занимал высоких руководящих должностей, да и не стремился их занимать, для него было важно то влияние, которое он оказывал на программистскую жизнь не по должности, а по идеям, мнениям, точке зрения.
Он умел слушать и понимать людей. Любой, от начинающего программиста, студента или аспиранта (даже «чужого») до зрелого специалиста, мог рассчитывать на его доброжелательное отношение, чуткое внимание и искреннее желание разобраться в проблемах собеседника. Он обладал не очень частым и таким нужным свойством радоваться чужим удачным результатам. Узнав и разобравшись в таком результате, он с удовольствием рассказывал о нем, охотно его пропагандировал, поддерживал автора и помогал ему. Это создавало вокруг него атмосферу общего сотрудничества и своеобразного программистского братства. Это же привлекало к нему молодежь, да и не только молодежь. Есть много людей в стране, и за рубежом, которые обязаны ему ценным советом или важной поддержкой.
В большей мере, чем любой из близких мне людей, коллег-программистов, Андрей Петрович не замыкался в профессиональных проблемах, а обладал умением видеть за научными и техническими задачами нужды общества. Он был истинным гражданином своей страны, болел ее болями и чувствовал свою ответственность перед ней и вместе с тем (и это явно проявлялось в нем) он осознавал свою принадлежность к большому человечеству. Он гордился отечественной наукой, но и понимал, что она есть струя в мировом потоке. Неоднократно подчеркивал он ту общечеловеческую значимость, которую имеет решение наших программистских проблем. Эта значимость стимулировала его деятельность, и ощущение этой значимости, а значит, и ответственности перед обществом он передавал своим коллегам, ученикам и последователям.
Андрей Петрович был человеком широких интересов – его интересовала и биология, и физика, и философия. Как и многие хорошие русские математики и информатики, он высоко ценил и хорошо знал литературу и искусство. Помню его меткое и образное высказывание – «Сибирь спасает русскую литературу, как Сибирские дивизии в 41-м году – Москву» (речь шла о Шукшине, Астафьеве, Вампилове, Распутине). Он и сам писал стихи – это неожиданно прорвалось у него уже к концу жизни. Он всегда хорошо чувствовал слово, это видно и по его научным работам, это уже отмечалось выше – но вот, уже будучи 50-летним, он попробовал выразить себя и в этой, новой для него стихии. Начинал он с переводов полюбившихся ему стихов английских и немецких поэтов, а потом перешел и на оригинальные стихи. Стихи изданы, их каждый может прочесть, приведем только одно стихотворение, отражающее естественные для каждого думающего человека сомнения:
Неведенье
Иисус пронес свой крест и к муке и к муке был готов,
«Распни его», – народ кричал, беснуясь.
Но он был Божий сын и знал: в конце концов
Господь его посадит одесную.
Я знанья добывал из потаенных мест,
Чтоб человек был жив не только хлебом.
Но сам не ведаю, неся свой тяжкий крест:
Распнут меня иль вознесут не небо?…
Профессор Новосибирского университета, действительный член Академии Наук СССР, Андрей Петрович Ершов был замечательным ученым, крупным педагогом, яркой человеческой личностью. Он был одним из тех выдающихся людей, кто создавал славу и известность нашего Университета и Новосибирского Академгородка.
Статья помещена в музей 14.04.2006 года