Фрэнсис Аллен: учительница математики, которая научила компьютеры работать быстрее

В 1950-х годах программирование только начинало оформляться как профессия. Компьютеры были огромными, дорогими и медленными, а программистам приходилось вручную расписывать каждую операцию — часто на уровне, близком к машинному коду. Но находились люди, которые задавались вопросом: а можно ли сделать так, чтобы компьютер сам оптимизировал свою работу? 

Одним из таких людей была Фрэнсис Аллен. Она начинала как учительница математики и вообще не планировала связывать жизнь с программированием, но смогла изменить представление всех о том, как должны работать компьютеры.

Фрэнсис Аллен на фоне компьютерного пульта с переключателями и лампами

Ферма, школа и математика

Фрэнсис Элизабет Аллен родилась 4 августа 1932 года и выросла на молочной ферме в Перу в штате Нью-Йорк, недалеко от озера Шамплейн. Она была старшим ребенком в семье фермера и школьной учительницы. Начальное образование она получила в школе с одной комнатой, расположенной в миле от дома, а затем посещала местную среднюю школу. В 1954 году она окончила Педагогический колледж штата Нью-Йорк (ныне часть Университета Олбани) со степенью бакалавра по математике и вернулась в родной город, чтобы преподавать в школе.

Ее вдохновляла мать, которая была учительницей начальных классов, и любимый учитель математики. Аллен проработала в школе два года, но для полной сертификации ей требовалась степень магистра. Она поступила в Мичиганский университет, где в 1957 году получила степень магистра по математике. Именно там она впервые столкнулась с программированием — один из первых курсов по этой дисциплине только начинал читаться. Однако обучение в магистратуре стоило дорого, и, чтобы оплатить его, Аллен взяла студенческие займы. К моменту выпуска она была должна значительную сумму, которую не могла быстро погасить с учительской зарплаты.

Именно эти долги и привели ее в IBM. В 1957 году компания как раз набирала программистов, и Аллен прошла собеседование прямо в кампусе Мичиганского университета. Она согласилась на работу, планируя остаться там лишь до тех пор, пока не расплатится с займами, а затем вернуться к преподаванию — профессии, которую, по ее собственным словам, знала и любила. 

«Одноразовая работа» длиною в 45 лет

В июле 1957 года, обремененная студенческими займами, Аллен пришла в исследовательское подразделение IBM в Покипси в штате Нью-Йорк на должность программиста. Она планировала остаться там ровно до тех пор, пока не расплатится с долгами, однако этим планам не суждено было сбыться.

Ее первым заданием стало обучение научных сотрудников IBM языку FORTRAN, который компания анонсировала всего за два-три месяца до ее прихода. Чтобы разобраться в том, как работает компилятор FORTRAN, Аллен прочитала его исходный код. Это положило начало ее пожизненному интересу к компиляторам. Фрэнсис называла эту работу «одноразовой», но она оказалась настолько увлекательной, что Аллен осталась в IBM на 45 лет, вплоть до выхода на пенсию в 2002 году.

Фрэнсис Аллен у панели управления вычислительной машины
Фото: commons.wikimedia.org

В IBM она прошла путь от программиста до одного из ведущих исследователей в области компиляторов. В 1989 году она стала первой женщиной, удостоенной звания IBM Fellow — высшего технического отличия компании, а в 1995 году — избрана президентом Академии технологий IBM. 

За свою карьеру Фрэнсис работала над компиляторами для суперкомпьютера IBM 7030 Stretch и для системы Harvest, созданной для взлома кодов в Агентстве национальной безопасности США.

Пионер оптимизирующих компиляторов

Главный вклад Аллен в компьютерную науку связан с оптимизирующими компиляторами — программами, которые переводят код, написанный человеком, в машинные инструкции и при этом делают его более эффективным. К слову, первый в мире компилятор за полтора десятилетия до этого создала другая женщина — Грейс Хоппер. Но если Хоппер решала задачу самого перевода, то Аллен пошла дальше: ее интересовало, как сделать переведенный код не просто рабочим, а быстрым и компактным. 

В начале 1960-х годов компиляторы создавали код, который был значительно медленнее и объемнее того, что могли написать программисты, работающие напрямую с машинными кодами. Аллен вместе с Джоном Коком и командой IBM создала оптимизирующий компилятор, который генерировал код, достойный возможностей железа. Ее статья 1966 года «Program Optimization» заложила концептуальную основу для систематического анализа и преобразования программ. 

В ней Аллен предложила использовать графовые структуры для кодирования содержимого программы — то есть представить код в виде схемы, где узлы — это отдельные операции или блоки команд, а связи между ними показывают, как управление переходит от одного шага к другому. Такая «карта» программы позволяла компилятору автоматически находить места, которые можно переписать более эффективно, не теряя логики.

В статье 1970 года «Control Flow Analysis» Аллен развила методы анализа потока управления программой, используя графовые структуры и отношения между блоками кода, включая доминирование. «Интервалы» позволяли разбивать сложную схему программы на вложенные области, а «доминирование» помогало определить, какие блоки кода всегда выполняются перед другими — без этого невозможно было понять, где находятся циклы и какие операции можно безопасно переставить или объединить. Это был важный шаг вперед по сравнению с более ранними абстракциями, которые не позволяли автоматизировать анализ на таком уровне.

