Реферат: Андрей Петрович Ершов (1931-1988)
Академик Андрей Петрович Ершов (1931-1988) - один из зачинателей теоретического и системного программирования, создатель Сибирской школы информатики. Его существенный вклад в становление информатики как новой отрасли науки и нового феномена общественной жизни широко признан в нашей стране и за рубежом.
Он проводил фундаментальные исследования в области схем программ и теории компиляции. Книга А. П. Ершова "Программирующая программа для электронной вычислительной машины БЭСМ" была одной из первых в мире монографий по автоматизации программирования.
Работы Ершова по технологии программирования заложили основы этого научного направления в нашей стране.
Язык программирования АЛЬФА и оптимизирующий Альфа-транслятор, первая советская система разделения времени АИСТ-0, система учебной информатики Школьница, система подготовки печатных изданий Рубин, многопроцессорная рабочая станция МРАМОР - все эти проекты были инициированы А. П. Ершовым и выполнялись под его руководством.
Он одним первых в нашей стране осознал ключевую роль вычислительной техники в прогрессе науки и общества. Его блестящие идеи заложили основу для развития в России таких научных направлений, как параллельное программирование и искусственный интеллект. Более 20 лет тому назад он начал эксперименты по преподаванию программирования в средней школе, которые привели к введению курса информатики и вычислительной техники в средние школы страны и обогатили нас тезисом "программирование - вторая грамотность".
Ершов принимал активное участие в подготовке множества международных конференций и конгрессов, был редактором или членом редколлегии как русских журналов "Микропроцессорные средства и системы", "Кибернетика", "Программирование", так и международных - Acta Informatica, Information Processing Letters, Theoretical Computer Science.
Академик А.П.Ершов очень много внимания уделял проблемам информационного обеспечения ученых. Свою научную библиотеку он собирал всю жизнь. Ко времени безвременной кончины А.П.Ершова в его личной библиотеке хранилось более 30 тысяч книг, журналов, трудов конференций, препринтов и отдельных оттисков статей практически на всех европейских языках. После смерти академика А.П.Ершова его наследники передали библиотеку в Институт систем информатики, который к тому времени выделился из Вычислительного центра. Теперь это Мемориальная библиотека им. А.П.Ершова.
В 1988 году был создан благотворительный Фонд имени А.П.Ершова, основной целью которого являлось развитие информатики как изобретательства, творчества, искусства и образовательной активности.
Андрей Петрович Ершов был не только талантливым ученым, учителем и борцом за свои идеи, но и выдающейся, разносторонне одаренной личностью. Он писал стихи, переводил на русский язык стихи Р. Киплинга и других английских поэтов, прекрасно играл на гитаре и пел.
Путь в программирование
Андрей Петрович Ершов, выдающийся программист и математик, лидер советского программирования, родился 19 апреля 1931 г. в Москве. Умер после тяжелой болезни в Москве 8 декабря 1988 г.
Происходил он из семьи потомственных интеллигентов. Отец был инженером-химиком, мать - библиотекарем.
С 1943 г. родители А.П.Ершова живут в Сибири, в Кемерове, где в 1949 г. он закончил среднюю школу. В том же году он поступает на физико-технический факультет Московского университета, собираясь стать физиком. Однако из-за запретов учиться на физика ему не дали, а разрешили перевестись на механико-математический факультет того же университета. Там он стал специализироваться на кафедре вычислительной математики, руководимой академиком С.Л.Соболевым, а на последних курсах под влиянием А.А.Ляпунова увлекся программированием. Еще будучи студентом, в 1953г., он поступил на работу в Институт точной механики и вычислительной техники - организацию, в которой складывался один из первых советских коллективов программистов.
Таков был его, не совсем добровольный, путь к программированию. Выбор области деятельности, сделанный А.П.Ершовым, оказался счастливым как для него, так и для программирования. Действительно, А.П.Ершов был многообразно талантлив, он мог бы достигнуть больших результатов и в какой-либо другой области деятельности, в частности в физике, которая первоначально была им выбрана, поэтому нельзя сказать, что программирование - единственное направление, где он мог бы проводить свои исследования. Однако именно в такой зарождающейся науке, как программирование, удивительно к месту пришлись такие грани его таланта, как умение нетрадиционно мыслить, находить ясные основы интуитивно складывающегося знания, видеть перспективные точки роста. Другая, более определившаяся научная дисциплина, наверное, дала бы ему меньшие возможности приложения своего интеллектуального потенциала - и в этом было счастье его выбора. Но, с другой стороны, и программирование в то нуждалось в ученых с характером первооткрывателей - подобных А.П.Ершову - для формирования из разнородной практики начального научного и методического фундамента. Деятельность Ершова, о которой пойдет речь дальше, оказалась очень созвучной этим нуждам программирования, так что выбор, сделанный им, - удача для программирования.
Влияние на науку
В 1954 г. А.П.Ершов закончил университет - это был первый в советских вузах массовый выпуск по специальности "программирование". С 1954 по 1957 г. он аспирант А.А.Ляпунова в Московском университете. Кандидатскую диссертацию, посвященную понятию операторного алгорифма (существует много определений этого термина. Например, акад. А. Н. Колмогоров дает такое определение: алгоритм или алгорифм - это всякая система вычислений, выполняемых по строго определенным правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи. Тьюринг – английский программист-теоретик создал так называемую машину Тьюринга, с помощью которой можно реализовать любой алгоритм, а то, что нельзя на ней реализовать, алгоритмом не является. Машина Тьюринга – это лента, на которой записаны некоторые символы. По ней «бегает» каретка, которая читает текущий символ, и в соответствии с текущим символом и текущим состоянием может переходить к следующему или предыдущему символу, либо оставаться на месте и менять состояние, а также менять текущий символ на ленте.), он подготовил к 1958 г., однако в связи с настороженным отношением математиков к новой науке защитить ее ему удается только в 1962 г. Докторская диссертация по методам построения трансляторов защищается им в 1968 г. В 1970 г. он становится членом-корреспондентом, а в 1984 г. - академиком АН СССР.
Такое быстрое продвижение связано с тем, что уже в конце 50-х гг. он становится одним из ведущих советских программистов - не только благодаря своим блестящим индивидуальным работам, но и как руководитель плодотворно работающих программистских коллективов. В 1957 г. он становится заведующим отделом автоматизации программирования во вновь созданном Вычислительном центре АН СССР. В связи с созданием Сибирского отделения АН СССР по просьбе директора Института математики СО АН СССР академика C.Л.Соболева он берет на себя обязанность организатора и фактического руководителя отдела программирования этого института.
В 1960 г. он становится и формальным главой этого отдела и окончательно переезжает в Сибирь. Сибирское отделение привлекало молодых активных ученых большими возможностями организации новых масштабных исследований, и Ершов был одним из тех молодых ученых, которые в конце 50-х и начале 60-х гг. вместе с академиками-основателями создавали институты нового научного центра в Академгородке. В дальнейшем отдел Ершова стал одной из основ созданного в 1964 г. Г.И.Марчуком Вычислительного центра СО АН СССР. Благодаря Ершову Академгородок становится одним из ведущих центров по программированию. Ершов создал известную новосибирскую школу системного и теоретического программирования, исследования которой складывались из работ его учеников и последователей в различных новосибирских институтах. Сам Ершов, будучи только заведующим отделом и отделением Вычислительного центра, стал идейным руководителем и неформальным главой большого и активно работающего содружества новосибирских программистов.
Велико влияние Ершова и на развитие программистской науки и практики в стране в целом. Это влияние далеко не ограничивалось тем, что он был главой одной из ведущих советских научных школ, или тем научным вкладом, о котором речь пойдет ниже. С конца 60-х гг. он становится в центре программистской жизни в СССР. Он был одним из основных организаторов первых национальных конференций по программированию, большого числа национальных конференций, семинаров и школ по различным проблемам системного и теоретического программирования, членом редколлегий основных советских программистских журналов, редактором (с момента его образования) журнала "Микропроцессорные средства и системы", председателем ряда национальных комиссий и рабочих групп. В 1987 г. он становится председателем Совета по кибернетике, который координирует все отечественные академические исследования по информатике и программированию.
Ершов уделял много внимания научно-организационной работе, в том числе в мировом масштабе. Он был членом ряда комитетов и рабочих групп IFIP (International Federation on Information Processing), активным участником ряда конгрессов, в том числе вице-председателем программного комитета IFIP-68, приглашенным докладчиком IFIP-71, организатором рабочих конференций IFIP. В 1980 г. награжден "Серебряным сердечником" (Silver Core). Также состоял членом редколлегии таких международных изданий, как "Information Processing Letters", "Theoretical Computer Science" и др. Его международные творческие и дружеские связи были обширны. Он выступал с приглашенными докладами в большом числе организаций Европы, Японии и США. С 1965 г. он - член Association for Computing Machinery (АСМ), в 1974 г. стал почетным членом Британского Компьютерного общества. В последние годы жизни А.П.Ершов уделяет много внимания международной работе по информатике в образовании.
Теоретическое и системное программирование
А.П.Ершов - один из тех ведущих мировых ученых, благодаря деятельности которых выделились и оформились такие научные направления современного программирования, как теоретическое и системное программирование. Его творческое наследие обширно, оно включает более 200 книг, статей, препринтов, не считая большого числа предисловий, редакционных статей, отзывов и т.п., а также газетных публикаций, стихов (и хороших стихов!) и пр. Объем этой статьи не позволяет дать достаточно подробный обзор всех работ Ершова, и здесь мы ограничимся изложением основных идей и ведущих публикаций.
А.П.Ершов был одним из первых советских программистов, внесшим определяющий вклад в отечественное программирование, поэтому естественно, что становление и развитие его научных интересов в большей степени соответствует становлению и развитию как советского, так и мирового программирования.
Как и большинство программистов 50-х гг., А.П.Ершов начинал с создания алгоритмов численных методов и стандартных программ. Первая его работа («Об одном методе обращения матриц» - доклад АН СССР, 1955) была посвящена разработанному им методу обращения матриц, относящемуся к классу методов пополнения. Хорошая алгоритмичность метода - компактность алгоритма, удобные рекуррентные соотношения - позволила этому методу быть основой для стандартных программ для ряда первых советских ЭВМ (для одной из них - БЭСМ - такая программа была разработана Ершовым). Середина 50-х гг. была временем становления теоретического и системного программирования. Системное программирование начиналось с направления, названного тогда автоматизаций программирования и связанного с разработкой языков программирования и методов их трансляции. Начальный толчок этому направлению дали работы Рутисхаузера и Ляпунова. Первые советские языки программирования были связаны с операторными схемами, предложенными А.А.Ляпуновым. Эти схемы задавали структуру программы в терминах операторов некоторых фиксированных классов с последующим заданием представления этих операторов. А.П.Ершов был руководителем и создателем одних из первых советских программирующих программ для ЭВМ БЭСМ и "Стрела" (программирующими программами тогда назывались интегральные разработки языка и системы программирования). На основе данных работ им была написана монография («О понятии вычислительного алгорифма» - тезис доклада совещания по вычислительной математике и применению средств вычислительной техники, 1958), первая в мировой литературе монография по автоматизации программирования, практически немедленно переведенная и изданная за рубежом, а также ряд работ о вычислительной технике и реализации алгоритмов на ней в 1956-1958 гг. В монографии и этих работах А.П.Ершовым был впервые предложен ряд понятий, подходов и методов, вошедших в классический багаж языков и систем программирования. Здесь и понятие цикла как фундаментальной конструкции языков программирования, и триадное внутреннее представление выражений, и метод функции расстановки для поиска совпадающих фрагментов (имен), и алгоритм оптимального распределения рабочих ячеек (регистров), и начальные идеи потокового анализа, и пр.
АЛЬФА- и БЕТА- языки
Первым большим проектом, с которого начиналась новосибирская школа, был трансляторный проект "Альфа". В отличие от предыдущих проектов программирующих программ проект Альфа был хорошо, практически по-современному специфицирован: было подготовлено формальное описание входного языка, была создана развернутая функциональная спецификация системы.
Отправной точкой проекта была публикация начальной версии нового языка программирования, суммировавшего накопившийся программистский опыт и создаваемого международной рабочей группой - так называемого Алгола 58. Группа, руководимая А.П.Ершовым, стала готовить на основе Алгола 58 новый проект языка - параллельно с работавшей международной группой. Во многом направления развития языка оказались совпадающими, но в новосибирском проекте появился ряд существенно новых механизмов, поэтому, в конце концов, язык был сформулирован как правильное расширение окончательной версии международного языка - Алгола 60. В Альфа-языке впервые были разработана средства, характерные для последующих за Алголом 60 языков. Было определено столь важное для вычислительных алгоритмов понятие многомерных значений, определены операции над ними, в том числе, их конструирование. Были введены свойственные современным языкам концепции, такие, как разнообразие видов циклов, задание начальных значений и т.п. В формальном определении языка впервые была сделана попытка выйти за пределы контекстно-свободных грамматик.
Сама работа над транслятором была в большой мере и исследовательской, и пионерской. Именно в этой работе начались складываться принципы современной оптимизирующей трансляции. Дело в том, что сам Алгол 60 был определенным вызовом для существовавших методов трансляции. Его существенно рекурсивная структура, мощность механизма процедур, возможная их вложенность и потенциальная рекурсивность, общность циклов и индексных выражений - все это требовало заметной модификации и развития техники трансляции, а самое главное - ставило вопрос о возможности получения эффективного кода. По последнему поводу высказывалось ряд сомнений, и Альфа-транслятор стал действительно первым конструктивным доказательством того, что для языков, сопоставимых по мощности с Алголом, можно построить транслятор, дающий сравнимый с ручным программированием код.
Достижению поставленной цели послужил богатый набор оптимизаций, реализованный в Альфа-трансляторе. Была предложена смешанная стратегия программирования (то, что позднее на Западе было названо "casing") таких конструкций, как процедуры, циклы, индексные выражения, когда на основании анализа контекста выбирался наиболее эффективный из допустимых способов генерации конструкций. Особенно изощренно программировались процедуры и подстановка параметров для них: выбор осуществлялся среди 11 способов. В результате алголовские процедуры при всей мощности механизма программировались оптимальным образом (что стимулировало программистов активно использовать это средство). Существовавшая ранее оптимизация экономии выражений была существенно развита - полностью учитывались свойства коммутативности и ассоциативности; если это преобразование не стало глобальным, то оно уже было квазилокальным. Впервые была реализована глобальная чистка циклов. Тщательной оптимизации подвергались операции над многомерными значениями - то, что не было в стандартном Алголе, но активно использовалось вычислителями. Впервые была реализована глобальная экономия памяти, опирающаяся на теоретические работы А.П.Ершова и С.С.Лаврова.
Альфа-транслятор стал первым в мире транслятором с Алгола с большими оптимизирующими возможностями. Похожий английский проект Хоукинса и Хакстебла, который разрабатывался в это время, так и не был до конца завершен из-за сложности задачи. Конечно, успеху способствовало не только механическое соединение многих оптимизаций, но и существенное развитие существовавшей методологии оптимизации программ. Была выдвинута идея внутреннего языка, к программе на котором и применяются оптимизации, которая, хотя и не совсем в чистом виде, была реализована. Был реализован практически глобальный анализ контекста, хотя и разрозненно для различных оптимизаций, учет которого существенно увеличил мощность оптимизаций - зародыш современного потокового анализа. Стремление практически всегда получать эффективный код привело к отказу от некоторых средств Алгола, важнейшим из которых была рекурсивность процедур.
Альфа-транслятор активно использовался в большом числе организаций страны. Хотя его интерфейсы с пользователем и простота эксплуатации желали много лучшего, но высокая эффективность получаемого кода обеспечила хороший интерес пользователей к этой системе. Поэтому когда на смену М-20 пришла существенно более высокопроизводительная машина БЭСМ-6, организации, связанные с большими задачами, стимулировали создание версии Альфа-транслятора для БЭСМ-6. Самым быстрым решением была простая переделка Альфа-транслятора, при которой та его часть, которая отвечала за генерацию кода, была заменена генератором кода для БЭСМ-6. Возник транслятор Алгибр (“Альфа гибридный”), который был одним из первых отечественных кросс-трансляторов. Такое решение имело ряд недостатков, но зато оно было реализовано быстро, и транслятор Алгибр стал первым транслятором для новой машины БЭСМ-6. Решение существенно облегчалось тем, что в Альфе-трансляторе уже существовал внутренний язык, хотя и не до конца единый для всех оптимизирующих преобразований.
Основным затруднением при Алгибр-трансляции была передача оттранслированного кода с М-20 на БЭСМ-6. В ВЦ СО АН СССР был даже разработан специальный канал передачи информации между инструментальной и объектной ЭВМ, однако это не могло быть серийным решением при массовой трансляции. Возникла необходимость "родного" транслятора для БЭСМ-6.
У разработчиков Альфа-транслятора возникала и внутренняя потребность модифицировать и улучшить как схему трансляции, так и пользовательские свойства транслятора, в первую очередь, его интерфейс с пользователем. Альфа-транслятор, несмотря на его достаточно широкую используемость, носил черты эксперимента и поиска - хотя идейные решения были найдены верно, но реализационные решения были характерны скорее для экспериментального, чем производственного транслятора (большое число просмотров программы - 24, некоторое дублирование анализа контекста, не всегда оправданное усложнение оптимизирующих преобразований). Не нужно забывать, что этот транслятор был первым оптимизирующим транслятором с Алгола. Дополнительный опыт - транслятор Алгибр, незавершенный проект Альфа-транслятора для ЭВМ Урал-14 (проект ТАУ) - давал основу для новых решений.
--> ЧИТАТЬ ПОЛНОСТЬЮ <--