Вчера

Для чего появляются "первые"?

В "КВ" №5 была опубликована "Забытая история о первом электронном цифровом" - о компьютере Атанасова-Берри, или "ABC". Был ли это первый компьютер? Ответ полностью определяется тем, что обозначается словом "компьютер". Если это буквально "вычислитель" и не более, то первым цифровым компьютером были десять пальцев (следующими - разнообразные счеты), а линейки и рычажные весы следует признать первыми аналоговыми компьютерами - ведь они вычисляли суммы и разности расстояний и масс (позже логарифмические линейки позволили умножать и делить). Банальность? Да, определения требуют осторожности. Если "компьютер" - это "цифровой механический вычислитель", то следует обратиться к интересным заметкам Д. Марголина "Цифровые пионеры". Названные там "первые" вычислительные машины механизировали, но не автоматизировали процесс вычислений. Введение слова "автоматический" в определение понятия "компьютер" переносит нас сразу в 30-е годы XX века. В нашем веке было много "первых" компьютеров: "первый автоматический механический аналоговый", "первый электромеханический двоичный", "первый советский" и т.д. Д. Марголин упоминает, например, "Baby" - компьютер, созданный довольно-таки поздно, в 1948 году, в Манчестерском университете и также претендующий на первородство. Что ж, претензии "Baby" обоснованы, если "компьютер" понимать как "цифровую электронную вычислительную машину с загрузкой программ в оперативную память". Впрочем, современный пользователь PC просто обалдеет, если его посадят за машину без операционной системы и монитора, а геймер и вовсе не сочтет компьютером нечто без CD-ROM'а и мощного графического ускорителя, - у них свои определения.

Так чем же был "ABC"? Просто первым в мире "электронным цифровым автоматическим вычислителем", большинство конструктивных особенностей которого предвосхитило то, что стало нормой лишь через десяток-другой лет. Да, этот компьютер был жестко "запрограммирован" паяльником. Да, он работал со сбоями и по дурному стечению обстоятельств так и не был отлажен. Да, тридцать лет про него знали всего несколько человек в мире. Но он на два года обогнал британский компьютер "Colossus" (о котором тоже 32 года почти никто не знал), названный "самым первым" в "Книге рекордов Гиннесса". И именно он, "ABC", был родным отцом машин "ENIAC" и "EDVAC", вошедших во все анналы кибернетики. Но не будем заострять внимание на вопросах первородства. Поговорим лучше о другом - о том, что привело к появлению всех этих "первых" компьютеров.

Достаточно одного взгляда на историю вычислительных устройств, чтобы заподозрить человечество в патологической любви к вычислениям. На самом деле люди очень не любят считать, исключая особые случаи безумия. Но с тех пор, как они начали считать, им приходится делать это все больше и больше, чтобы оставаться людьми. В древнем Вавилоне и Египте изобрели и использовали "цифровой компьютер" - счеты - вовсе не для удовольствия. В те далекие от нас тысячелетия уже существовала плановая экономика в масштабах государства, производился скрупулезный учет и контроль больших ресурсов и затрат, огромных потоков товаров и рабочей силы; инженеры рассчитывали каналы, плотины, бассейны, мосты, пирамиды и храмы; астрономия имела не столько культовое, сколько народно-хозяйственное значение, и в вычислениях использовала до семи знаков точности. Честно говоря, инженерное и бухгалтерское вычислительное могущество той древнейшей мегалитической цивилизации совсем затмевает последующие скромные успехи греков, римлян, индусов, византийцев. Впрочем, когда арабы передавали эстафету от древнего Востока юной Европе, точность вычислений в астрономии доходила уже до девяти знаков. Европейцы не интересовались плановой экономикой и строительством пирамид, зато оказались искусными механиками и зодчими, кораблестроителями и мореплавателями, и потому считать им приходилось много. Большинство технических расчетов не требовало более двух знаков точности, и изобретенный в середине нашего тысячелетия "аналоговый компьютер" - логарифмическая линейка - еще 25 лет назад имелся у каждого уважающего себя инженера. Расцвет мореплавания в XVI-XIX веках потребовал такого количества высокоточных астрономических таблиц, что изобретателям-механикам пришлось наступать и на цифровом фронте: так родилась вереница "цифровых механических компьютеров", причем последние из этих могикан дожили до 70-х годов нашего века не в музеях, а на рабочих столах. Бурное развитие точных фундаментальных и прикладных наук привело в XIX-XX веках к экспоненциальному взрыву объемов вычислений, потому европейской цивилизации, уже метастазировавшей в Америку, пришлось изобретать разного рода "автоматические компьютеры". Например, Атанасов создал свой "ABC" после изнурительных расчетов атома гелия (а ведь проще только атом водорода); Мочли заинтересовал своих военных спонсоров тем, что "ENIAC" будет быстро рассчитывать таблицы артиллерийской стрельбы (и это получилось). Ну а чего стоит современное численное моделирование термоядерного оружия... Не следует забывать и возродившуюся в XX веке потребность в "учете и контроле", то есть в интенсивных экономических и финансовых вычислениях. А вот писать, рисовать и играть на компьютере - это все пришло вторым эшелоном и на уже готовые технологии. Все-таки первые мегагерцы и мегабайты, первые векторные и RISC-процессоры, первые доли микрона и килобайты внутреннего кэша - и много еще чего "первого" было порождено именно потребностью человечества СЧИТАТЬ БОЛЬШЕ И БЫСТРЕЕ, считать целочисленно и с плавающей точкой. Но нет правил без исключений. Один из первых - компьютер "Colossus" - родился иначе. У его колыбели стояла Первая Криптографическая Война.

