Все утверждали, что это невозможно. Где это видано — отдавать компьютеру команды на человеческом языке вместо машинного кода? Мысль о создании метода автоматического программирования тоже считали нелепой. Но математик и офицер военно-морского флота Грейс Мюррей Хоппер была уверена, что эти идеи не просто логичны, но и осуществимы, причем появление их неизбежно. Она считала, что компьютер может и должен стать более «дружелюбным» к рядовому пользователю. Для этого она создала компиляторы — программы, значительно упрощавшие работу с компьютером. Ее изобретение легло в основу высокоуровневых компьютерных языков, которые используются в банках, в коммерческих и государственных организациях. Компьютерные игры — и те своим появлением обязаны ее изобретениям в области программирования. Лишь благодаря созданным Грейс компиляторам все мы — отнюдь не математики и не программисты — можем делать на компьютерах множество разных вещей, как по работе, так и для удовольствия.

«Об этом просто никто не думал, — говорила Грейс. — И таких лентяев, как я, тоже еще не было. Программистам по большей части нравилось баловаться с двоичным кодом. А мне хотелось сделать дело. Компьютер ведь для этого и предназначался».

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

У себя в кабинете Грейс повесила часы, которые шли против часовой стрелки, то есть задом наперед. Так она каждый день напоминала себе и своим коллегам, что все на свете можно сделать нестандартным способом. Самым вредным в любом споре Грейс считала возражение: «Но мы же всегда так делали».

«Все было очевидно, — говорила Грейс. — Зачем писать каждую программу с нуля? Лучше разработать такую программу, которая сама будет проделывать множество простейших операций столько раз, сколько потребуется. Создание компилятора было совершенно логичным шагом».

Логичным, но только для Грейс. Ее коллеги и руководство компании «Ремингтон Ренд» полагали, что создание компилятора относится к области невозможного.

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

Летом 1945 года Грейс с коллегами работала на огромном компьютере марки IBM. Внезапно компьютер отключился. Покопавшись в нем, ученые обнаружили мотылька — тот залез внутрь и блокировал работу реле. Мотылька аккуратно извлекли и приклеили в журнал с надписью: «Первый случай обнаружения насекомого в механизме». Насекомых по-английски называют «багами» — козявками. С тех пор, если начальство спрашивало, почему расчеты идут так медленно, сотрудники отвечали, что занимались «дебаггингом», или «ловлей козявок», то есть обнаруживали и исправляли «баги» (ошибки) в программе. Слово это прочно вошло в компьютерную терминологию и используется по сей день наряду с русским термином «отладка».

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

Убедившись, что компилятор А-0 работает, Грейс не остановилась и разработала «Систему В-0» — компилятор, который понимал инструкции на английском языке (позже этот компилятор получил название FLOWMATIC). Новый компилятор, объясняла Грейс, работал как переводчик — преобразовывал буквы в узнаваемый язык машинного кода. Зачем? Чтобы нам было удобно работать на компьютере. Вокруг опять говорили: «Это невозможно». Но Грейс снова добилась своего.

«Если у вас есть хорошая идея, вы ее опробовали и убедились, что она работает, — действуйте, — говорила она. — Гораздо проще извиниться за самоволие, когда все уже сделано и успех достигнут, чем долго добиваться разрешения приступить к делу».

К 1957 году разработанный Грейс FLOWMATIC был одним из трех языков программирования, которыми пользовались на американских компьютерах, и единственным, позволявшим вводить команды на английском языке. Впрочем, вскоре стало очевидно, что программистам требуется универсальный компьютерный язык — такой, который будут понимать все компьютеры. Что думала по этому поводу Грейс? Она возглавила движение за стандартизацию. Она говорила, что без единого языка компьютерная индустрия «утонет и не выплывет».

По образу инновационных компиляторов, созданных Грейс Хоппер, был разработан Кобол (COBOL) («универсальный язык для выполнения бизнес-задач») — первый универсальный язык программирования, который стали использовать в государственных учреждениях и коммерческих организациях. А идеи удобных для пользователя программ, которые тоже разработала Грейс, легли в основу современных высокоуровневых языков программирования. Например, тех, на которых написаны компьютерные игры. И тебе лишь остается научиться в эти игры играть и выигрывать.