Инноваторы. Как несколько гениев, хакеров и гиков совершили цифровую революцию
Шрифт:
Кроме Джин Дженнингс (позже Бартик), были взяты на работу Мэрлин Весков (позже Мельцер), Рут Лихтерман (позже Тейтель-баум), Бетти Снайдер (позже Холбертон), Фрэнсис Байлас (позже Спенс) и Кей Макналти (которая впоследствии вышла замуж за Джона Мокли). Они были типичной командой, оказавшейся вместе благодаря войне: Весков и Лихтерман были еврейками, Снайдер — из квакеров, Макналти — католичкой ирландского происхождения, а Дженнингс принадлежала к церкви, отколовшейся от протестантской. «Мы замечательно проводили время вместе, в основном потому, что никто из нас никогда раньше не имел близких контактов с кем-либо принадлежащим к другой религии, — вспоминала Дженнингс. — У нас было несколько важных споров о религиозных догмах и верованиях. Несмотря на наши различия или, возможно, благодаря им, мы очень полюбили друг друга» [175] .
175
Jennings Bartik, Pioneer Programmer, 1493. See also LeAnn Erickson, Top Secret Rosies: The Female Computers of WWII (Video, PBS, 2002); Bill Mauchly, ENIAC website,Thomas Petzinger Jr., History of Software Begins with Work of Some Brainy Women, Wall Street Journal, 15
Летом 1945 года шесть женщин были направлены на Абердинский испытательный полигон, где их учили работать с перфокартами IBM и подключать коммутационные панели. «Там у нас происходили длинные споры о религии, наших семьях, политике и нашей работе, — вспоминала Макналти. — Нам всегда было что сказать друг другу» [176] . Дженнингс стала лидером в группе. Она вспоминала: «Мы работали вместе, жили вместе, ели вместе и засиживались часами, обсуждая все на свете» [177] . Поскольку все они были свободными, а вокруг было много одиноких солдат, в кабинках клуба офицеров, где распивались коктейли «Том Коллинз», вспыхнуло несколько ярких романов. Весков нашла себе морпеха, «высокого и довольно красивого». Дженнингс встретила сержанта по имени Пит, который был «привлекательным, но не очень красивым». Он был родом из Миссисипи, а Дженнингс откровенно выражала свое неприятие расовой сегрегации: «Пит сказал мне однажды, что никогда не повезет меня в Билокси, потому что я так откровенно высказываюсь по вопросам дискриминации, что меня там убьют» [178] .
176
Kay McNulty Mauchly Antonelli, The Kathleen McNulty Mauchly Antonelli Story, ENIAC website, https://sites.google.com/a/opgate.com/eniac/Home/ kay-mcnulty-mauchly-antonelli.
177
Fritz, The Women of ENIAC.
178
Jennings Bartik, Pioneer Programmer, 1480.
После шестинедельных тренировок шесть девушек-программисток, отправив своих приятелей в архивы памяти, вернулись в Пенн, где им дали диаграммы размером с плакат и схемы ENIAC. Макналти рассказывала: «Некто вручил нам целую пачку чертежей (это были электрические схемы всех блоков) и сказал: „Нужно выяснить, как работает машина, а затем научиться ее программировать“» [179] . Для этого потребовалось проанализировать дифференциальные уравнения, а затем понять, как перекинуть кабели к нужным электронным схемам. «Самое большое преимущество изучения компьютера ENIAC по диаграммам состояло в том, что мы начали понимать, что можно на нем сделать, а что нельзя, — говорила Дженнингс. — В результате мы могли локализовать проблему, почти наверняка знали, какая именно электронная лампа барахлит». Они со Снайдер разработали систему, позволяющую обнаружить, какая из восемнадцати тысяч электронных ламп сгорела. «Так как мы знали, как система работает, мы научились диагностировать проблемы так же, если не лучше, чем инженеры. Должна сказать вам, что инженерам это нравилось. Они могли переложить отладку на нас» [180] .
179
Autumn Stanley, Mothers and Daughters of Invention (1995), 443.
180
Fritz, The Women of ENIAC.
Снайдер рассказала, как тщательно они составляли диаграммы и графики для каждой новой конфигурации кабелей и переключателей. Она сказала, что фактически они «делали тогда то, что было началом составления программы», хотя они еще не знали слова для этого. Они писали каждую новую последовательность на бумаге, чтобы обезопасить себя. Дженнингс вспоминала: «Мы все чувствовали, что с нас скальп снимут, если мы испортим машину» [181] .
Однажды Дженнингс и Снайдер сидели в реквизированном ими двухэтажном учебном помещении и рассматривали листы, содержащие диаграммы множества блоков ENIAC, когда в класс вошел человек, инспектирующий некоторые конструкции. «Привет, меня зовут Джон Мокли, — сказал он, — я просто проверял, не провалился ли потолок». Ни одна из женщин не встречалась до этого с изобретателем ENIAC, но они ни в малейшей степени не смутились и не испугались. «Рады вас видеть, — заявила Дженнингс, — расскажите, как этот проклятый сумматор работает». Мокли подробно ответил на этот, а потом и на другие вопросы. Когда они закончили, он сказал им: «Ну вот, мой кабинет находится по соседству. Так что в любое время, когда я там, вы можете прийти и задать мне вопрос».
181
Джин Бартик и Бетти Снайдер Холбертон, устный рассказ, записан Tropp, Smithsonian, 27 апреля 1973 г.
Они и заходили почти каждый день. Если верить Дженнингс, «он был чудесным учителем». Он помог женщинам понять, как много других задач (кроме расчета артиллерийских траекторий) ENIAC сможет со временем решать. Он знал, что для того, чтобы сделать его настоящим компьютером общего назначения, он должен вдохновить программистов, которые могли заставить аппаратное устройство выполнять различные задачи. «Он всегда старался заставить нас думать о других проблемах, — рассказывала Дженнингс. — Он всегда просил нас найти обратную матрицу или что-то в таком же духе» [182] .
182
Джин
Женщины-программистки придумали, как сделать подпрограммы для ENIAC, примерно в то же время, что и Хоппер в Гарварде. Они боялись, что логические схемы не настолько мощны, чтобы просчитать некоторые траектории. Придумала решение Макналти. «О, я знаю, я знаю, я знаю, — возбужденно воскликнула она однажды. — Мы можем использовать главную программу для повторения части программы». Они попытались, и это сработало.
«Мы начали обдумывать, как нам написать подпрограммы, вложенные подпрограммы и все такое, — вспоминала Дженнингс. — Это было очень полезно для задач по расчету траекторий, потому что идея состояла в том, чтобы повторять не всю программу, а только ее куски. Для этого нужно было так составить основную программу, чтобы она реализовала это. После того как вы научились делать это, вы понимаете, как составить свою программу в модульном виде. Разработка подпрограмм и модульной организации основной программы были самыми важными этапами в освоении программирования» [183] .
183
Джин Бартик, устный рассказ, Музей компьютерной истории.
Джин Дженнингс Бартик скончалась в 2011 году, а незадолго до смерти с гордостью рассказывала, что все программисты, участвовавшие в создании первого компьютера общего назначения, были женщинами: «Несмотря на то, что мы достигли совершеннолетия в то время, когда карьерные возможности женщин были, как правило, довольно ограниченными, мы приняли участие в становлении компьютерной эры». Это произошло потому, что все-таки многие женщины тогда учились математике и их навыки были востребованы. Была также и забавная причина: парни, с детства помешанные на игрушечных машинках, считали, что именно сборка оборудования была самой важной задачей и, следовательно, мужской работой. «Американская наука и техника была еще более сексистской, чем сегодня, — говорила Дженнингс. — Если бы руководители ENIAC знали, насколько важным окажется программирование для функционирования ЭВМ и насколько сложным оно окажется, они, возможно, трижды подумали бы, прежде чем отдать такую важную роль женщинам» [184] .
184
Jennings Bartik, Pioneer Programmer, 557.
Сохранение программ
С самого начала Мокли и Эккерт понимали, что существуют более легкие способы перепрограммировать ENIAC. Но они не пытались этого сделать, потому что потребовалось бы усложнить аппаратное устройство, и к тому же в этом не было необходимости, поскольку для решения первоначально поставленных задач этого не требовалось. «Не было сделано ни одной попытки обеспечить автоматический выбор настроек под определенную задачу, — написали они в своем годовом отчете за 1943 год по усовершенствованию ENIAC. — Это было сделано из-за желания упростить конструкцию и потому, что предполагалось, что ENIAC будет использоваться в основном для задач определенного типа, в которых одна настройка будет использоваться много раз, прежде чем машину заставят решать другую задачу» [185] .
185
Eckert and Mauchly, Progress Report on ENIAC, 31 декабря 1943 г., в: Nancy Stern, From ENIAC to UNIVAC (1981).
Но больше чем за год до окончания создания ENIAC, уже в начале 1944 года, Мокли и Эккерт поняли, что существует хороший способ сделать компьютеры легко перепрограммируемыми: хранить программы в памяти компьютера, а не загружать их каждый раз заново. Они чувствовали, что это было бы следующим большим шагом вперед в развитии компьютеров. Структура машины с «сохраняемой программой» предполагает, что постановки задач для компьютера могут быть изменены практически мгновенно, без изменения вручную конфигурации кабелей и переключателей [186] .
186
JohnMauchly, Amending the ENIAC Story, письмо редактору Datamation, октябрь 1979 г.
Для сохранения программы внутри машины нужно иметь большой объем памяти. Эккерт перебрал много способов для этого. В докладной записке, составленной в январе 1944 года, он написал: «Программы можно сохранять временно, используя запись на дисках из сплавов или постоянно — на протравленных дисках» [187] . Поскольку такие диски еще не были сделаны, в следующей версии ENIAC он предложил использовать вместо этого более дешевый метод хранения, названный памятью на акустической линии задержки. Она была впервые сконструирована в Bell Labs инженером Уильямом Шокли (о котором ниже будет рассказано гораздо подробнее) и усовершенствована в Массачусетском технологическом институте. Принцип работы акустической линии задержки состоял в сохранении данных в виде импульсов в длинной трубке, заполненной тяжелой, вязкой жидкостью, такой как ртуть. На одном конце трубки электрический сигнал, несущий информацию, в кварцевом преобразователе превращался в волны, какое-то время распространяющиеся в трубке вперед и назад. Поскольку импульсы затухают, их с помощью усилителей восстанавливают. Когда приходит время извлечь данные, импульсы в кварцевом преобразователе опять превращаются в электрические сигналы, и цикл повторяется. В каждой такой трубке могло храниться примерно тысяча бит данных при стоимости, равной одной сотой от стоимости схемы, собранной на электронных лампах. В докладной записке, составленной летом 1944 года Эккертом и Мокли, они предложили следующее поколение компьютеров — преемников ENIAC — снабдить стеллажами с этими линиями задержки на ртутных трубках и хранить в них как исходные данные, так и основную информацию по программам в цифровом виде.
187
Presper Eckert, Disclosure of a Magnetic Calculating Machine, 29 января 1944 г., разрешенные для открытой печати вещественные доказательства в суде см. в архиве Don Knuth, Музей компьютерной истории; Mark Priestley, A Science of Operations (2011), 127; Stern, From ENIAC to UNIVAC, 28.