Автор: Пользователь скрыл имя, 19 Декабря 2011 в 19:30, статья
Андрей Петрович Ершов определил развитие советского и мирового программирования на десятки лет вперед: он проводил фундаментальные исследования в области вычислительной техники, схем программ, теории компиляции и др. Именно благодаря ему появилась так называемая логическая ЭВМ, не зависящая от конкретной реализации. Им созданы такие языки программирования, как АЛЬФА, АЛЬФА-6 и БЕТА, он активно участвовал в создании Алгола и его вариаций.
Концепция трансформационной машины является тем важным вкладом в трансформационный подход к построению программ, энтузиастом и пропагандистом которого был А.П.Ершов, и различные аспекты которого исследуются в ряде его работ 80-х гг. Трансформационный подход развивается сейчас в ряде коллективов у нас и за рубежом и представляется весьма перспективным, так как он дает возможность получать программы с хорошими показателями таких качеств, как надежность и эффективность, а также повышает степень переиспользования программного обеспечения. Работы Ершова по трансформационному подходу дают естественную точку роста для последующих исследований.
Следует
заметить, что наряду с работами
по языкам и методам трансляции работы
по смешанным вычислениям и
Заключают работы Ершова по теории программирования его публикации, посвященные понятию вычислимости. Сам он определяет эти работы как попытку синтеза взглядов на вычислимость, сложившихся как в математической логике, так и в теоретическом программировании. Так как понятие вычислимости является одним из главных как в той, так и в другой области и имеет фундаментальное значение для других программистских понятий, очевидно, что определение понятия вычислимости, абстрагированного от несущественных синтаксических или модельных понятий и вместе с тем вбирающего необходимые для теории и многочисленной практики сущности, является одной из главных задач, определяющих дальнейшее взаимовлияние математики и программирования. В фундаментальной работе «Проблемы программирования: Всесоюзная конференция в Новосибирске» (Вестник АН СССР, 1970, №6)проводится глубокий анализ большого числа определений вычислимости, сложившихся в указанных областях, их сопоставление и оценка вклада в общую теорию. На основании данного анализа Ершов нащупывает идею определения вычислимости: свести определение вычислимой функции к понятию детерминанта, т.е. того, что является инвариантным к различным способам задания вычислений. По-видимому, эти работы Ершова будут иметь такое же стимулирующее значение для исследований в данной области, как и его работы начала 70-х гг. для теории схем программ.
Проект АИСТ.Одной из важных заслуг Ершова перед отечественным и мировым программированием является то, что он умел оценить текущее состояние науки и практики и наметить те реальные точки роста и перспективы исследований, которые будут определять развитие программирования. Так, во второй половине 60-х гг. он одним из первых в стране осознал те новые возможности общения с ЭВМ, которые создают системы разделения времени. В 1966 г. он организует работы по автоматическим информационным станциям (проект АИСТ). Проект АИСТ, создателем и руководителем которого был А.П.Ершов, объединял широкий круг исследований по архитектуре вычислительных комплексов, их программному обеспечению и моделированию вычислительных систем. В рамках этого проекта была создана первая в стране развитая система разделения времени АИСТ-0, проект которой был предметом доклада на Конгрессе AFIPS 1967 г. («Входной язык системы автоматического программирования» предварительное сообщение — М.: ВЦ АН СССР, 1961), а итоговый доклад был сделан на 2-й Всесоюзной конференции по программированию в 1970 г. («Программирующая программа для машины» Третье Всесоюзное совещание по вычислительной математике и применению средств вычислительной техники, 1961). Реализованная на многомашинном комплексе из отечественных ЭВМ, эта система была во многом пионерской и внесла большой вклад в развитие отечественных работ по архитектуре ЭВМ и операционным системам, которые, к сожалению, были в дальнейшем заторможены ориентацией на копирование зарубежных разработок. Ряд таких свойств системы, как разделение в процессорах комплекса управления и обработки, иерархичность строения программного обеспечения, выделение ядра операционной системы, естественное сочетание различных режимов общения и обработки, обеспечили хорошую эффективность и гибкость системы.
Осмысливая опыт проекта АИСТ и других подобных работ у нас в стране и за рубежом в своем докладе на Конгрессе ИФИП-68, Ершов выдвигает несколько насущных тезисов: о специализации процессов в многопроцессорном комплексе для разделения времени, об универсальных и специализированных системах разделения времени и областях их применимости, о различии требований профессионалов и непрофессионалов в программировании к общению с системами разделения времени и о том аспекте систем, который впоследствии будет назван дружественностью к пользователю.
Опыт руководства такими большими проектами, как АЛЬФА и АИСТ, и работы в этих проектах дали Ершову осознание общих проблем программирования и создания программного обеспечения. В 1973 г. - появляется оказавшая большое влияние на развитие отечественных работ статья. В этой работе проводился глубокий и развернутый анализ как внешних свойств машин четвертого поколения, так и различных видов программных систем: операционных систем, систем программирования и их входных языков, специализированных систем обработки информации, в том числе пакетов прикладных программ (в работе дается классификация ППП, сохраняющая свою ценность и в наше время). Выделен ряд характерных систем обработки информации и определены их внешние и внутренние свойства. Очерчена общая модель операционной системы - так называемая базовая операционная система с концентрическим строением. Отмеченная в работе общность в реализации языков программирования, создании процессоров диалоговых языков и систем отображения хотя и не вылилась, как предполагал автор, в создание универсальных систем, но стимулировала работы по нахождению общей методологии создания таких систем (впрочем, некоторая ограниченная в своей универсальности многоязыковая транслирующая система на данной общности была построена - это система БЕТА, о которой говорилось выше).
Технологические проблемы.Существенным в этой работе было также то, что в ней поднимались технологические проблемы разработки программного обеспечения. Ершов был одним из первых в стране, кто поставил проблему создания технологии программирования. Надо сказать, что стремление Ершова провести аналогию между созданием программного обеспечения и промышленным производством, ввести дисциплину, организацию, инструментирование в такой казавшийся многим старым программистам нерегламентируемый творческий процесс, как программирование, встречало у многих наших коллег конца 60-х гг. активное сопротивление и даже резкий протест. То, что сейчас кажется тривиальным утверждением, Ершову приходилось отстаивать в жарких спорах и дискуссиях.
Ершов еще в 60-х гг. отстаивал точку зрения, что программирование, несмотря на интеллектуальность и творческий характер этого процесса, нуждается в организации и регламентации, наборе или системе соглашений и правил, не говоря уже об инструментальном обеспечении. Руководя и активно участвуя в больших программных проектах, Ершов с его пытливым умом не мог не задуматься над вопросом: "Как это делается?" Еще в работах по АЛЬФА и АИСТу он пишет о ряде организационных принципов и регламентирующих соглашений. Первой его работой, полностью посвященной технологии программирования, была статья («Об одном виде контакта человека с машиной»). Автоматизация мыслительных процессов» материалы научных семинаров по теоретическим и прикладным вопросам кибернетики, 1963.), она же была первой советской работой в этом возникшем в те годы новом направлении, и сам русский термин - технология программирования (software ingineering) - был предложен Ершовым. В соответствии с названием большая часть работы была посвящена собственно технологии трансляции. В ней рассматривались общие вопросы проектирования трансляторов: их структуры, системы технических процедур и пр., вопросы выбора методов реализации, вопросы организации отладки и документирования. Отдельно рассматривались проблемы автоматизации построения трансляторов и автоматизированного построения документации. Важной стороной работы было то, что проблемы технологии трансляции рассматривались в общем контексте технологии создания больших программных систем.
В ряде других работ Ершов исследует и развивает идеи технологии программирования. Им была предложена матричная организация коллектива разработчиков, внесен вклад в спецификацию этапов разработки, в том числе применительно к разработке трансляторов, проведен анализ реальной разработки (АЛЬФА-6) с точки зрения ее технологичности. В работе «Алгоритмические языки программирования» (Вестник АН СССР. —1968. — №3), написанной совместно с Г.Д.Чининым, определяется, как должен быть организован коллектив, ведущий разработку промышленных трансляторов, как должна решаться такая важная проблема, как преемственность и переиспользование разработанного программного обеспечения, как должен проходить и информационно обеспечиваться процесс разработки. Ориентированная на технологию трансляции, эта работа дает ряд хороших идей по технологиям промышленной разработки других видов программного обеспечения.
С общеметодологической точки зрения для развития технологий программирования, их обоснования и формирования концептуального фундамента крайне важной является работа, представляющая текст доклада Ершова на заседании Президиума Академии наук СССР. Для программистской общественности эта работа мне кажется не менее важной, чем для членов Президиума АН, которым сделан этот доклад.
Уже
давно ведутся попытки
Ершов выделяет и анализирует три вида программирования, обеспечивающих его доказательность: синтезирующее, сборочное и конкретизирующее. Синтезирующее программирование (одним из типов которого является то, которое осуществляется по методу Дейкстры) связано с автоматическим, автоматизируемым или ручным манипулированием знанием о задаче, области применения и общематематических способах доказательного рассуждения. Сборочное программирование осуществляет построение программы из уже существующих (проверенных на правильность) фрагментов. Конкретизирующее программирование основано на систематическом построении специализированных программ из универсальной заготовки (одним из способов такого программирования является применение смешанных вычислений). Ершов, с одной стороны, рассматривает специфику каждого вида и отмечает их различия, которые должны выражаться в различных технологических приемах и инструментах, с другой стороны, говорит о том, что при построении реального программного обеспечения эти виды могут и нередко должны комбинироваться. Все это дает основу для создания развитого методологического фундамента будущих технологий программирования.
Мини-
и микро- ЭВМ.Работа “An Experimental Automatic
Information Station AIST-O» (AFIPS Conf. Proc., AtlanticCity, April 18–
Программирование – вторая грамотность.Ершов выявил и прояснил ряд существенных черт, свойственных программированию как науке и человеческой деятельности. Замечания и суждения Ершова по этому поводу разбросаны во многих его работах, но есть несколько широко известных его статей, многократно переведенных и изданных, которые целиком посвящены не научным или техническим проблемам программирования, а вопросам, что есть программирование как наука и деятельность, что есть программист как специалист специфического интеллектуального труда. Это такие работы, как "О человеческом и эстетическом факторах в программировании", "Программирование - вторая грамотность", "Два облика программирования" и др. В работе, посвященной памяти рано умершего талантливого программиста Г.И.Кожухина, содержится конструктивный анализ противоречий, возникающих между творческой природой программистского труда и необходимой для любых массовых профессий производственной его организацией. Главный тезис статьи: "Программирование обладает богатой, глубокой и своеобразной эстетикой, которая лежит в основе внутреннего отношения программиста к своей профессии, являясь источником интеллектуальной силы, ярких переживаний и глубокого удовлетворения. Корни этой эстетики лежат в творческой природе программирования, его трудности и общественной значимости". Статья полна глубоких суждений и замечаний, поясняющих этот тезис. В статье отмечается элитарность программистов и в то же время говорится о необходимости сделать искусство программирования общим достоянием.
Ершов отмечает, что программирование необходимо современному человеку не только в силу того, что ЭВМ в ближайшем будущем пронижет все стороны жизни, но и потому, что современная жизнь требует повседневного планирования и предвидения. Он говорит: "Вторая грамотность - это не только умение писать команды, но и воспитание человека, решительного и предусмотрительного вместе". Программирование, заключает Ершов, является существенной компонентой современного обучения и воспитания.
Ершов четко формулирует интуитивно осознававшееся положение о том, что нельзя программирование рассматривать единообразно. Он разделяет программирование на два вида: программирование для себя и программирование для заказчика и точно описывает коренные различия этих видов, обликов программирования. Соответственно он вводит термины "программист-слуга" и "программист-хозяин" и показывает, как глубоко различаются их манеры, стили и даже критерии. Такая конструктивная дифференциация программирования крайне важна при создании реальных технологий программирования, да и для ряда более общих вещей, выражающихся даже в этике и эстетике программирования. В чисто научном плане эта работа содержит модель программной обстановки для программиста-хозяина, основанную на уже упоминавшейся трансформационной машине.