А в 1971 году совместно с Коком Аллен опубликовала «A Catalog of Optimizing Transformations» — первый систематизированный каталог оптимизационных преобразований. В нем были описаны конкретные приемы, которые компилятор может применять к программе. Например, свертка констант — когда выражения вроде 2 + 3 вычисляются еще на этапе компиляции и заменяются готовым результатом 5, чтобы не тратить время на это во время работы программы. 

Джон Кок у стойки с электроникой
Джон Кок. Фото: en.wikipedia.org

Именно эти работы заложили теоретическую и практическую базу для современных оптимизирующих компиляторов. Аллен разработала и внедрила свои методы в компиляторах для IBM STRETCH-HARVEST и экспериментальной системы Advanced Computing System, доказав жизнеспособность и структуру современных машинно- и языково-независимых оптимизаторов.

Параллельное выполнение: PTRAN и граф зависимостей

В 1984 году Аллен основала и возглавила проект PTRAN (Parallel TRANslator) — исследовательскую группу, изучавшую, как автоматически распараллеливать последовательные программы на FORTRAN для выполнения на многопроцессорных системах. В то время параллельные вычисления только начинали развиваться, и вопрос о том, как автоматически находить в программах части, которые можно выполнять одновременно, был открыт.

Команда PTRAN разработала новые схемы обнаружения параллелизма и создала концепцию графа зависимостей программы (program dependence graph) — основного метода структурирования, который до сих пор используется большинством распараллеливающих компиляторов. Под руководством Аллен PTRAN стал одним из заметных исследовательских проектов IBM в области автоматического распараллеливания программ.

Вклад Аллен в автоматическое распараллеливание имел огромное значение для высокопроизводительных вычислений. Ее работа позволила программам использовать несколько процессоров одновременно для получения более быстрых результатов — это стало основой для решения таких задач, как прогнозирование погоды, сопоставление ДНК и функции национальной безопасности.

Первая женщина — лауреат премии Тьюринга и наставничество

В 2007 году Фрэнсис Аллен была удостоена премии Тьюринга — высшей награды в области компьютерных наук, которую часто называют «Нобелевской премией по информатике». Она стала первой женщиной, получившей эту награду с момента ее учреждения в 1966 году. 

Премия была вручена в феврале 2007 года и включала денежное вознаграждение в размере $100 000. Председатель комитета по присуждению премии Рузена Баичи отметила, что работа Аллен привела к замечательным достижениям в проектировании компиляторов и архитектуре машин, которые лежат в основе современных высокопроизводительных вычислений. Она также подчеркнула символичность того, что Аллен работала над секретными кодами для Агентства национальной безопасности, поскольку именно Алан Тьюринг, в честь которого названа премия, разрабатывал методы взлома немецких кодов во время Второй мировой войны.

Портрет Фрэнсис Аллен
Фото: engineering.nyu.edu

Помимо премии Тьюринга, Аллен была удостоена множества других наград, включая Computer Pioneer Award от IEEE Computer Society в 2004 году за «пионерскую работу, установившую теорию и практику оптимизации компиляторов». В 2000 году IBM учредила награду имени Фрэнсис Э. Аллен для женщин в технологиях, и она стала ее первой обладательницей. В 2004 году она также получила первую награду Anita Borg Award for Technical Leadership.

Фрэнсис Аллен запомнилась и как наставник и защитник женщин в компьютерных науках. Коллеги описывали ее как доброго и воодушевляющего руководителя. Она активно участвовала в работе организаций, продвигающих женщин в технологии, включая Институт Аниты Борг и Национальный центр женщин и информационных технологий. После выхода на пенсию в 2002 году она осталась в IBM в статусе Fellow Emerita и продолжала работать в профессиональных организациях, чтобы увеличить роль женщин в вычислениях.

Аллен скончалась 4 августа 2020 года, в свой 88-й день рождения, от осложнений болезни Альцгеймера. Ее наследие живет в каждом современном компиляторе, который оптимизирует код, и в каждом параллельном вычислении, которое ускоряет работу программ. В 2020 году IEEE учредил новую медаль имени Фрэнсис Э. Аллен, спонсируемую IBM, чтобы отметить ее вклад в развитие вычислений.

История Фрэнсис Аллен — это история о том, как случайная работа может стать делом жизни. Она пришла в IBM, чтобы расплатиться по долгам, а осталась на 45 лет, потому что нашла в компиляторах то, что захватило ее ум. Она не планировала становиться пионером, но ее работы по оптимизации и распараллеливанию стали фундаментом, на котором построены современные высокопроизводительные вычисления. И она стала первой женщиной, получившей высшую награду в своей области, — не потому, что стремилась к этому, а потому, что просто делала свою работу хорошо.

Читайте также:

Что будем искать? Например,ChatGPT

Мы в социальных сетях