Летом 1937 года Шеннон взял отпуск в МТИ и поступил на работу в Bell Labs – научно-исследовательский центр, находящийся в ведении компании AT&T[12]. Лаборатории тогда находились на Манхэттене, в той части района Гринич-Виллидж, которая выходит на Гудзон. Это место идеально подходило для превращения идей в изобретения: абстрактные теории сталкивались там с практическими проблемами, а в коридорах и кафе эксцентричные теоретики спорили с инженерами-практиками, грубоватыми механиками и деловитыми менеджерами, и в результате теория и технология взаимно обогащали друг друга. Это сделало Bell Labs примером организации, где были созданы условия, способствующие появлению инноваций цифровой эры, которые гарвардский историк науки Питер Галисон назвал “торговой зоной” или “зоной обмена”. Когда разрозненные практики и теоретики оказывались вместе, они учились находить общий язык, с помощью которого можно было обмениваться идеями и информацией14.
В Bell Labs Шеннон увидел вблизи удивительные возможности схем телефонных систем, где использовались электрические переключатели для маршрутизации вызовов и балансировки нагрузок. Мысленно он начал примерять эти схемные решения к другой привлекавшей его области – к логическим системам, сформулированным за девяносто лет до этого британским математиком Джорджем Булем. Буль революционизировал логику, найдя способы выражения логических выражений в виде символов и уравнений. Он присвоил истинным утверждениям значение і, а ложным – о. Тогда последовательность, составленную из базовых логических операций, таких как “и” (and), “или” (or), “не” (not), “и/или” (either/or), “если/то” (if/then), можно выполнить, используя эти утверждения, так же, как если бы они были математическими уравнениями.
Шеннон понял, что электрические схемы могут выполнять эти логические операции, используя различные комбинации двухпозиционных переключателей (с режимами “включено”/“выключено”). Для выполнения операции “и”, например, нужно два переключателя расположить последовательно, так что для того, чтобы пошел ток, оба должны быть в положении “включено”. Чтобы выполнить операцию “или”, переключатели должны быть расположены параллельно, так, чтобы электрический ток тек, если один из них находится в положении “включено”. Чуть более универсальные переключатели, называемые логическими затворами или вентилями, могли бы ускорить процесс. Другими словами, можно было сконструировать схему, содержащую много реле и логических затворов, которые могли бы выполнять шаг за шагом последовательность логических задач.
(Реле – это просто переключатель, который может открываться и закрываться с помощью электричества, например с помощью электромагнита. Те реле, которые механически – щелчком – открываются, а закрываются с помощью электричества, иногда называются электромеханическими, потому что они имеют подвижные части. Электронные лампы и транзисторы также можно использовать в качестве переключателей в электрической цепи, их называют электронными, потому что они управляют потоком электронов, но никакие физические части в них не движутся. “Логический затвор” – это переключатель, который может иметь один или несколько входов. Например, в случае двух входов логический элемент “и” переключается в положение “включено”, если оба входа находятся в позиции “включено”, а логический элемент “или” переходит в состояние “включено”, если какой-нибудь из входов находится в положении “включено”. Концептуальный прорыв Шеннона состоял в том, что он понял, как они могут быть соединены друг с другом в схемах, чтобы с их помощью можно было решать задачи булевой алгебры.)
Когда осенью Шеннон вернулся в МТИ и рассказал о своих идеях Бушу, тот был восхищен ими и предложил ему включить их в дипломную работу. Шеннон так и поступил, назвал ее “Символический анализ релейных и переключательных схем” и показал, как может быть выполнена каждая из многочисленных операций булевой алгебры. В конце он резюмировал: “Выполнять сложные математические операции с помощью релейных цепей вполне возможно”15. Это стало базовой концепцией, лежащей в основе всех цифровых компьютеров.
Идеи Шеннона заинтересовали Тьюринга, потому что они оказались тесно связаны с его только что опубликованной концепцией универсальной машины, которая могла использовать простые команды, выраженные в двоичном коде, для решения не только математических, но и логических задач. Кроме того, поскольку логика работает по тем же законам, что и человеческий мозг, машина, выполняющая логические задачи, теоретически могла бы имитировать ход мысли людей.
В Bell Labs в то же время работал математик Джордж Роберт Стибиц, в чьи обязанности входило разбираться со все более сложными расчетами, требовавшимися инженерам-телефонистам. Единственными инструментами в его распоряжении были механические настольные арифмометры, и он решил придумать что-то получше, основываясь на шенноновских идеях о возможностях электронных схем решать математические и логические задачи. Однажды поздним ноябрьским вечером он пошел на склад и взял несколько старых электромагнитных реле и электрических ламп. На столе своей кухни с помощью этих деталей, железной коробочки из-под табака и нескольких переключателей он собрал простую логическую схему, которая могла суммировать бинарные числа. Загоревшаяся лампа представляла собой 1, а потухшая – 0. Его жена окрестила схему K-Model – в честь кухонного стола. На следующий день он взял схему в офис и попытался убедить своих коллег, что, будь у него достаточно реле, он мог бы сделать вычислительную машину.
Одной из важных задач Bell Labs было найти способ усиливать передаваемые на большие расстояния телефонные сигналы и при этом отфильтровывать постоянный фон. У инженеров были формулы, в которые входили амплитуды и фазы сигнала, и в решения этих уравнений иногда входили комплексные числа (включающие мнимую часть, пропорциональную квадратному корню из -1). Руководитель Стибица спросил его, сможет ли машина оперировать комплексными числами. Когда он ответил, что это возможно, руководитель одобрил идею и дал ему в помощь группу для строительства такой машины. Машину назвали калькулятором комплексных чисел, и ее создание было завершено в 1939 году. В ней было более четырехсот реле, каждое из которых могло включаться и выключаться двадцать раз в секунду. Это сделало ее потрясающе быстродействующей по сравнению с механическими калькуляторами и мучительно медлительной по сравнению со схемами, собранными полностью из электронных ламп, которые как раз в то время изобрели. Компьютер Стибица не был программируемым, но он показал, что схемы на реле могут обращаться с бинарной математикой, обрабатывать информацию и выполнять логические операции16.
Говард Айкен
А в это же время в 1937-м аспирант из Гарварда по имени Говард Айкен пытался сделать утомительные расчеты для своей диссертации по физике, используя арифмометр. Когда он стал уговаривать университет построить более сложный компьютер для ускорения работы, декан его факультета вспомнил, что на чердаке научного центра Гарвардского университета валялись какие-то медные колесики, оставшиеся от устройства вековой давности, похожие на то, о чем говорил Айкен. Когда Айкен обследовал чердак, он нашел одну из шести демонстрационных моделей разностной машины Чарльза Бэббиджа, которую в нескольких экземплярах изготовил сын Бэббиджа Генри. Айкен пришел в восторг от идей Бэббиджа и перенес набор медных колесиков в свой кабинет. “У нас было два колесика Бэббиджа, – вспоминал он, – это были колеса, которые я позже вмонтировал в корпус своего компьютера”17.
Той осенью, как раз когда Стибиц готовил свою демонстрационную кухонную модель, Айкен написал двадцатидвухстраничную служебную записку своим гарвардским руководителям и специалистам из IBM, пытаясь их уговорить профинансировать современную версию цифровой машины Бэббиджа. Его записка начиналась словами: “Желание сэкономить время и умственные усилия при арифметических вычислениях, а также устранить ошибки, к которым склонен человек, вероятно, так же старо, как сама наука арифметика”18.