Грейс Мюррей Хоппер
Компилятор для компьютера
Все утверждали, что это невозможно. Где это видано — отдавать компьютеру команды на человеческом языке вместо машинного кода? Мысль о создании метода автоматического программирования тоже считали нелепой. Но математик и офицер военно-морского флота Грейс Мюррей Хоппер была уверена, что эти идеи не просто логичны, но и осуществимы, причем появление их неизбежно. Она считала, что компьютер может и должен стать более «дружелюбным» к рядовому пользователю. Для этого она создала компиляторы — программы, значительно упрощавшие работу с компьютером. Ее изобретение легло в основу высокоуровневых компьютерных языков, которые используются в банках, в коммерческих и государственных организациях. Компьютерные игры — и те своим появлением обязаны ее изобретениям в области программирования. Лишь благодаря созданным Грейс компиляторам все мы — отнюдь не математики и не программисты — можем делать на компьютерах множество разных вещей, как по работе, так и для удовольствия.
«Об этом просто никто не думал, — говорила Грейс. — И таких лентяев, как я, тоже еще не было. Программистам по большей части нравилось баловаться с двоичным кодом. А мне хотелось сделать дело. Компьютер ведь для этого и предназначался».
В самом начале, когда компьютеры еще только появились, Грейс и другие математики писали программы цифровым кодом — обозначали команды цифрами. Каждое сочетание нулей и единиц имело собственное значение. Так, например, если Грейс нужно было остановить компьютер, она набирала комбинацию «1 001 100». Каждую программу приходилось вводить отдельно, даже когда во многих программах встречались одинаковые фрагменты. Этот подход не только отнимал кучу времени, но и, как замечала Грейс, позволял наделать массу ошибок. Всего одна неправильная цифра — и программа не срабатывала.
У себя в кабинете Грейс повесила часы, которые шли против часовой стрелки, то есть задом наперед. Так она каждый день напоминала себе и своим коллегам, что все на свете можно сделать нестандартным способом. Самым вредным в любом споре Грейс считала возражение: «Но мы же всегда так делали».
«Все было очевидно, — говорила Грейс. — Зачем писать каждую программу с нуля? Лучше разработать такую программу, которая сама будет проделывать множество простейших операций столько раз, сколько потребуется. Создание компилятора было совершенно логичным шагом».
Логичным, но только для Грейс. Ее коллеги и руководство компании «Ремингтон Ренд» полагали, что создание компилятора относится к области невозможного.
Грейс доказала, что они ошибались. В 1952 году она создала «Систему А-0» — программу, или набор инструкций, превращавший математический код в машинный язык. Чтобы этого добиться, она взяла фрагменты кодов из нескольких программ и присвоила каждому из них собственный номер. С помощью этого номера компьютер находил нужные фрагменты и выстраивал их в требуемом порядке. Потом Грейс записала отдельные фрагменты кодов на магнитную ленту.
Летом 1945 года Грейс с коллегами работала на огромном компьютере марки IBM. Внезапно компьютер отключился. Покопавшись в нем, ученые обнаружили мотылька — тот залез внутрь и блокировал работу реле. Мотылька аккуратно извлекли и приклеили в журнал с надписью: «Первый случай обнаружения насекомого в механизме». Насекомых по-английски называют «багами» — козявками. С тех пор, если начальство спрашивало, почему расчеты идут так медленно, сотрудники отвечали, что занимались «дебаггингом», или «ловлей козявок», то есть обнаруживали и исправляли «баги» (ошибки) в программе. Слово это прочно вошло в компьютерную терминологию и используется по сей день наряду с русским термином «отладка».
«Теперь мне нужно было лишь написать цепочку номеров, дождаться, пока компьютер найдет их на ленте, извлечет их, и добавить все остальное, — объясняла Грейс. — Так появился первый компилятор. Можно было написать уравнения, а работать с ними поручить компьютеру».
Убедившись, что компилятор А-0 работает, Грейс не остановилась и разработала «Систему В-0» — компилятор, который понимал инструкции на английском языке (позже этот компилятор получил название FLOWMATIC). Новый компилятор, объясняла Грейс, работал как переводчик — преобразовывал буквы в узнаваемый язык машинного кода. Зачем? Чтобы нам было удобно работать на компьютере. Вокруг опять говорили: «Это невозможно». Но Грейс снова добилась своего.