Уолтер Айзексон - Инноваторы. Как несколько гениев, хакеров и гиков совершили цифровую революцию
Однажды Дженнингс и Снайдер сидели в реквизированном ими двухэтажном учебном помещении и рассматривали листы, содержащие диаграммы множества блоков ENIAC, когда в класс вошел человек, инспектирующий некоторые конструкции. «Привет, меня зовут Джон Мокли, — сказал он, — я просто проверял, не провалился ли потолок». Ни одна из женщин не встречалась до этого с изобретателем ENIAC, но они ни в малейшей степени не смутились и не испугались. «Рады вас видеть, — заявила Дженнингс, — расскажите, как этот проклятый сумматор работает». Мокли подробно ответил на этот, а потом и на другие вопросы. Когда они закончили, он сказал им: «Ну вот, мой кабинет находится по соседству. Так что в любое время, когда я там, вы можете прийти и задать мне вопрос».
Они и заходили почти каждый день. Если верить Дженнингс, «он был чудесным учителем». Он помог женщинам понять, как много других задач (кроме расчета артиллерийских траекторий) ENIAC сможет со временем решать. Он знал, что для того, чтобы сделать его настоящим компьютером общего назначения, он должен вдохновить программистов, которые могли заставить аппаратное устройство выполнять различные задачи. «Он всегда старался заставить нас думать о других проблемах, — рассказывала Дженнингс. — Он всегда просил нас найти обратную матрицу или что-то в таком же духе»[182].
Женщины-программистки придумали, как сделать подпрограммы для ENIAC, примерно в то же время, что и Хоппер в Гарварде. Они боялись, что логические схемы не настолько мощны, чтобы просчитать некоторые траектории. Придумала решение Макналти. «О, я знаю, я знаю, я знаю, — возбужденно воскликнула она однажды. — Мы можем использовать главную программу для повторения части программы». Они попытались, и это сработало.
«Мы начали обдумывать, как нам написать подпрограммы, вложенные подпрограммы и все такое, — вспоминала Дженнингс. — Это было очень полезно для задач по расчету траекторий, потому что идея состояла в том, чтобы повторять не всю программу, а только ее куски. Для этого нужно было так составить основную программу, чтобы она реализовала это. После того как вы научились делать это, вы понимаете, как составить свою программу в модульном виде. Разработка подпрограмм и модульной организации основной программы были самыми важными этапами в освоении программирования»[183].
Джин Дженнингс Бартик скончалась в 2011 году, а незадолго до смерти с гордостью рассказывала, что все программисты, участвовавшие в создании первого компьютера общего назначения, были женщинами: «Несмотря на то, что мы достигли совершеннолетия в то время, когда карьерные возможности женщин были, как правило, довольно ограниченными, мы приняли участие в становлении компьютерной эры». Это произошло потому, что все-таки многие женщины тогда учились математике и их навыки были востребованы. Была также и забавная причина: парни, с детства помешанные на игрушечных машинках, считали, что именно сборка оборудования была самой важной задачей и, следовательно, мужской работой. «Американская наука и техника была еще более сексистской, чем сегодня, — говорила Дженнингс. — Если бы руководители ENIAC знали, насколько важным окажется программирование для функционирования ЭВМ и насколько сложным оно окажется, они, возможно, трижды подумали бы, прежде чем отдать такую важную роль женщинам»[184].
Сохранение программ
С самого начала Мокли и Эккерт понимали, что существуют более легкие способы перепрограммировать ENIAC. Но они не пытались этого сделать, потому что потребовалось бы усложнить аппаратное устройство, и к тому же в этом не было необходимости, поскольку для решения первоначально поставленных задач этого не требовалось. «Не было сделано ни одной попытки обеспечить автоматический выбор настроек под определенную задачу, — написали они в своем годовом отчете за 1943 год по усовершенствованию ENIAC. — Это было сделано из-за желания упростить конструкцию и потому, что предполагалось, что ENIAC будет использоваться в основном для задач определенного типа, в которых одна настройка будет использоваться много раз, прежде чем машину заставят решать другую задачу»[185].
Но больше чем за год до окончания создания ENIAC, уже в начале 1944 года, Мокли и Эккерт поняли, что существует хороший способ сделать компьютеры легко перепрограммируемыми: хранить программы в памяти компьютера, а не загружать их каждый раз заново. Они чувствовали, что это было бы следующим большим шагом вперед в развитии компьютеров. Структура машины с «сохраняемой программой» предполагает, что постановки задач для компьютера могут быть изменены практически мгновенно, без изменения вручную конфигурации кабелей и переключателей[186].
Для сохранения программы внутри машины нужно иметь большой объем памяти. Эккерт перебрал много способов для этого. В докладной записке, составленной в январе 1944 года, он написал: «Программы можно сохранять временно, используя запись на дисках из сплавов или постоянно — на протравленных дисках»[187]. Поскольку такие диски еще не были сделаны, в следующей версии ENIAC он предложил использовать вместо этого более дешевый метод хранения, названный памятью на акустической линии задержки. Она была впервые сконструирована в Bell Labs инженером Уильямом Шокли (о котором ниже будет рассказано гораздо подробнее) и усовершенствована в Массачусетском технологическом институте. Принцип работы акустической линии задержки состоял в сохранении данных в виде импульсов в длинной трубке, заполненной тяжелой, вязкой жидкостью, такой как ртуть. На одном конце трубки электрический сигнал, несущий информацию, в кварцевом преобразователе превращался в волны, какое-то время распространяющиеся в трубке вперед и назад. Поскольку импульсы затухают, их с помощью усилителей восстанавливают. Когда приходит время извлечь данные, импульсы в кварцевом преобразователе опять превращаются в электрические сигналы, и цикл повторяется. В каждой такой трубке могло храниться примерно тысяча бит данных при стоимости, равной одной сотой от стоимости схемы, собранной на электронных лампах. В докладной записке, составленной летом 1944 года Эккертом и Мокли, они предложили следующее поколение компьютеров — преемников ENIAC — снабдить стеллажами с этими линиями задержки на ртутных трубках и хранить в них как исходные данные, так и основную информацию по программам в цифровом виде.
(adsbygoogle = window.adsbygoogle || []).push({});