Мини- и микро- ЭВМ
Работа “An Experimental Automatic Information Station AIST-O» (AFIPS Conf. Proc., Atlantic City, April 18–20, 1967. — Washington; London: Acad. Press., 1966) оценивает с точки зрения применения средств вычислительной техники новый тогда феномен - появление мини - и микроЭВМ, прогнозирует те неограниченные возможности, которые они создают, выделяет те новые черты, которые характерны для программного обеспечения микроЭВМ: интегральность подхода к совместному проектированию оборудования и софтвера, специализированность программного обеспечения (ПО), его ориентация на использование непрофессионалами в программировании. Здесь же делается оправдавшийся впоследствии вывод о крайней важности для ПО этих ЭВМ проблем переноса и совместимости, а также намечаются возможные пути решения этих проблем. В одной из своих работ он справедливо отрицает выдвигавшийся некоторыми специалистами тезис о стабилизации положения в программировании и излагают активные точки роста - новые концепции в языках программирования, кристаллизация и фундаментализация понятий трансляции, переход от баз данных к базам знаний (в работе они называются "сложными" базами данных), появление инструментальных комплексов (что впоследствии с легкой руки "адистов" стало называться "окружением программирования"). Надо сказать, что прогноз Ершова полностью оправдался. Здесь же оценивается состояние теории программирования и ее соотношения с практикой, что весьма существенно для определения путей развития теории. Много в работе говорится об обучении программированию, о подготовке кадров - но об этой ее стороне скажем позднее.
Программирование – вторая грамотность
Ершов выявил и прояснил ряд существенных черт, свойственных программированию как науке и человеческой деятельности. Замечания и суждения Ершова по этому поводу разбросаны во многих его работах, но есть несколько широко известных его статей, многократно переведенных и изданных, которые целиком посвящены не научным или техническим проблемам программирования, а вопросам, что есть программирование как наука и деятельность, что есть программист как специалист специфического интеллектуального труда. Это такие работы, как "О человеческом и эстетическом факторах в программировании", "Программирование - вторая грамотность", "Два облика программирования" и др. В работе, посвященной памяти рано умершего талантливого программиста Г.И.Кожухина, содержится конструктивный анализ противоречий, возникающих между творческой природой программистского труда и необходимой для любых массовых профессий производственной его организацией. Главный тезис статьи: "Программирование обладает богатой, глубокой и своеобразной эстетикой, которая лежит в основе внутреннего отношения программиста к своей профессии, являясь источником интеллектуальной силы, ярких переживаний и глубокого удовлетворения. Корни этой эстетики лежат в творческой природе программирования, его трудности и общественной значимости". Статья полна глубоких суждений и замечаний, поясняющих этот тезис. В статье отмечается элитарность программистов и в то же время говорится о необходимости сделать искусство программирования общим достоянием.
Ершов отмечает, что программирование необходимо современному человеку не только в силу того, что ЭВМ в ближайшем будущем пронижет все стороны жизни, но и потому, что современная жизнь требует повседневного планирования и предвидения. Он говорит: "Вторая грамотность - это не только умение писать команды, но и воспитание человека, решительного и предусмотрительного вместе". Программирование, заключает Ершов, является существенной компонентой современного обучения и воспитания.
Ершов четко формулирует интуитивно осознававшееся положение о том, что нельзя программирование рассматривать единообразно. Он разделяет программирование на два вида: программирование для себя и программирование для заказчика и точно описывает коренные различия этих видов, обликов программирования. Соответственно он вводит термины "программист-слуга" и "программист-хозяин" и показывает, как глубоко различаются их манеры, стили и даже критерии. Такая конструктивная дифференциация программирования крайне важна при создании реальных технологий программирования, да и для ряда более общих вещей, выражающихся даже в этике и эстетике программирования. В чисто научном плане эта работа содержит модель программной обстановки для программиста-хозяина, основанную на уже упоминавшейся трансформационной машине.
Заметной линией работ Ершова являются работы, посвященные общению с ЭВМ на естественном языке. Начальным подходом к конструктивизации этих проблем была работа "Об одном виде контакта человека с машиной". Впервые в отечественной и, по-видимому, мировой литературе Ершов попытался сформулировать ряд точно поставленных задач реализации такого общения. Размышления по этому поводу, объединенные с исследованиями лингвистов (И.А.Мельчук) и системных программистов (А. С. Нариньяни), привели к появлению проекта РИТА. Проект РИТА в таком виде, как описывался, не был реализован, но можно четко проследить, как ряд существенных идей этого проекта перешел во впоследствии реализованные лингвистические процессоры и системы искусственного интеллекта: выделение промежуточного уровня семантического представления, соотношение лингвистических и программных составляющих диалоговой системы, наличие интерфейсных блоков для других (классических) программных систем, множественность значений интерпретирующих функций (что позже было обобщено А.С.Нариньяни в понятии недоопределенных множеств) и т.д.
В последующем Ершов проводит дальнейшую конструктивизацию проблем общения на естественном языке, выделяя из естественного языка очень важное подмножество языка деловой прозы. Также А.П.Ершов дает общее определение деловой прозе как языковому носителю производственных отношений человека и отмечает, что она фактически выделяется в особую лингвистическую категорию. Ряд свойств деловой прозы - внутренняя формализованность, четкость функций сообщения - говорит об актуальности не только необходимости, но и возможности научить машину полностью (Ершов это подчеркивает) понимать и воспринимать этот язык. Далее Ершов рассматривает некоторые существенные черты глобальной модели полного восприятия языка применительно к деловой прозе.
Здесь в своих исследованиях и рассуждениях Ершов выходит за пределы собственно программирования и формулирует фундаментальную проблему создания машинного фонда русского языка. Отмечая связь этой проблемы с решением задачи общения с ЭВМ на естественном языке, он подчеркивает очень важную научную, общекультурную и прикладную значимость этой проблемы.
Другие проекты
Ершов был инициатором и идейным руководителем и ряда других проектов, не упомянутых выше. Приведем в качестве примера такие проекты, как система программирования СЕТЛ для языка сверхвысокого уровня (языка спецификаций), профессиональная рабочая станция МРАМОР или школьная система программирования ШКОЛЬНИЦА. Хотя Ершов не был разработчиком в таких проектах и не участвовал в публикациях по ним, эти проекты питались его идеями и обсуждениями с ним.
Научные направления деятельности Ершова многообразны. В принципе это свойственно многим программистам 50-х и начала 60-х гг. - можно привести немало примеров советских и зарубежных программистов, которые имеют хорошие результаты в трех - четырех различающихся научных направлениях. Такой характер деятельности естествен для ученых, стоящих у истоков новой научной дисциплины (и, к сожалению, мало доступен тем, кто вступает в уже сложившуюся, с большим спектром оформившихся направлений науку). Но даже и на фоне первых программистов Ершов выделяется поистине "ломоносовской" широтой своих интересов и результатов.
Вывод
Андрей Петрович Ершов определил развитие советского и мирового программирования на десятки лет вперед: он проводил фундаментальные исследования в области вычислительной техники, схем программ, теории компиляции и др. Именно благодаря ему появилась так называемая логическая ЭВМ, не зависящая от конкретной реализации. Это был принципиально новый шаг: раннее каждая программа писалась только для одной конкретной машины и сильно зависела от конкретных физических схем и не могла применяться на других ЭВМ, что сильно затрудняло распространение программирования.
Возможно, идея лексикона является одной из основных, оставленных нам Ершовым. Она может служить источником создания научных и методических основ программирования на десятки лет вперед. Многомерные значения – массивы и списки, содержащие сходные данные, были также придуманы и впервые реализованы научной группой Ершова. Им созданы такие языки программирования, как АЛЬФА, АЛЬФА-6 и БЕТА, он активно участвовал в создании Алгола и его вариаций. Нельзя не заметить, что наиболее распространенный учебный язык программирования – Паскаль и наиболее популярный язык среди профессионалов – Си и его модификации являются алголоподобными, т.е. за основу взяты принципы, используемые в Алголе.