Код
#статьи

Андрей Ершов: отец советской «информатики» и один из первых программистов в СССР

Он не стал физиком из-за советских запретов. Зато придумал новую науку и предопределил развитие информационных технологий на много лет вперёд.

Иллюстрация: P. Lameiro / Soviet Digital Electronics Museum / Autopilot / Wikimedia Commons / Дима Руденок для Skillbox Media

Ещё в детстве Андрей поставил перед собой невероятную цель — решить все задачи из школьных учебников по алгебре, геометрии и физике. И это у него получилось. Поступая в 1949 году на физтех МГУ, он мечтал изучать ядерную физику, исследовать законы Вселенной — но судьба распорядилась иначе.

Молодой Андрей Ершов
Фото: Библиотека сибирского краеведения

Из физиков — в айтишники

С поступлением в университет проблем не было: несмотря на сложность вступительных экзаменов, которые проходили в три тура, Ершов блестяще их сдал.

Но на первом курсе всплыл «нежелательный» пункт анкеты. Выяснилось, что будущий учёный провёл детство в Рубежном — во время войны этот город был оккупирован гитлеровской Германией. Поэтому путь в физику, считавшуюся наукой государственной важности и повышенной секретности, был закрыт.

Тогда Ершов перевёлся на кафедру программирования, которая только формировалась. Правда, студенты кафедры в основном занимались техобслуживанием вычислительных машин, а о программировании речи не шло.

И тут в судьбе Андрея Петровича случился ещё один поворот: на кафедру пришёл профессор Ляпунов с легендарным курсом «Принципы программирования».

Алексей Ляпунов
Фото: Wikimedia Commons

Курс был инновационным: до этого никто не знал, как устроены советские ЭВМ, — они были засекречены. К счастью, Ляпунову удалось съездить в Киев, протестировать первую европейскую ЭВМ — МЭСМ — и ухватить основные идеи и принципы её работы. Ляпунов заложил основы операторного метода, на базе которого позже были созданы символические языки программирования, трансляторы и теория схем.

Профессор быстро заметил выдающиеся способности студента Ершова, стал его наставником и вдохновил на дальнейшую работу.

До начала 1950-х годов в СССР не существовало профессии «программист»; Ершов был одним из первых дипломированных специалистов.

Параллельно с учёбой Андрей Петрович интенсивно осваивал английский — он понимал, что вскоре этот язык станет международным.

МЭСМ
Фото: Wikimedia Commons

С отличием окончив университет, а позже аспирантуру, Ершов стал старшим инженером лаборатории программирования, а несколько лет спустя — завотделом теоретического программирования в Вычислительном центре Академии наук СССР. Так началась его научная карьера.

Первые успехи

Ещё в аспирантуре Ершов начал работать над программирующей программой (ПП) для Большой электронной счётной машины (БЭСМ) и «Стрелы».

Это были громоздкие ламповые ЭВМ, требующие постоянной техподдержки. Даже по меркам 1950-х они были довольно слабыми: их вычислительных способностей не хватало для атомной промышленности, ракетостроения и оборонки.

Чтобы покрыть нехватку мощностей, учёные решили автоматизировать программирование. Руководителем проекта стал Ершов. Он предложил подходы и методы, которые позже стали классическими в теории компиляции:

  • объединить схему и спецификации операторов в ПП для БЭСМ в одном тексте, а также ввести оператор цикла;
  • применить табличный подход к синтаксическому анализу в ПП для «Стрелы-3»;
  • оптимизировать программирование арифметических выражений, использовать новый, более экономичный метод их расстановки.

Свои нововведения Ершов объединил в монографии «Программирующая программа для электронной вычислительной машины БЭСМ». Она стала одной из первых в мире книг по автоматизации программирования и оказала большое влияние на Дональда Кнута, ставшего спустя годы другом Андрея Петровича.

«Когда только появилась книга Андрея „Программирование для БЭСМ“, мы [студенты] убедили преподавателя русского языка включить её в курс в качестве одного из двух сборников текстов для изучения научной лексики».

Дональд Кнут,
учёный-информатик, автор монографий и статей

Первый тираж книги в 4000 экземпляров был распродан в Союзе буквально за месяц. Сам Ершов отреагировал так: «ПП в магазинах нет! Автору слышать приятно».

Триумф за границей