Германия начала вторую мировую войну хорошо вооруженной. У нее были лучшие самолеты, танки и подводные лодки, были и лучшие в мире армейские шифровальные машины. Назывались они "Enigma" - "Загадка". "Enigma" представляла собой простое, дешевое, надежное и компактное электромеханическое устройство, что обусловило ее широкое применение в германской армии для шифрования и дешифрования сообщений, передаваемых по радио телеграфным кодом между штабными и полевыми подразделениями (например, между штабом немецкого ВМФ и подводной лодкой). Типичная "Enigma" состояла из алфавитной клавиатуры на 26 букв, трех "роторов", "рефлектора" и индикаторной панели с 26 лампочками - по одной на букву. Роторы были дисками, вращающимися на общей оси независимо друг от друга посредством шестереночного механизма. На обеих сторонах диска имелось по 26 контактов, причем проложенные внутри диска проводники попарно соединяли контакты одной стороны с определенным образом соответствующими им контактами другой стороны. Рефлектор также был диском на той же оси, но неподвижным и имеющим 26 контактов только с одной стороны; его контакты соединялись друг с другом попарно проводниками в определенном порядке. Схемы попарных соединений контактов на рефлекторе и каждом из трех роторов были различны между собой и, в общем-то, произвольны, но одинаковы для всех машин данного типа. Роторы соприкасались между собой своими контактами, внешние контакты первого ротора соприкасались с 26 неподвижными контактами, соединенными с клавиатурой, а внешние контакты третьего ротора соприкасались с контактами неподвижного рефлектора. Кодирование сообщения производилось побуквенно следующим образом. Сначала оператор поворачивал каждый из трех роторов в предопределенное для данного сообщения исходное положение. Затем он нажимал на клавиатуре клавишу с первой буквой сообщения, чем посылался электрический сигнал на соответствующий сектор-контакт внешней стороны первого ротора. Этот сигнал выходил из первого ротора и входил во второй ротор уже в другом секторе - за счет коммутирующих проводников внутри первого ротора. Итак, первый ротор производил перестановку 26 букв алфавита. Затем второй и третий роторы делали еще две последовательные перестановки, после чего четвертую перестановку делал рефлектор, который поворачивал сигнал обратно на третий ротор. Прохождение сигналом трех роторов в обратном порядке обеспечивало еще три перестановки 26 символов. Наконец, после семи перестановок сигнал выходил из внешнего сектора-контакта первого ротора и на индикаторной панели зажигал лампочку, соответствующую первой букве зашифрованного сообщения. Вдумчивый читатель тут же возмутится: зачем нужны были эти "навороты", если произведение семи перестановок символов эквивалентно некоторой одной перестановке? Затем, что после кодирования каждой буквы сообщения первый ротор автоматически поворачивался шестереночным механизмом на 1/26 оборота, и следующая буква шифровалась уже по совсем другой результирующей перестановке символов. После кодирования 26 букв первый ротор, сделав полный оборот, возвращался в исходное положение, зато тогда второй ротор поворачивался на 1/26 оборота. Третий - аналогично. Исходное положение всех трех роторов и результирующая перестановка символов восстанавливались только после шифрования текста объемом 26 в кубе (17576) букв. Расшифровать сообщение было так же просто, как и зашифровать: достаточно было взять такую же машину "Enigma", установить роторы в то же самое исходное положение и, вводя с клавиатуры зашифрованное сообщение, читать на индикаторной панели расшифрованное. В этом свойстве "обратимости" машин "Enigma" заключалось не только удобство их применения, но и их уязвимое место.

