В месяц истории женщин мы рассказываем о том, как новаторские идеи женщин продвинули развитие программирования и компьютерных технологий.
Задолго до того, как разработчики программного обеспечения уселись за клавиатуры в модных, просторных офисах техкомпаний, именно женщины закладывали основы современного программирования — в далёких от гламура условиях.
На заре своей истории программирование считалось однообразной и скучной работой. Как показывают многочисленные исследования, большую часть этой работы выполняли женщины, отмечают в Музее истории американских женщин Смитсоновского института.
По мере того как завершается Месяц истории женщин, мы вспоминаем новаторские достижения, которыми женщины навсегда изменили информатику — от написания первой компьютерной программы до создания «тканого» софта, доставившего американских астронавтов на Луну.
Первая компьютерная программа
Когда британская математик Ада Лавлейс переводила статью математика Луиджи Менабреа об Аналитической машине, которую принято считать первым компьютером, она поймала себя на том, что не столько переводит, сколько исправляет его заметки — и фактически пишет первую в истории компьютерную программу.
Ада Лавлейс, дочь поэта лорда Байрона, с детства проявляла способности к математике. Её таланты привели её к тесному профессиональному сотрудничеству с математиком и изобретателем Чарльзом Бэббиджем, прежде всего над его Аналитической машиной.
Переводя статью Менабреа в 1843 году, Лавлейс снабдила её обширными примечаниями — именно они стали её решающим вкладом в развитие вычислительной техники. В этих заметках она первой предположила, что машина может оперировать не только числами и выдавать математический результат, но и работать с символами.
Аналитическая машина «могла бы действовать и с иными объектами, помимо чисел, если бы нашлись такие объекты, основные взаимосвязи между которыми можно выразить средствами абстрактной науки об операциях и которые можно было бы приспособить к действию обозначений и механизмов машины», — писала она в одном из своих примечаний переводчика (источник на английском языке).
Лавлейс также предположила, что числа могут обозначать не только количества, и показала, насколько роль машины выходит за рамки простых вычислений. В своих заметках она описала, как можно перевести «звуки» и «музыкальную композицию» в операции, которые машина затем сможет использовать, чтобы «сочинять сложные и научно выверенные музыкальные произведения любой сложности и протяжённости».
Расчёты и комментарии математика почти втрое увеличили объём исходной статьи и по сути стали первым набором инструкций для вычислительных машин. Заметки Лавлейс позже пригодились британскому математику и логику Алану Тьюрингу во время его работы по взлому шифров во Второй мировой войне.
Компилятор и язык общения с машинами
Много лет программы для компьютеров приходилось кропотливо записывать в виде длинных последовательностей чисел, чтобы машины могли их «понять».
А затем, в 1952 году, специалист по вычислительной технике и бывшая офицер ВМС США Грейс Хоппер создала компилятор — программу, которая переводит код с языка высокого уровня, на котором он написан (сегодня к ним относятся, например, Java и Python), на низкоуровневые языки, понятные компьютеру (вроде двоичного кода).
Этот компилятор, получивший название A-0, переводил символическую математическую запись в машинный код и сыграл ключевую роль в создании современных языков программирования.
Компилятор Хоппер стал результатом многолетних усилий по упрощению программирования.
Во время работы над Mark I — первой крупномасштабной автоматической вычислительной машиной — во Вторую мировую войну Хоппер заметила, что одни и те же вычисления постоянно повторяются в рамках одной задачи, и создала небольшой архив часто используемых фрагментов кода.
Так родилась современная концепция подпрограмм — небольших участков кода внутри большого приложения, которые выполняют задачи, требующие многократного повторения в основной программе. Подпрограммы экономят время: код уже написан и протестирован.
Созданный Хоппер уже после войны компилятор A-0 позволял пользователям задавать структуру программы на упрощённом языке. Хоппер постоянно пополняла свой архив подпрограмм, записывая их на ленту и присваивая каждой номер вызова. Когда пользователь описывал нужную ему программу, компилятор автоматически находил на ленте необходимые подпрограммы и выстраивал их в нужном порядке.
Позже Хоппер участвовала в создании одного из первых языков программирования высокого уровня на основе английского языка — COBOL (Common Business-oriented Language). Она занималась разработкой его спецификаций и компиляторов для него.
Благодаря A-0 и COBOL Хоппер существенно упростила «общение» человека с компьютером.
Точность современной GPS
Именно благодаря трудам американского математика Глэдис Уэст современная система глобального позиционирования (GPS) обладает столь высокой точностью — технологией, которая сегодня стала практически повсеместной и служит и туристам, и таксистам, и пилотам.
Поступив в 1956 году на работу на полигон ВМС США, став всего лишь второй афроамериканкой в этом учреждении, Уэст возглавила группу аналитиков, которые по данным спутниковых датчиков рассчитывали форму и размеры Земли и орбиты вокруг неё.
Именно на этих расчётах сегодня основываются траектории полёта спутников GPS.
Долгое время вклад Уэст оставался незамеченным: лишь в 2018 году ей вручили награду ВВС США «Пионеры космических и ракетных технологий». В 2021-м она стала первой женщиной, удостоенной медали принца Филиппа, которую присуждает Королевская инженерная академия Великобритании.
«Тканый» софт для полёта на Луну
На предприятии недалеко от Бостона, США, женщины-ткачихи сохраняли инструкции программного обеспечения для миссий «Аполлон» в виде длинного проволочного «каната».
Американский специалист по программному обеспечению Маргарет Хэмилтон возглавляла разработку и производство софта для американских лунных миссий «Аполлон», и её работа стала ключевой для шести экспедиций на Луну в 1969–1972 годах.
Под её руководством команда нашла изобретательный способ хранения программ для бортовых компьютеров «Аполлона»: их буквально вплетали в медный жгут.
Компьютеры хранят информацию в виде двоичного кода, последовательности единиц и нулей. Память современных машин обычно размещает эти данные на небольших кремниевых микросхемах. Во времена лунных миссий информацию сохраняли, намагничивая кольцевые сердечники.
Проволоку пропускали через отверстие сердечника, чтобы закодировать единицу, или огибали его снаружи, обходя отверстие, чтобы закодировать ноль. Такая технология получила название «канатная память» (core-rope memory).
Во время реализации программы «Аполлон», когда компьютерная программа уже была написана, переведена в машинный код и пробита на перфокартах, её отправляли на предприятие, где женщины, чаще всего бывшие работницы текстильных фабрик, вплетали медные провода и сердечники в длинный жгут, способный хранить огромные объёмы кода.
Помимо внедрения этого изящного способа хранения, Хэмилтон прежде всего занималась созданием программ, способных обнаруживать системные ошибки и восстанавливать работу в случае сбоя компьютера, что оказалось жизненно важным для миссии «Аполлон-11», успешно высадившейся на Луну.
«Работа с программным обеспечением сама по себе (его проектирование, разработка, совершенствование, наблюдение за тем, как оно работает, и использование этого опыта для будущих систем) была не менее захватывающей, чем события вокруг самой миссии», — рассказывала (источник на английском языке) Хэмилтон в интервью MIT News в 2009 году, вспоминая участие в программе «Аполлон».
«Оглядываясь назад, понимаю: мы были самыми счастливыми людьми на свете; у нас не было иного выхода, кроме как быть первопроходцами — времени на то, чтобы оставаться новичками, просто не было».