Путь к мировой известности оказался более тернистым: разработки советских программистов держали под секретом. При этом интерес к ним во всём мире был огромным, ведь успехи СССР в освоении космоса были у всех на слуху.

«На Западе возникли опасения, что СССР захватит первенство и в области вычислительной техники», — писала известная исследовательница советских и постсоветских информационных технологий, социолог Ксения Татарченко в своей монографии Cold War Origins of the International Federation.

С 1959 года Ершов стал учёным секретарём комиссии по международным связям ВЦ АН СССР. Это позволило общаться с зарубежными коллегами, обмениваться с ними опытом и знаниями. В частности, Ершов познакомился с профессором Технологического университета Карнеги Перлисом, который открыл ему Algol.

BEGIN
FILE F (KIND=REMOTE);
EBCDIC ARRAY E [0:11];
REPLACE E BY "HELLO WORLD!";
WHILE TRUE DO
    BEGIN
    WRITE (F, *, E);
    END;
END.
«Hello, World!» на языке Algol

Кроме того, советский учёный посетил симпозиум «Механизация процессов мышления» в Англии — первое международное собрание, посвящённое искусственному интеллекту.

Ершов стал одним из немногих «связных» между программистами СССР и остального мира. За это его ценили и там, и там — приглашали в качестве лектора на различные семинары, присылали западную литературу по программированию, которую невозможно было достать в СССР.

Альфа и Бета советского программирования

В 1957 году Ершову предложили возглавить отдел теории алгоритмов и программирования Института математики с вычислительным центром в новосибирском Академгородке. Там он и провёл оставшуюся жизнь.

Именно в Новосибирске учёный начал работу над языком программирования Альфа, чем-то похожим на Algol 60. Язык Альфа позволил реализовать многомерные значения и операции с ними, в том числе конструирование. На нём же разработали циклы и возможность задавать начальные значения выражениям.

Естественно, Альфа требовала транслятора, чтобы запускать программный код на ЭВМ М-20, которая с 1959 года стала основной вычислительной машиной в СССР. Процесс создания транслятора команда Ершова задокументировала в книгах «Рождение α-транслятора», «Детство α-транслятора» и «Отрочество α-транслятора». В них описана вся работа над проектом: технические проблемы, ход их решения и результаты. И всё для того, чтобы облегчить изучение Альфы другим разработчикам.

ЭВМ М-20
Фото: Институт систем информатики имени А. П. Ершова СО РАН

«Альфа-транслятор» стал первым в мире оптимизирующим транслятором с языков семейства Algol, в котором были реализованы прорывные по тем временам возможности: многопроходная система трансляции, алгоритмы оптимизации и другие методы экономии памяти.

Успех Альфа побудил Ершова к созданию улучшенной версии — Альфа-6. Она обладала более компактной схемой трансляции, а её внутренний язык стал основой для алгоритмов оптимизирующих преобразований.

Позже Андрей Петрович начал внедрять свои идеи в новом поколении алгоритмических языков высокого уровня. Так родилась концепция Бета.

В Бете были реализованы концепции из самых модных высокоуровневых языков того времени — Pascal, С, Ada, Modula-2.

Главной фичей Беты стала идея «внутреннего языка», понятного для разных языковых процессоров — трансляторов, анализаторов свойств, систем преобразования и так далее.

Формировался он примерно так же, как учатся понимать друг друга люди, говорящие на разных языках и случайно оказавшиеся вместе:

  • Сначала происходил поиск понятий и конструкций, общих для всех языков, и определялся единый семантический базис.
  • Затем этот базис оптимизировался, преобразовывался, и из него генерировался объектный код для различных ЭВМ.

Внутренний язык Беты оказался очень удобным для алгоритмов потокового анализа и оптимизирующих компиляторов, а машинно-ориентированный подход сделал систему гибкой при генерации кода для различных архитектур БЭСМ-6 и СМ ЭВМ.

СМ ЭВМ
Фото: Виртуальный компьютерный музей

От Лексикона — к АИСТу

Анализируя Альфу и Бету, Ершов задумался: почему бы не создать язык, который станет общей средой для разработки и обоснования программ? Так родилась идея единого лексикона программирования, или лингвистики систем.

«Лингвистическая система с фразовой структурой, содержащая в себе формальную нотацию для выражения всех общезначимых конструкций, употребляемых при формулировании условий задач, при синтезе и преобразовании программ…»