Если бы об устройстве "Загадки" ничего не было известно, то взломать сделанные ею шифровки было бы практически невозможно. Но перед войной французская разведка добыла копию служебной инструкции для операторов этих машин. Этой информацией французы поделились с поляками, а польские специалисты сумели разгадать схемы соединений контактов на роторах и рефлекторе, анализируя большое количество немецких шифровок посредством имитатора "Загадки", собранного на электромагнитных реле. Но началась война, и немцы ввели в свои шифровальные машины два усовершенствования. Во-первых, число роторов было доведено до пяти, и оператор устанавливал в машину три из них в порядке, определяемом секретной инструкцией. Во-вторых, на входе-выходе блока роторов появилась дополнительная коммутационная панель, производящая еще одну перестановку на шести или семи парах символов. Эстафету в криптографической войне у поляков приняли англичане, для которых расшифровка сообщений германского военно-морского флота имела огромное значение. Дело в том, что немецкие подводные лодки блокировали Британские острова, и там на продовольствие и ряд товаров пришлось даже ввести столь унизительную для англичан карточную систему распределения (нам она знакома по недавним мирным годам "перестройки"). Британские военные собрали смешанную группу из специалистов по шифрам и математиков (в числе которых был знаменитый А.Тьюринг) в викторианской усадьбе Блетчли-Парк в Бакингемшире и окружили эту группу строжайшей секретностью и неограниченным финансированием. Первой задачей группы было раскрыть тайну новой коммутационной панели "Загадки". Тьюринг с коллегами справился с этим, создав электромеханическую машину на реле, аналогичную польской и названную "Бомба", потому что она выразительно тикала, перебирая комбинации соединений в немецкой "Загадке". Задача решалась методом "вероятного слова": предполагалось, например, что в шифровке пятибуквенное слово CZTUK обозначает UBOOT (немецкое сокращение "подводная лодка"), и затем "Бомба" перебирала возможные соединения в "Загадке", совместимые с этим предположением и позволяющие прочесть какие-либо другие слова шифровки. Но "Бомба" недолго побеждала "Загадку". Немцы применяли все более и более замысловатые и засекреченные схемы исходных установок роторов и меняли их все чаще. Производительности английской релейной машины не хватало, и все чаще шифровки взламывались слишком поздно. С целью поднять производительность "Бомбы" Тьюринг с коллегами применил радикальное средство - изменил элементную базу дешифрующей машины. В те годы самыми быстрыми переключающими элементами были электронные лампы. Из полутора тысяч таких ламп и массы прочих радиодеталей был собран "Colossus" - дешифрующая машина колоссальной производительности, и "Загадке" пришел конец. Сам факт существования "Колосса" держался в тайне до 1975 года. Можно спорить о том, был ли "Колосс" первым компьютером. Но он, несомненно, был первым в истории компьютером, приблизившим победу в войне.

В заключение мне пора покаяться: рассказывая о рождении "Колосса", я использовал кинематографический прием под названием "оживляж". На самом-то деле читатель отлично видит, что "Colossus", подобно остальным "первым", был вызван к жизни все той же острой необходимостью СЧИТАТЬ БОЛЬШЕ И БЫСТРЕЕ. С той лишь разницей, что он выполнял логические вычисления.

Сергей СЕРЫЙ