Двадцатый век сопровождают разными эпитетами: электрический век, век индустриального развития, век революций и падения колониальных империй. Так же из-за событий первой половины, его называют веком мировых воин. Предыдущий век тоже трудно назвать мирным, но из-за развития транспорта и глобализации экономики войны стали действительно иметь мировой характер. Если Первая мировая война затронула в основном западную цивилизацию, то Вторая мировая подожгла уже весь глобус. Однако, в рамках истории программирования, нас интересуют не сами войны, а то как они повлияли на развитие вычислительной техники и соответственно на появление новых научных теорий, а в конце концов и отдельной профессии и экономической отрасли.
Как было отмечено в предыдущей части, предпосылок к зарождению новых информационных технологий было несколько. В числе которых потребность в глубокой автоматизации коммуникационных систем. Создание гигантских коммутационных телефонных узлов и необходимость в шифровании информации передаваемой по телеграфу и, соответственно, заинтересованность во взломе шифров. Это чуть позже стало очевидно, что новые технологии и теории хорошо применимы и для автоматизации счета и прочих прикладных проблем.
Важное тут - автоматизация человеческого труда. Все применения вычислительных устройств и программ к ним возникли не в результате какого-то спортивного интереса или просто в следствии появления тех или иных технологий, а в целях экономии человеческого ресурса. Словом "компьютер" изначально называлась конкретная профессия. "Коммутаторами" (операторами коммутаторов) так же иногда назывались вполне себе живые специалисты по переключению телефонных линий. Это нынче существуют разнообразные применения компьютеров в решении задач, которых бы и не было без компьютеров. Но и сегодня главным образом основные вычислительные мощности направлены на решение задач автоматизации.
Что такое автоматизация? Что такое автомат? Автомат - нечто, выполняющее действия без участия человека, согласно некоего пошагового алгоритма - программы. Соответственно автоматизация - создание таких устройств. В том числе и программ, которые исполняются некоторыми универсальными устройствами. Либо автомат сам представляет из себя внедренный в него в физическом смысле порядок действий, либо исполняет эти действия по инструкциям поступающим извне.
Разнообразные механические автоматы были известны еще с незапамятных времен. Это разнообразные открыватели дверей, самовозгорающиеся факелы, куклы, носившие скорее развлекательный характер, чем утилитарный. Практически применимые автоматы использовались для регуляции - например при переполнении каких-то сосудов водой или при смене направления ветра. Дошедшие до наших времен механические автоматы это разнообразные реле - автоматические переключатели. Именно их электрическим вариантом и воспользовались первые инженеры создатели современных вычислительных машин.
Однако до вычислительных машин электрические реле, и более сложные автоматы на их основе, применили, как было упомянуто в предыдущей части, в телеграфах. А именно, сперва для автоматического чтения и записи, для кодировки, а затем и для шифрования. Ну, а эта история, как читатель мог уже догадаться, связана со знаменитой "Энигмой", Второй мировой войной и Аланом Тьюрингом. Который, как известно, изобретатель как-раз такой универсальной, хоть и теоретической, машины имени себя, которая может выполнять любые алгоритмы - автоматизировать.
Вопреки распространенному мнению, "Энигму", созданную в 1918, научились взламывать задолго до событий в Блечли Парке в конце Второй мировой войны. В Польском бюро шифров в 1933 году три математика Мариан Режевский, Ежи Розицкий, Генрих Зыгальский сумели сформулировать методику взлома шифра при помощи специальных устройств, которые впоследствии назовут "криптологическими бомбами"[1]. Это событие можно установить как первый успешный факт применения математики для криптоанализа. До этого, в том числе в более знаменитом нынче чем Польское Бюро, Блечли Парке, дешифровкой и взломом занимались по большому счету люди имеющие отношение скорее к лингвистике: писатели, литературоведы, просто эрудиты и любители кроссвордов и головоломок. Применение методов комбинаторики, статистики и формальной логики к криптоанализу почему-то вплоть до начала войны носило спорадический характер и не воспринималось всерьез.
Только после начала военных действий в Польше, когда вынужденные эвакуироваться сотрудники Польского бюро передали свои наработки британцам, началось планомерное и качественно более организованное исследование математических проблем связанных с криптографией. Так, после объявления Германией войны Британии в сентябре 1939 года решено было срочно засекретить работы и нанять группу специалистов для дальнейшей работы над "Энигмой". Попадание тогда перспективного молодого математика Алана Тьюринга в секретную группу до определенной степени было случайным. Неизвестно как бы сложилась судьба самого Тьюринга, Блечли Парка, первых ЭВМ, да и в целом открытия второго фронта и второй мировой войны, если бы он не попался на глаза военных.
Британцы любят повторять, что благодаря работе британской группы войну удалось сократить аж на месяцы а то и годы[3]. Основания для этого есть. Однако надо понимать, что дешифровкой занимались не только на британском острове. Этим плотно занимались в США и, разумеется, в СССР. Насколько продвинулись наши и американские криптоаналитики ко времени открытия западного фронта до сих пор остается тайной, но очевидно, что наверняка пришлось бы, действительно отложить высадку в Нормандии, не будь тогда известны положение дел и планы Кригсмарине - немецкой подводной флотилии в Атлантике. Возможно, время высадки бы не изменилось, но обошлось бы значительно большими потерями среди союзных войск.
Таким образом слова о дополнительных годах войны наверное всё-же сильно притянуты за желание обозначить важность своих достижений и величину вклада Британии в окончание войны. Единственный неоспоримый факт это то, что частный вклад Тьюринга в общий вклад группы, а в будущем и в информатику, оказался колоссальным в прямом и переносном смысле. Идеи универсальной машины и зачатков теории автоматов Тьюринга помогли инженеру Томми Флауерсу в 1943 году наконец запустить первый цифровой, электронный, логический автомат "Колосс" (англ. Colossus)[2]. Можно поспорить, о том являлся ли Колосс полноценным прототипом современных компьютеров, поскольку машина была узкоспециализированной и не предполагала программирование. Но то что идеи и принципы использованные в этой машине впоследствии нашли широкое применение в дальнейших разработках не вызывает сомнений.
Тут надо отметить, что XX век также называют атомным или ядерным. И тут, конечно же, на первом плане возникает образ атомной бомбы и "ядерного гриба". С другой стороны, понятно, что ни бомба, ни затем мирный атом, не стали бы возможны без более фундаментальных открытий связанных с устройством материи. В конце предыдущего века было установлено, что за так называемую термоэлектронную эмиссию (свечение разряда) ответственны некие частицы - электроны, входящие в состав "неделимого" до сих пор атома. А модель атома Эрнеста Резерфорда, предложенная им в 1911, а так же развитая на этом основании квантовая теория Нильса Бора, позволила создать сперва элегантные по своему принципу действия и потенциалу применения электронные ламповые диоды и триоды. Ну а затем, как мы понимаем, были открыты такие же свойства полупроводников.
Именно более компактные и надежные электронные лампы, как бы это не прозвучало сейчас, стало возможно поставить в машине "Колосс", для воплощения более сложных и эффективных логических цепей, вместо куда более громоздких и медленных релейных схем, использовавшихся в криптобомбах. Так компьютеры впервые стали "электронными". (Не от электричества, а от электронных ламп).
Новаторство же Тьюринга заключалось в применении элементов своей новой теоретической машины, а конкретно её детерминированного собрата - конечного автомата. Можно ли было воплотить конечный автомат без использования электронных ламп я оценивать не возьмусь, но с диодами и триодами достичь этого точно оказалось значительно проще.
Принцип работы предыдущих счетных и вычислительных систем страдал одним значительным изъяном. Все они полагались на некий промежуток времени, который был бы достаточен для завершения проворачивания всех узлов механизмов или переключение всех реле. Кажется, что этот промежуток не очень значителен по сравнению с временем, которое требуется человеку, на то что бы проконтролировать порядок ввода данных и получение результата. Однако даже набор телефонного номера имеющий уже более двух-трех цифр занимает известное и заметное время. И что, например, случится внутри АТС, если наложить серию импульсов набора одной цифры и следующей? Диск телефона призван как-раз не допустить такого сценария, так как вращается с определенной максимальной скоростью.
А что если результат набора номера не нужно контролировать, и результатом должно стать не одноразовое подключение к абоненту, а скажем повтор набора номера пока абонент не ответит? Или может быть зачем-то нужно перебрать телефонные номера по списку пока не отзовется первый абонент? С похожей задачей столкнулись крипотоаналитики. Нужно было перебирать положения роторов взламываемой шифровальной машины, пока в какой-то момент на выходе не получится какой-то осмысленный текст. То есть проблема задержки встала в полный рост. Инженера встали перед вопросом, как же отсекать конец предыдущего цикла вычислений и начало следующего. Так, конечный автомат, конструктивно принимающий на вход дискретные сигналы и выдающий за каждый цикл работы единственное действие оказался очень кстати. А электронные лампы, не имеющие механических элементов и работающие фактически со скоростью света практически ликвидировали понятие рабочего интервала внутри логической цепи. Появилось понятие такта и их генератора.
Роторы шифровальных машин, которые в "Криптологических бомбах" проворачивались механически, были заменены в "Колоссе" цифровыми моделями наборов переключателей. Лента с кодом Бодо считывалась оптико-электрическим датчиком, а перебор позиций и сравнение результата получилось ускорить в несколько десятков раз. Такт работы машины занимал невероятные по тем временам 120 миллисекунд[4]. Скорость работы стали измерять в Герцах.
В итоге, "машина Лоренца", более сложный автоматический аналог "Энигмы", под которую был изначально заточен "Колосс", была практически побеждена - взлом очередных ключей занимал значительно меньше времени, чем немцы могли их менять на подводных лодках.
Естественно, это очень сжатая и поверхностная история. Тем кому интересно подробнее узнать о всех перипетиях связанных с "Энигмой", "машиной Лоренца", "Блечли Парком", кодом "Рыба-меч" рекомендую ознакомиться, нет не с фильмом "Игра в имитацию", а с роликом Сурена Цормудяна "ENIGMA / Тайнопись войны / И немного про кино".
В частности, в ролике много времени посвящено тому какими жертвами и трудом добывались экземпляры оборудования и образцы ключей - данных для "Крипотографических бомб" и "Колосса". Но это уход в сторону и вещи мало связанные с программированием. А то что связано с программированием, так это то, что образцы ключей добытые в ходе боевых действий позволяли до известной степени автоматизировать процесс дешифровки.
Без известных ключей проверка результатов дешифровки производилась людьми и осуществлялась путем чтения полученного в результате каждого варианта положения роторов текста и заключения о его осмысленности. При наличии же известных ключей можно было сперва откалибровать машину таким образом, что бы она однозначно выдавала заранее известный вариант, а затем с помощью эвристических методов ограничить набор перебираемых ключей. Калибровка машины по известному ключу известна нынешним программистам под методикой модульного тестирования (англ. Unit-testing), когда заведомо известно, что алгоритм до некоторой степени корректен. Эта методика в том или ином виде под теми или иными названиями далее использовалась при создании всех рабочих вычислительных устройств и большинства серьезных программ к ним. В первую очередь в военном приложении.
Далее военные осознали, что кроме криптоанализа неплохо бы применять похожие вычислительные системы и принципы, для уточнения артиллерийских методичек и расчетных таблиц без дорогого и медленного процесса практического сбора экспериментальных данных. Методики аналитической баллистики были известны военным задолго до изобретения вычислительных машин, в том числе благодаря российскому ученому швейцарского происхождения Леонарду Эйлеру, тем не менее параметры аналитической модели и конкретные таблицы для конкретных орудий и боеприпасов составлялись на основе эмпирических данных, получаемых путем опытных стрельб в разных климатических и географических условиях.
Стало понятно, что вычислительные машины, работающие на основе аналитических алгоритмов и численных методов, и параметры которых можно было бы откалибровать ограниченным набором данных, способны достаточно точно "предсказывать" поведение снарядов во всех мыслимых условиях, даже в тех, в которых испытания практически невозможны. Причем всегда можно протестировать модель, что при подстановке каких-то определенных условий результат совпадет с неизвестными заранее опытами.
Считается, что одной из причин провала Вермахта в Африке стало не снижение боеспособности войск, болезни или какие-то другие причины связанные с военной стратегией или тактикой, а банально непригодность артиллерийских таблиц к климатическим условиям Северной Сахары. Орудия немцев просто стали напропалую мазать, чем было полностью практически ликвидировано техническое превосходство сухопутной армии над британской, хорошо прикрытой с моря и в меньшей мере страдавшей от перегрева орудий, боеприпасов и сухого африканского воздуха[5].
Данное обстоятельство возвращает нас к еще одному, претендующему на первенство, и ранее упомянутому, компьютеру Z3 Конрада Цузе. Информации относительно деятельности Цузе осталось мало, как и документов, подтверждающих работоспособность и технические характеристики серии построенных им устройств. Доподлинно известно лишь о том, что вновь запущенная лаборатория, в которой трудился Цузе, была уничтожена при бомбардировке Берлина в 1943 году. Так сложилось, что в 1941 году после презентации первой машины Z правительство Германии в начале войны не посчитало работу Цузе важной для военного времени. Разработка второй и третьей машины велась практически личными усилиями инженеров и компании "Сименс АГ". И только в 1943 году Люфтваффе решило применить изыскания Цузе в инженерных целях[6]. Неизвестно как бы сложилась судьба Африканской кампании нацистской Германии, если бы баллистические таблицы были подкорректированы с помощью вычислительных машин.
Позднее в Германии по сохранившимся чертежам и уцелевшим деталям была предпринята попытка воссоздания копии Z3. Насколько она соответствует оригиналу сказать сейчас сложно. Да и влияния на развитие вычислительной техники и информатики ни машина, ни труды Цузе, сколь-нибудь ощутимого, не оказали. Сам Цузе при бомбардировке не пострадал, был эвакуирован из Берлина и до конца войны не предпринимал попыток создания своей 4-й по счету машины. А после окончания войны и рассекречивания трудов стран участниц войны, выяснилось, что Цузе уже несколько опоздал.
Говорить, что война не повлияла бы на развитие информационных технологий и создание вычислительных устройств, и компьютеры так или иначе, раньше или позже, всё-равно бы появились в мирных целях и по вполне естественным причинам, наверное можно. Война послужила акселератором событий и причиной, по которой были брошены значительные усилия государств и отдельных людей.
С другой стороны по всему миру работы и взаимодействие ученых по дальнейшим изысканиям в области теории информации, автоматов, алгоритмов были засекречены и фактически поставлены на паузу. Внимание ученых было сильно рассредоточено на конкретные военные задачи. И с этой точки зрения война затормозила развитие теоретической базы. И более всего отрицательно отразилась, конечно, на всём, в том числе науке и технике, в СССР.
Нельзя говорить и об однозначной и единственной роли войн в создании компьютеров. Как видно из примера Цузе, и как далее убедимся в этом в следующей части, была и альтернативная дорога, по которой могли развиваться события даже без участия военных. Это и, как и было сказано ранее, телефонная связь, и экономические причины, а также еще один эпитет применяемый к XX веку - космическая эра. О том как военные машины и программы к ним стали приносить пользу народному хозяйству и позволили человечеству покорить космос в следующей части.
1. Лайнер Л. Погоня за "Энигмой". Как был взломан немецкий шифр. URL: https://pub.wikireading.ru/75044
2. Lee, John A. N. (1995). International Biographical Dictionary of Computer Pioneers. Taylor & Francis. p. 306. URL: https://books.google.ru/books?id=ocx4Jc12mkgC&q=tommy%2520flowers%2520bsc&pg=PA306&redir_esc=y#v=onepage&q=tommy%2520flowers%2520bsc&f=false
3. The National Museum of Computing, Block H, Bletchley Park. Colossus. URL: https://www.tnmoc.org/colossus
4. Sale T. The Colossus. URL: https://www.codesandciphers.org.uk/virtualbp/fish/colossus.htm
5. Blumberg A. Rommel’s Failed Gamble: The “Six Days’ Race”. URL: https://warfarehistorynetwork.com/article/rommels-failed-gamble-the-six-days-race/
6. Swaine M. R. Zuse computer. Britannica. B URL: https://www.britannica.com/technology/Zuse-computer
Запощено под Сергей Прокофьев - Симфония №7