Королева кода: как Грейс Хоппер сделала компьютеры доступнее
Имя программистки Грейс Хоппер не на слуху, однако именно она сыграла ключевую роль в превращении компьютеров из недоступных вычислительных машин в удобные для пользователя инструменты. В кругах специалистов ее называют «невероятной Грейс», «бабушкой софта» и даже «королевой кода». Эти громкие звания Хоппер получила благодаря своей работе над первым компилятором, а также одним из первых языков программирования. Рассказываем о ее жизни и изобретениях.
Математика вместо семейной жизни
Грейс Хоппер родилась в 1906 году в Нью-Йорке. В семье работал только отец, он был страховым агентом, а мать — домохозяйкой. По словам Хоппер, математический склад ума достался ей именно от нее.
Многие будущие инноваторы проявляют незаурядные способности еще в раннем детстве, и маленькая Грейс не была исключением. В семь лет девочке стало интересно, как работают будильники.
Грейс начала свое первое механическое исследование и разобрала семь штук. Мама поддержала интерес дочери, но попросила ее остановится на изучении одного будильника.
В дальнейшем Грейс решила пойти наперекор общественным ожиданиям и получить техническое образование. В 1924 году со второй попытки Хоппер поступила в Вассарский колледж — первое учебное заведение для женщин в США.
Она изучала математику и физику, и в 1928 году успешно получила степень бакалавра по этим специальностям. Затем Хоппер поступила в Йельский университет. Там в 1934 она защитила докторскую степень с диссертацией о неприводимых многочленах и теории колец. Научным руководителем Хоппер был знаменитый норвежский математик Ойстин Оре.
Став доктором математических наук, Хоппер вернулась в альма-матер — Вассарский колледж — и начала преподавательскую карьеру. Но этот карьерный путь длился недолго — в 1939 году началась Вторая Мировая, участницей которой Штаты стали два года спустя после Атаки на Перл-Харбор.
«Компьютерная библия» и баг – военная служба и первые шаги в программировании
Внести свой вклад в победу союзников Хоппер удалось не сразу. В 34 года Хоппер была слишком стара для поступления на военную службу. Также у ученой был недобор веса — она отличалась худощавым телосложением.
При этом все больше мужчин поступало на военную службу, оставляя свои рабочие места. Области вроде математики остро нуждались в квалифицированных специалистах, что играло на руку Хоппер.
В 1943 году через программу WAVES («Женщины, принятые в добровольную службу экстренной помощи») ей удалось попасть в резерв ВМС США.
Сначала Хоппер проходила обучение в Школе курсантов резерва в Колледже Смит в штате Массачусетс и окончила курс с лучшими результатами на курсе.
После года обучения уже энсин (аналог нашего младшего лейтенанта) Хоппер отправили в бюро артиллерийских вычислительных проектов при Гарвардском университете для работы над Mark I — автоматическим вычислителем, управляемым последовательностями. По сути это был первый американский программируемый компьютер.
Работа на военных не тяготила ее. Наоборот — она описывала этот опыт как «самую полную свободу, которую я когда-либо имела». Более того, в те годы армия и флот были самыми перспективными местами работы для многих ученых-инноваторов (привет Оппенгеймеру!).
Хоппер называла Mark I «впечатляющим чудовищем» и «самым красивым гаджетом», который ей доводилось видеть. Длина Mark I составляла 17 м, высота — 2,5 м, а в Гарварде он занимал отдельную комнату.
Тогда не существовало термина «компьютерное программирование», но именно так можно назвать задачи, выполняемые Грейс в то время. Команда работала над сложными расчетами для военных, например, вычисляла траектории ракет и создавала таблиц дальности стрельбы для новых зенитных орудий.
Хоппер работала под руководством пионера компьютеростроения Говарда Эйкена. В 1946 году он поручил Хоппер составить руководство по эксплуатации и работе на Mark I.
В первые годы эксплуатации Марк I полагался на импровизированные методы работы членов команды. Задача Хоппер была весьма грандиозной — объединить разрозненные знания о машине и создать подробную профессиональную инструкцию.
Из-за объема данных ученая сравнивала проект с созданием «компьютерной библии». Результатом стала 500-страничная книга. Хоппер скрупулезно описала все аспекты физических компонентов Mark I, тонкости эксплуатации и технического обслуживания.
В руководстве содержались подробные инструкции по программированию машины, что фактически сделало его первым в истории учебником по компьютерному программированию.
После успешного выполнения задания Эйкен оценил заслуги Хоппер и сделал ее своей заместительницей. В дальнейшем они написали несколько статей о Mark I в соавторстве. Эйкен продолжил создание вычислительных машин выпуском Mark II и Mark III, и Хоппер работала в его команде.
В тот период Хоппер неосознанно приложила руку к появлению термина «баг» и «дебаггинг» в компьютерном обиходе. В 1947 году во время тестирования Mark II жук залетел в корпус компьютера, что вызвало сбой в работе машины.
По-английски жук — это bug, или баг. Хоппер вклеила насекомое в технический дневник и написала «первый случай обнаружения бага», имея в виду жука. Но в историю термин вошел именно как ошибка или неполадка в работе компьютерной техники.
Лень — двигатель прогресса: создание компилятора A-0
В 1949 году Хоппер предложили должность главного математика в технологической компании Eckert-Mauchly Computer Corporation. Основатели Джон Мокли и Джон Преспер Эккерт построили ЭВМ под названием ENIAC по заказу армии США в 1946.
Хоппер же пригласили для работы над UNIVAC I — первым в Америке полностью электронным цифровым компьютером для общего, а не только военного пользования. В 1950 корпорация продала свои активы фирме Remington Rand, после чего Хоппер возглавила отдел по разработке автоматического программирования.
UNIVAC I мог обрабатывать больше информации чем Mark I, что весьма прельщало Хоппер. Компьютер мог выполнять 455 умножений в секунду и хранить около тысячи в своей памяти на ртутных линиях задержки.
К тому же, в коммерческом поле у нее было больше свободы. Хоппер активно пользовалась этим и экспериментировала с новыми способами использования компьютера для кодирования.
Ученую интересовало автоматическое программирование. Позже она вспоминала, что во время работы ей было лень вновь и вновь переписывать программы под аппаратные настройки.
Так в 1952 году появился компилятор A-0. Надо понимать, что программы того времени представляли собой набор математических выражений, которые надо было обрабатывать несколькими другими программами. Это было долго и сложно.
Компилятор A-0 позволял переводить компьютерный язык высокого уровня в двоичный, то есть машинный, с помощью всего одной программы. Параллельно с Хоппер разработки подобной программы вели и другие. Например, в том же 1952 году в Манчестерском университете под руководством Алека Гленни был запущен компилятор Autocode.
Но термин «компилятор» был создан именно Хоппер и ее командой в Remington Rand. Функционал A-0 не совсем совпадает с тем, что подразумевается под этим термином сегодня. Скорее его можно назвать загрузчиком программ и компоновщиком.
И все-таки это было прорывом и важной вехой в развитии программирования. Хоппер заложила основу для создания современных языков программирования, которые упростили общение между людьми и компьютерами, позволяя выполнять сложные задачи с минимальным количеством команд.
После A-0 выходили обновленные версии — A-1, A-2 и так далее. Первые клиенты получили компилятор A-2 к концу 1953 года. Remington Rand предоставил им исходный код A-2 и предложил внести улучшения в UNIVAC.
Бабушка КОБОЛа — одного из ранних языков программирования
Тем временем, Хоппер продолжала лелеять идею о написания программ словами, а не символами. По ее мнению, язык программирования должен быть ближе к бытовому английскому, а не к двоичному коду. Это сделало бы применение компьютеров понятнее для широкого пользователя.
Компьютеры только начинали распространяться среди простых пользователей — в основном в компаниях и на предприятиях. Отсутствие инженерного или математического образования казалось для них непреодолимым препятствием в использовании ЭВМ.
Хоппер видела огромный потенциал применения компьютеров в сфере бизнеса, например, для расчета зарплаты, поэтому продолжала свои исследования и попытки.
Руководство Remington Rand не разделяло видение Хоппер. Однако ее это не волновало. Высказывания ученой разошлись на цитаты, и одна из них гласит: «У людей аллергия на изменения. Я стараюсь бороться с этим, поэтому у меня на стене часы, которые идут против часовой стрелки».
В 1956 году ее команда запустила FLOW-MATIC, первый язык программирования, использующий словесные команды. Новшеством этого языка был и синтаксис, где данные и операций с ними были разделены.
Словесно выражались только операции, данные вносились через предварительно напечатанные формы. FLOW-MATIC стал основой для КОБОЛа.
КОБОЛ появился в ходе Конференции по языкам систем обработки данных, проходившей весной 1959 года. Ее проводила организация CODASYL, главная цель — создание стандартизированного языка программирования для бизнеса.
Базой для КОБОЛа стал FLOW-MATIC Хоппер, другой источник влияния — COMTRAN от IBM. КОБОЛ был создан усилием многих людей, не только Хоппер, однако тот факт, что ее детище было в основе языка, принес ей прозвище «бабушка КОБОЛа».
Хоппер занималась развитием этого языка, как в военной, так и в гражданской сферах. Она также работала над созданием компилятора для КОБОЛа.
Язык использует англоязычные ключевые слова, а его синтаксис приближен к целостным предложениям на английском языке. Среди плюсов — легкая читаемость программ.
Среди минусов — громоздкость. Например, то, что в си-подобных языках выражается как y = x;, в Коболе будет выглядеть так — MOVE x TO y.
Критиковали КОБОЛ и из-за отсутствия структурированности. Нидерландский ученый и один из разработчиков концепции структурного программирования Эдсгер Вейкстра даже говорил, что использование Кобола «калечит мозг», а его преподавание — «уголовное преступление».
При всех недостатках КОБОЛ получил широкое распространение в 1960-1970-е гг. Все больше компьютеров мигали в каждом корпоративном офисе, как того и хотела Хоппер.
К 1980-м КОБОЛ был признан устаревшим, однако по-прежнему сохранял популярность. По данным 1997 года, код на КОБОЛе обрабатывал 90% финансовых транзакций в мире и 75% коммерческих транзакций.
КОБОЛ используется до сих пор, особенно в США, в основном — для поддержки существующих приложений. В августе 2023 года он даже вышел на 15-е место по популярности среди всех языков программирования.
У популярности языка много причин. Десятилетия использования сделали КОБОЛ надежным и стабильным. С его помощью можно обрабатывать большие объемы данных и при этом нет нужды в дорогом оборудовании. КОБОЛ совместим с другими языками и технологиями, такими как Java, C#, SQL, XML и т. д.
Наследие удивительной Грейс
На протяжении всей своей карьеры в компьютерной индустрии Хоппер оставалась в резерве ВМФ. В 1966, когда ученой исполнилось 60 лет, ВМФ США предложил ей пожизненный контракт. Так Хоппер принялась за усовершенствование компьютерных программ флота.
Ученая продвигала идею замены крупных централизованных компьютерных систем сетями из множества небольших компьютеров. Такой подход позволял любому пользователю, независимо от его местоположения в сети, получить доступ к общим базам данных.
Это нововведение в конечном счете привело к созданию интернета, который первоначально разрабатывался в военной сфере и для военных нужд.
Кроме того, Хоппер занималась разработкой стандартов тестирования компьютерных систем.
Преданность своему делу заслужила восхищение подчиненных Хоппер, которые окрестили ее «удивительной Грейс». А в 1985 году ей присвоили звание контр-адмирала. На тот момент Хоппер было 79 лет.
Даже после окончательной отставки в 1986 году Хоппер продолжила работу. Она выступала с публичными лекциями и вела консультации для IT-компаний.
Грейс Хоппер умерла в 1992 году. К тому времени компьютеры перестали быть редкостью, по крайней мере в США. И они понимали английский и другие человеческие языки, как и мечтала ученая.
Хоппер была известна своим своеобразным характером. Она со скепсисом относилась к военной муштре и считала, что лучше попросить прощения после, чем ждать разрешения. В кабинете Хоппер висел пиратский флаг — иронии добавляет тот факт, что она служила на флоте.
В 1986 году Хоппер наградили «Медалью за безупречную службу». А уже после ее смерти именем Хоппер назван ракетный фрегат USS Hopper, суперкомпьютер Cray XE6 «Hopper» и колледж в Йеле.
Особенно важную роль Хоппер сыграла в том, чтобы компьютерная сфера становилась более открытой для женщин. С 1994 года проводится конференция женщин-компьютерщиков, названная ее именем. Существуют стипендиальные фонды имени Хоппер, которые направлены на поддержку девочек и женщин в программировании.
Во время интервью телеведущий Дэвид Леттерман спросил Хоппер, откуда она так много знала о компьютерах. На что ученая ответила, что она не знала ничего. Будучи в числе первопроходцев, Хоппер во многом действовала по наитию и не во всем встречала поддержку своего руководства, что в корпорациях, что на флоте. Например, в главном стремлении ее жизни — научить компьютеры понимать человеческий язык, а не только числовые команды.
Но она преуспела в этом. Хотя программирование все еще требует особых навыков и обучения, идеи Хоппер внесли важный вклад в облегчение работы программистов. А обывателям не нужно изучать премудрости двоичного кода, чтобы просто воспользоваться компьютером.