Подход Хоппер к программированию был систематическим. Она разбивала все физические проблемы или математические уравнения на мелкие арифметические шаги. “Вы просто говорите компьютеру, что делать, шаг за шагом, — поясняла она. — Нужно взять это число, и добавить его к тому числу, и положить результат туда-то. Теперь взять это число, и умножить его на то число, и положить его туда-то”12. Когда программа уже была набита на ленту и наставал момент ее проверять, команда, обслуживающая Mark I, сначала в шутку, ставшую потом ритуалом, вытаскивала молитвенный коврик, становилась на него лицом на восток и молилась, чтобы их работа оказалась успешной.
Иногда по ночам Блох слегка переделывал что-то в аппаратуре компьютера, что создавало проблемы для компьютерных программ, которые писала Хоппер. Она была человеком несдержанным, бывало, использовала крепкие словечки, и отборная брань, которой она поливала остолбеневшего долговязого Блоха, стала предвестником той смеси вражды и товарищества, которая возникнет между разработчиками аппаратных средств и программного обеспечения. “Каждый раз, когда я запускаю программу, он приходит ночью и меняет схемы в компьютере, а на следующее утро программа перестает работать, — сетовала она. — К тому же утром он уже дома, и спит, и не может рассказать мне, что переделал”. Как в таких случаях говорил Блох: “Разверзались ворота ада. Айкен не умел воспринимать это с юмором”13.
Из-за таких случаев Хоппер заработала репутацию грубиянки. Такой она и была. Но она также могла сочетать грубоватость с умением работать в команде — способность, присущая программистам экстра-класса. Это ощущение командного “пиратского” братства — то, что роднит Хоппер с программистами последующих поколений, — не ограничивало ее, а скорее делало более свободной. Как писал Бейер, “именно способности Хоппер к работе в команде, а не ее дерзкий характер, способствовали самостоятельности ее мышления и действий”14.
На самом деле не у импульсивной Грейс Хоппер, а у спокойного Блоха были более сложные отношения с командиром Айкеном. “У Дика всегда возникали неприятности, — вспоминала Хоппер. — Я пробовала объяснить ему, что Айкен похож на компьютер. Он сконструирован определенным образом, и если собираешься работать с ним, ты должен понимать, как он собран”15. Айкен, который сначала был недоволен присутствием женщины в его подразделении, вскоре сделал Хоппер не только главным программистом, но и своим первым заместителем. Много лет спустя он вспоминал с благодарностью ее вклад в рождение компьютерного программирования. Как он говорил, “Грейс была хорошим парнем”16.
Среди методов программирования, которые Хоппер в Гарварде довела до совершенства, было создание подпрограмм — частей программы, предназначенных для выполнения конкретных задач. Подпрограммы загружаются один раз, но их можно вызывать всякий раз, когда это необходимо, — в любой момент выполнения основной программы. “Подпрограмма — это четко определенная, удобно закодированная, часто повторяемая программа, — писала она. — В компьютере Mark I / Harvard имелись подпрограммы для вычисления sin х, log10 х, и 10x, каждая из которых могла вызываться одним операционным кодом”17. Это была та самая концепция, которую Ада Лавлейс впервые описала в своих “Примечаниях” к статье об аналитической машине. Хоппер собирала библиотеку этих подпрограмм, которая все время пополнялась. В процессе работы над программированием компьютера Mark I она разработала концепцию компилятора — устройства для перевода исходного кода на машинный язык, используемый различными компьютерными процессорами, что в конечном итоге облегчило написание одной и той же программы для множества машин.
Кроме того, ее команда внедрила общепринятые в настоящее время термины bug (в переводе — насекомое), означающий ошибку в программе, и debugging (устранение насекомых), означающий отладку программы. Вторая версия машины — компьютер Mark II /Harvard был установлен в здании, где на окнах не было противомоскитных сеток. Однажды ночью машина вышла из строя, и команда стала искать причину проблемы. Внутри они нашли разбившуюся и застрявшую в одном из электромеханических реле ночную бабочку с размахом крыльев в десять сантиметров. Она была извлечена и приклеена в журнал записей скотчем. Запись гласила: “Панель F (бабочка) в реле. Первая конкретная причина программной ошибки найдена”18. С тех пор поиски глюков, то есть отладку программы, называли “поиском багов в машине”.
К 1945 году, во многом благодаря Хоппер, компьютер Mark I / Harvard стал самым легко программируемым в мире большим компьютером. Он мог переключаться с одной задачи на другую, просто получив новые инструкции с бумажной перфоленты, и не требовал аппаратной переделки или перепайки кабелей. Тем не менее эта замечательная особенность в значительной степени осталась незамеченной и тогда, и в истории компьютеров, поскольку в компьютере Mark I (и даже в его преемнике, Mark II, построенном в 1947 году) использовались медленные электромеханические реле, а не электронные компоненты, в первую очередь электронные лампы. “К тому времени, когда кто-то что-то узнал о нем, — рассказывала Хоппер о компьютере Mark II, — он уже был малоэффективен, и все переходили на электронику”19.
Инноваторы в области компьютерных технологий, как и другие первопроходцы, могут оказаться в отстающих, если зациклятся на своих решениях. Те же черты характера, которые делают их изобретательными, например упрямство и умение сконцентрироваться, могут сделать их невосприимчивыми к новым идеям. Стив Джобс был известен своим упрямством и целеустремленностью, но он же поражал и сбивал с толку своих коллег, когда внезапно менял подход, поняв, что теперь необходимо направить мысли в другом направлении. Айкену не хватало гибкости. Он не был достаточно гибким, чтобы в нужный момент исполнить пируэт. Он инстинктивно вел себя как капитан корабля, наделенный единоличной властью, поэтому у его экипажа не было привычки свободно выдвигать новые идеи, как это было в команде Мокли и Эккерта в Пенне (Пенсильванском университете). Кроме того, Айкен ставил на первое место надежность, а не скорость. Поэтому он держался за использование проверенных временем и надежных электромеханических реле даже после того, как инженеры из Пенна и Блетчли-Парка поняли, что будущее за электронными лампами. Его Mark I мог выполнять только около трех операций в секунду, в то время как ENIAC, строившийся в Пенне, мог выполнять за то же время пять тысяч операций.
(adsbygoogle = window.adsbygoogle || []).push({});