Екатерина Ющенко: автор указателей и первая женщина-программист в СССР
Рассказываем об учёной, которая создала прообраз языка C, опередив Fortran и COBOL, но не получила признания в мире.
Иллюстрация: Unknown author / Wikimedia Commons / freepik / Freepik / Дима Руденок для Skillbox Media
Екатерина Логвиновна Ющенко родилась в 1919 году в казачьем городе Чигирине. В 1937 году, когда она училась на первом курсе физмата Киевского университета, её отец, школьный учитель истории и географии, был осуждён по ложному обвинению в национализме.
Это не могло не отразиться на судьбе дочери.
Изгнание из университета
Екатерину Логвиновну заклеймили как «дочь врага народа» и исключили из университета — как объясняли ей в ректорате, «по приказу свыше».
«Мне было 17 лет, и я свято верила словам Сталина — „сын за отца не отвечает“.
Придя к ректору, я спросила:
— Разве есть закон, позволяющий исключить меня из института?
— Есть! — ответил ректор. — Телефонограмма народного комиссара просвещения Затонского».
Екатерина Ющенко,
книга Б. Н. Малиновского «Очерки по истории компьютерной науки и техники в Украине».
Вскоре арестовали и мать Ющенко: её приговорили к десяти годам лагерей. Родителей реабилитировали лишь в 1954 году, посмертно.
После исключения несправедливо пострадавшая студентка пыталась поступить в МГУ — её даже приняли, но отказались выделить место в общежитии. На университетской доске объявлений она увидела листовку, которая дарила ей новую надежду. Недавно организованный в Самарканде Узбекский государственный университет обещал абитуриентам, успешно прошедшим экзамен, не только общежитие и стипендию, но даже оплату проезда. Ющенко поступила и переехала в Узбекистан.
От практики взрывов — к теории вероятностей
С началом войны Екатерину Логвиновну перевели в Ташкент, в Среднеазиатский государственный университет. Параллельно с учёбой она работала на заводе, производящем прицелы для танков.
В 1942 году Ющенко получила диплом математика, но война диктовала свои условия: вместо университетской кафедры молодая учёная добровольцем отправилась на Ангренский угольный комбинат в 150 километрах от столицы Узбекистана. Год проработала запальщиком-взрывником в шахте, потом ещё два года — учительницей физики и математики в ташкентской средней школе. И только после войны она смогла вернуться домой, в Украину, и заняться любимым делом — наукой.
В 1946 году во Львове открылся филиал Института математики АН УССР. Академик Борис Гнеденко предложил Екатерине Логвиновне работу на кафедре теории вероятностей.
В 1950-м Ющенко защитила кандидатскую диссертацию и вместе с Гнеденко переехала в Киев, в головной институт. В те годы он был на взлёте — в частности, именно его директор, академик Александр Юльевич Ишлинский, разрабатывал теорию гироскопов, так необходимую для создания советских космических спутников.
Всё это требовало сложнейших расчётов. Правительство закупило для Киева мощные по тем временам счётно-аналитические машины. Ющенко возглавила вычислительную лабораторию.
Создание Адресного языка
В распоряжении Екатерины Логвиновны были МЭСМ — разработанные в Украине первые ЭВМ на европейском континенте. Несмотря на всю свою научную революционность, машины имели значительные недостатки — ограниченную память, малую производительность и сбои в работе из-за большого числа электронных ламп.
Это заставляло программистов искать довольно специфические способы работы с внутренним языком ЭВМ. Каждая программа была уникальным квестом: требовалось придумать наиболее экономные варианты решения, используя особенности архитектуры.
Через некоторое время выяснилось: только с помощью машинных программ часть научных задач — естественно, самых сложных — вообще не решается. Возникла идея создать язык более высокого уровня, а также транслятора для него, чтобы упростить взаимодействие человека с компьютером. Этим и занялась Ющенко.
В то время были очень популярны идеи академика Ляпунова, который предложил для программирования операторный метод. Екатерина Логвиновна и её коллега Владимир Семёнович Королюк решили применить эти идеи.
Созданный ими язык совмещал два принципа — программное управление и адресность. Первый состоял в том, что компьютером управляли с помощью программ, которые человек писал на понятном для него языке, а затем с помощью транслятора переводил в машинные инструкции. Второй включал в себя прямую работу с компьютерной памятью — примерно как сейчас это сделано в языках C, С++ и Rust.
Учёные назвали свою разработку Адресным языком. Он имел понятную систему определений, описывающую архитектуру ЭВМ и её команды, и умел манипулировать адресами второго ранга.
Позже Екатерина Логвиновна вместе с Гнеденко и Королюком написали первый учебник по программированию — «Элементы программирования». Его издали в 1961 году в СССР, в 1964 году — в ГДР и Венгрии, а в 1969 году — во Франции.
Особенности Адресного языка
Адресный язык — алгоритмический. Принцип адресности, заявленный в его названии, подразумевает, что данные для решения задачи хранятся в одной из ячеек запоминающего устройства, которой присвоен собственный адрес.
В те годы это реализовывалось так. Сперва разработчик размещал данные в ячейках — это называлось начальным этапом программирования. После этого он писал программу, указывая уже не сами данные, а их адрес — то есть место в памяти ЭВМ.
Это позволяло более-менее универсализировать решение задач. Например, можно было составить алгоритм общего вида — последовательность расчётов для какого-либо процесса, аппарата или параметра (допустим, взлёта аэродинамического устройства, разогрева котла под давлением или перепада напряжения в электросети). И потом использовать этот алгоритм для решения огромного массива прикладных задач, просто подставляя в адресные ячейки нужные данные (размеры устройства, температура в котле, данные внешней среды, электросхема сети и так далее).
Ещё один важный аспект Адресного языка — принцип программного управления. Он означает, что порядок выполнения команд строго определён: ЭВМ последовательно считывает их сверху вниз.
Адресный язык позволял реализовать все основные числовые операции:
- арифметические: +, –, ×, ÷;
- функциональные: √, sin, ln и другие;
- логические: ∧, ∨, ¬;
- отношения: =, <, ≤;
- и другие.
Кроме того, существовали дополнительные операторы, созданные для управления программами (их называли формулами, или функциями):
- ‘ — команда, которая «достаёт» содержимое из адресной ячейки. По сути, она аналогична команде * в современном C++.
- ⇒ — операция переноса содержимого из одной ячейки в другую.
Работали они так. Если у нас есть адрес A, а по нему располагаются данные B, записывали это следующим образом:
‘A = B
Чтобы скопировать содержимое из адреса A по адресу C, нужно было написать так:
‘A ⇒ C
В итоге получались две отдельные, никак не связанные друг с другом ячейки с одинаковыми данными:
‘A = B
и
‘C = B
Чтобы решить простую программу сложения двух чисел из разных ячеек, нужно воспользоваться операциями +, ‘ и ⇒. Схематично это выглядело, например, так:
‘A + ‘C ⇒ A
То есть мы достали данные из адресов A и C, сложили их и положили полученное по адресу A.
Борьба Запада и Востока за указатели
Адресный язык стал важным достижением теоретического программирования. Он опередил такие языки, как Fortran (1958), COBOL (1959) и Algol (1960), а также вдохновил разработчиков на создание ассемблеров. Более того: некоторые конструкции Адресного языка стали частью архитектуры многих современных языков вроде уже упоминавшегося C и C++.
Строго говоря, первым, кто описал работу указателей, был советский математик Андрей Колмогоров. Он изложил теоретические основы этой идеи в своей научной работе «К определению алгоритма».
Однако премию IEEE за указатели получил не он и не Ющенко с Королюком, реализовавшие их на практике, а Гарольд Лоусон, автор PL/1. Почему так?
Главной причиной было то, что о работах советских учёных за пределами СССР почти никто не знал. Екатерина Логвиновна хоть и создала в Адресном языке подобие указателей, но не могла поделиться своим опытом с зарубежными коллегами: на дворе была самая активная фаза холодной войны, так что возможность обмениваться знаниями между учёными Запада и Востока была практически закрыта.
Награды для героини
Зато на Родине вклад Ющенко в отечественную кибернетику оценили по достоинству. За свою научную карьеру Екатерина Логвиновна подготовила 11 докторов и 45 кандидатов наук. Ей вручили две Государственные премии Украины и одну премию Совета Министров СССР, а за разработки в сфере компьютерной алгебры — академическую премию имени Глушкова. Кроме того, Ющенко наградили орденом Княгини Ольги за выдающиеся заслуги в науке.
Екатерина Логвиновна стала первой женщиной-учёным, которая получила степень доктора наук в области программирования. Она также написала более двухсот научных работ, монографий и учебных пособий, некоторые из которых перевели и издали в Германии, Франции, Чехии, Венгрии и Дании.
Но, несмотря на все её достижения, у Екатерины Ющенко была тяжёлая жизнь. Её отца и мать осудили по ложным обвинениям, она вечно скиталась из одного города в другой. И всё это наводило Екатерину Логвиновну на тоску о своём родном городе. Ему она даже посвятила стихотворение «Мой город».