Ричард Фейнман - Радость познания
Мы уже проделывали подобные вещи со счетными машинками. Обычно вы полностью выполняете первый этап. Процесс вынуждает вас идти сначала к сумматору, потом к умножителю, опять к сумматору и так далее. Стэнли разработал и упорядочил процедуру, похожую на компьютеры компании IBM — мы быстро поняли, что это был оптимальный путь решения наших задач.
Мы раскопали, что кто-то в вооруженных силах имеет опыт работы с IBM. Нам нужен был человек для их ремонта, поддержания в рабочем состоянии и всего прочего. Военные собирались прислать нам этого парня, но, как всегда, вышла заминка. Надо сказать, что мы вечно пребывали в ужасной спешке — все, что мы делали, мы старались сделать как можно быстрее. В каждом конкретном случае мы разрабатывали все численные этапы, которые следовало выполнить и которые предполагалось поручить машинам: перемножить то, сделать это и вычесть что-то из чего-то. Все вычисления выполнялись в одной комнате, где сидели девушки, у каждой был «Маршан». Одна выполняла умножение, другая — сложение, третья возводила в куб — у нас были «карточки», «учетные карточки» — девушка возводила число в куб и передавала результат другой… Одна имитировала умножитель, другая — сумматор, мы проходили весь цикл — так мы устраняли ошибки и отлаживали программу. Да, именно так мы и делали. Выходило, что мы были способны только на такую скорость — мы никогда раньше не делали поточных вычислений, и каждый, кто выполнял вычисления раньше, выполнял сам все этапы. У Форда возникла полезная идея — эта проклятая машина будет работать чертовски быстро другим способом — и мы получили скорость системы, которая прогнозировалась для машин IBM. Единственная разница состояла в том, что машины IBM не уставали и могли работать три смены, а наши девушки уставали после одной. Так или иначе, в ходе процесса мы отладили программу — а тут наконец доставили машины, но не мастера по их ремонту. Мы поспешили собрать их. На тот день это были одни из самых технологически сложных машин, большие компьютеры, они прибыли в разобранном виде с огромным количеством проводов и схем для сборки. Мы их собрали — Стэн Френкель, я и еще один парень — и заволновались. Основным источником беспокойства были большие «шишки», которые постоянно к нам приходили и говорили, что вы что-нибудь нарушите, обязательно нарушите! Мы все-таки собрали эти компьютеры — и иногда они работали, а иногда не работали, поскольку некоторые из них мы собрали неправильно. Мы возились с ними, и они начинали работать. Заработали они не все, я копался с одним мультипликатором, увидел погнутую деталь внутри и побоялся ее выпрямить, чтобы не сломать. Отовсюду приходили люди и говорили, что мы все безвозвратно сломаем. Наконец из компании IBM прибыл мастер, конечно, в соответствии со своим графиком, он наладил остальные машины, которые мы не могли отладить, и наша программа заработала. Но он никак не мог справиться с той машиной, с которой и мне не удалось справиться. Прошло три дня, а он все возился с этой последней. Я сказал ему: «Я заметил там погнутую деталь». Он посмотрел: «Ну конечно! Всего-то одна деталь!» (Щелк!) Вот и ладненько — готово.
Мистер Френкель начал разрабатывать свою программу, но заболел болезнью — компьютерной болезнью — все, кто работает с компьютерами, знают об этом. Это очень серьезная болезнь — и она полностью блокирует работу. Это очень серьезная проблема, которую мы постарались искоренить. Компьютерная болезнь — это игра с компьютерами. А они так привлекательны! Вы, например, имеете х — если это четное число, вы делаете одно, нечетное — другое, и если вы достаточно умны, очень быстро можно научиться выполнять на одной машине все больше и больше операций. Через некоторое время выяснилось, что вся наша система рушится. Стэн ни на что не обращал внимания, никого не видел. Дела продвигались очень-очень медленно. Он сидел в компьютерной аудитории и размышлял, как заставить табулятор автоматически печатать арктангенсы х, и машина печатала колонки арктангенсов, и он получал таблицу арктангенсов одной операцией. Абсолютно бесполезное занятие. У нас были таблицы арктангенсов. Но если вы когда-либо работали с компьютером, вы поймете эту болезнь — наслаждение от того, что вы сделали. Но бедный малый, изобретатель многих полезных вещей, подхватил эту болезнь впервые.
Меня попросили остановить работу над темой, которой занималась наша группа, спуститься в компьютерную и принять руководство группой IBM. Я заметил признаки болезни и попытался избежать ее. И хотя за девять месяцев были сделаны только три задачи, моя группа была очень сильной. Первая проблема состояла в том, что им не разрешалось разговаривать с нашими ребятами — их отобрали по всей стране и назвали отдел — специальное инженерное подразделение. Там были умные мальчики с высшим образованием, с инженерными способностями. Военные прислали их в Лос-Аламос. Их разместили в казармах, так чтобы им никто ничего не мог рассказать. Они являлись на работу — их задачей была работа на машинах IBM — перфорировать дырки, цифры, но для чего это нужно, они не знали, никто им об этом не сообщал. Дела шли очень медленно. Я сразу сказал, что технические специалисты должны знать, чем они занимаются. Оппенгеймер ходил разговаривать в отдел безопасности и получил специальное разрешение. Я прочитал подробную лекцию, в которой рассказал им, над чем мы работаем, в результате они очень разволновались. Мы боремся против войны. Мы понимаем, что это такое. Теперь они знали, что означают цифры, с которыми они работали. Если давление увеличится, значит, высвободится больше энергии и может случиться много-много непредвиденных ситуаций. Теперь они были в курсе дела — и произошло полное преображение! Они изобретали способы, как улучшить вычислительный процесс. Они усовершенствовали схему. Они работали по ночам. По ночам им не нужны были надзиратели. Они ничего не требовали и все понимали. Они изобрели несколько программ, которые мы использовали, и прочее, и прочее. Мои ребята действительно вписались в работу — им только приходилось говорить, для чего это делается, — вот и все. Только не говорите им: пожалуйста, пробейте дырки в перфокартах. В результате если раньше мы делали три задачи за девять месяцев, то теперь девять задач за три месяца, почти в десять раз быстрее. При решении задач мы пользовались одним из секретных методов: следует создавать циклы для задач, состоящих из кучи перфокарт. Сначала складывай, потом умножай — и вы проходите через цикл машин в компьютерной, правда, достаточно медленно, так как постоянно движетесь по кругу. Мы разработали способ, используя различные наборы окрашенных перфокарт, пропускали их тоже через цикл, но не в фазе. У нас одновременно решались две или три задачи — и мы придумали новые хитрости: пока одна машина складывала, другая производила умножение для другой задачи. Такие схемы управления позволяли решать гораздо больше задач.
В заключение в конце войны, как раз перед испытанием бомбы в Аламогордо, возник вопрос, сколько энергии будет высвобождаться? Мы вычисляли объем высвобождаемой энергии для различных конструкций, но для конкретной конструкции, выбранной для испытаний, мы расчетов не делали. Пришел к нам в компьютерную Боб Кристи и говорит, что нам нужен результат через месяц или раньше, а может быть, через три недели. Я отвечаю: «Это невозможно!» А он продолжает: «Смотри, вы решаете за неделю столько-то задач. Эта задача займет две, максимум три недели». Я возразил: «Я понимаю, что задача займет куда больше времени, но мы будем ее считать параллельно. Другого пути ускорить работу нет — обычный путь тут не пойдет». Он ретировался. А я начал думать, есть ли способ выполнить счет быстрей? Я продолжал думать, подошел к доске и написал на ней обращенный к ребятам вопрос: МОЖЕМ ЛИ МЫ СДЕЛАТЬ ЭТО? Они все ответили — да! Мы будем работать в две смены, сверхурочно, и все такое. Мы будем стараться! Мы попытаемся!!! Все другие задачи были отложены. Только одна задача — мы сконцентрировались на ней и начали работать.
Моя жена умерла в Альбукерке, и я вынужден был уехать. Я позаимствовал автомобиль Фукса. Он был моим товарищем по общежитию. У него был автомобиль. Он им пользовался для перевозки секретных материалов и переправлял их в Санта-Фе, он был шпионом; но я ничего об этом не знал. По дороге спустили сразу три шины. Как только я вернулся, сразу отправился в компьютерную аудиторию, мне полагалось за всем следить. Но в течение трех дней я не мог работать. У нас царила неразбериха, грандиозная суета перед первыми испытаниями бомбы в пустыне. Я шагнул в комнату и обнаружил там перфокарты различного цвета — белые, синие, желтые. Я начал было говорить: «Мы не договаривались делать несколько задач — только одну!» Они наперебой заорали: «Уходите, выйдите отсюда! Мы вам позже все объясним!» Я ждал, а произошло вот что. Когда прогоняли программу, машина иногда делала ошибку или в нее вкладывали случайно перфокарту с неправильным числом. Обычно при этом мы возвращались назад и проделывали всю процедуру заново. Но ребята заметили, что колода перфокарт фиксировала положение и глубину ошибки в машине, в пространстве или где-либо еще. Ошибка, сделанная в одном цикле, влияет только на соседние числа, следующий цикл влияет тоже только на соседние числа и так далее. Машина работает с колодой перфокарт. Если вы сделали ошибку в перфокарте 39, она влияет на 37, 38 и 39. Далее она влияет на 36, 37, 38, 39 и 40. Дальше ошибка распространялась, как бацилла. Они обнаружили ошибку, просмотрели все в обратном направлении, и у них появилась идея. Они могут обрабатывать заново только маленькую колоду, например десять перфокарт, в окрестности ошибки. И поскольку десять перфокарт машина обрабатывает гораздо быстрее, чем пятьдесят, они будут проходить программу быстро, пока бацилла не распространилась на все перфокарты. Они изолировали ошибку и исправляли ее — и вычисления шли быстрее. Остроумно! Ребята работали очень напряженно, очень умно — и получали выигрыш в скорости. Другого способа не существовало. Если бы они останавливались и фиксировали ошибку, мы теряли бы кучу времени. Мы не могли себе этого позволить. Вы, конечно, поняли, что произошло во время прогона программы. Они нашли ошибку в синей колоде. И они взяли желтую колоду с меньшим числом перфокарт, ясно, что она обрабатывалась быстрее, чем синяя. Но после того как они исправили одну ошибку, они обнаружили и вынуждены были зафиксировать ошибку в белой колоде. Они вынули перфокарты с ошибкой, заменив их другими — они были в отчаянии. Дальше программа обрабатывалась правильно, это всегда сбивает с толку: вы знаете, как все должно работать, и все-таки допускаете ошибки. И именно тогда, когда они запускали в машину эти три колоды перфокарт, устранив ошибки, заявился босс. Они взмолились: «Вы нам мешаете». Я ушел. И все у них заработало. Задача была решена вовремя. Такие вот дела.