Андрей Петрович Ершов,
учёный-информатик

Лексикон должен был стать универсальной системой для людей и машин. При этом люди бы думали за пределами программного текста, оставляя предметную область задачи компьютеру.

«Программа, выраженная средствами лексикона, в определённом смысле содержит в своём тексте описание своей семантики в виде совокупности нетривиальных фактов о вычисляемой ею функции — в отличие от чистых программ, которые не говорят ничего о своих функциональных свойствах».

Андрей Петрович Ершов,
учёный-информатик

Главным отличием Лексикона от языков программирования должна была стать его открытость для других разработчиков. Ему не нужно было транслироваться в машинную программу, но при этом любую машинную программу можно было бы выразить в Лексиконе.

К сожалению, идея так и осталась идеей. Но Ершов задал направление для других учёных на десятки лет вперёд.

«Программисты — жрецы-посредники между машинами и человечеством».

Андрей Петрович Ершов,
учёный-информатик

Не менее значимым проектом учёного стали АИСТы — автоматические информационные станции. Это были распределительные системы, которые позволяли ЭВМ выполнять несколько процессов одновременно.

Ершов воплотил в АИСТах результаты исследований по архитектуре вычислительных комплексов, ПО и моделированию вычислительных систем. Он создал первую в стране развитую систему разделения времени — АИСТ-0 — и продемонстрировал её на комплексе, собранном из нескольких ЭВМ.

Также Андрей Петрович реализовал в АИСТе идеи, которые и сегодня применяются в распределительных системах:

  • разделение в процессорах комплекса управления и обработки данных;
  • иерархичность строения программного обеспечения;
  • выделение ядра операционной системы;
  • естественное сочетание различных режимов общения и обработки.

Правда, в дальнейшем разработки заморозили: системы зарубежных учёных признали более эффективными.

Преподавание и конференции

С 1970-х годов Андрей Петрович начал активно заниматься преподаванием. Вокруг него сложился неформальный коллектив научных сотрудников из академических институтов. Вместе они разработали вузовскую и школьную программы по информатике. Кстати, термин «информатика» придумал именно Ершов.

Ершов с учениками
Фото: Wikimedia Commons

Параллельно учёный выступал на советских и международных конференциях. В 1981 году на совместной конференции Международной федерации по обработке информации (IFIP) и ЮНЕСКО по применению ЭВМ в обучении Ершов выступил с докладом «Программирование — вторая грамотность». Это название быстро стало мемом и лозунгом на советских плакатах.

Вскоре в рамках эксперимента в Новосибирске начали преподавать программирование в вузах, а затем и информатику в школах. Учёные разработали компьютер «Агат», обучающую систему «Школьница» и язык Рапира.

В 1985 году Ершов с группой соавторов написал первый школьный учебник — «Основы информатики и вычислительной техники». Для записи алгоритмов в книге использовали алголоподобный Русский алгоритмический язык, который в шутку называют «Ершол».

Компьютер «Агат»
Фото: Wikimedia Commons

Ершов принял участие в шести конгрессах IFIP как докладчик и организатор. В 1987 году он стал председателем Научного совета АН СССР по проблеме кибернетики, активно участвовал в создании журнала «Микропроцессорные средства и системы».

За существенный вклад в теорию смешанных вычислений ему вручили Премию имени академика А. Н. Крылова.

Творчество как вторая жизнь

Ершов был не только учёным: он прекрасно играл на гитаре, пел, писал стихи и даже переводил на русский английских поэтов — например, Редьярда Киплинга.

Многие коллеги запомнили Ершова по метким и образным высказываниям. Например: «Сибирь спасает русскую литературу, как сибирские дивизии в сорок первом году — Москву».

Он хорошо чувствовал слово — это заметно даже по его научным работам. Тем более впечатляют стихи, которые подтверждают слова Фейхтвангера: человек талантливый талантлив во всех областях.

Неведенье

Иисус пронёс свой крест и к муке был готов,

«Распни его», — народ кричал, беснуясь.

Но он был Божий сын и знал: в конце концов

Господь его посадит одесную.

Я знанья добывал из потаённых мест,

Чтоб человек был жив не только хлебом.

Но сам не ведаю, неся свой тяжкий крест:

Распнут меня иль вознесут на небо?..


Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована