Изобретатель компьютера
Сергей Бобровский
Конрад Цузе
Таким титулом награжден немецкий инженер Конрад Цузе, родившийся в 1910 г. и умерший в возрасте 85 лет (более подробно его биография описана в статье “Компьютерный музей”, PC Week/RE, № 9/98, с. 60).
В 30-х годах Цузе занимался проектированием самолетов в компании Henschel Aircraft и ему приходилось выполнять огромные объемы вычислений для определения оптимальной конструкции крыльев. В то время существовали только механические калькуляторы с десятичной системой счисления, и Цузе заинтересовала проблема автоматизации всего процесса вычислений, так как он вынужден был выполнять множество однообразных рутинных расчетов по заданной схеме. В 1934 г. Цузе придумал модель автоматического калькулятора, которая состояла из устройства управления, вычислительного устройства и памяти и полностью совпадала с архитектурой сегодняшних компьютеров.
В те годы Цузе пришел к выводу, что будущие компьютеры будут основаны на шести принципах:
- двоичная система счисления;
- использование устройств, работающих по принципу “да/нет” (логические 1 и 0);
- полностью автоматизированный процесс работы вычислителя;
- программное управление процессом вычислений;
- поддержка арифметики с плавающей запятой;
- использование памяти большой емкости.
Цузе оказался абсолютно прав. Он первым в мире сказал, что обработка данных начинается с бита (бит он называл да/нет-статусом, а формулы двоичной алгебры - условными суждениями), первым ввел термин “машинное слово” (word), первым объединил в вычислителе арифметические и логические операции, отметив, что “элементарная операция компьютера - проверка двух двоичных чисел на равенство. Результатом будет тоже двоичное число с двумя значениями (равно, не равно)”. При этом Цузе не имел никакого представления не только об аналогичных исследованиях коллег в США и Англии, но даже о механическом вычислителе Чарльза Бэббиджа, созданном в XIX веке.
В 1936 г. Цузе запатентовал идею механической памяти. Год спустя он создал работающую память для хранения 12 двоичных чисел по 24 бита и активно занялся созданием первой версии своего вычислителя, которую он сначала назвал Versuchsmodell-1 (V-1), но эта аббревиатура совпала с названием немецких ракет V1, и тогда он переименовал свое творение в Z1. Арифметический модуль мог работать с числами с плавающей запятой (фактически они состояли из двух чисел: одно представляло собой 16-разрядную мантиссу, другое - 7-разрядную экспоненту), осуществлял преобразования двоичных чисел в десятичные и обратно и поддерживал ввод и вывод данных. Устройство ввода программы с помощью перфорированной киноленты сделал Хельмут Шрейер, друг Цузе, который раньше работал киномехаником. Результаты расчетов показывались с помощью электрических ламп. Z1 был закончен в 1938 г. и работал неустойчиво из-за ненадежной механической памяти.
Вычислитель Z3 в Музее техники в Мюнхене
Трудами Цузе заинтересовалось руководство Института аэродинамических исследований третьего рейха. Они взялись финансировать работы над следующей моделью вычислителя Z2. В качестве более надежной элементной базы Конрад выбрал электромагнитные телефонные реле, единственные в то время устройства, пригодные для создания компьютера. Релейный Z2 был построен в апреле 1939 г. и успешно заработал, но Цузе призвали в армию, и хотя у него были очень влиятельные друзья, он отслужил год, прежде чем вернулся обратно в институт. Там он приступил к проектированию более мощной модели - Z3, потом снова был призван на фронт, но через короткое время вернулся в институт окончательно.
Цузе закончил Z3 5 декабря 1941 г. Ввод программы, представлявшей собой последовательность довольно мощных логических команд, по-прежнему происходил с перфорированной киноленты. Память Z3 позволяла хранить 64 слова (14 бит на мантиссу, 7 бит на экспоненту и 1 бит на знак) и состояла из 1400 реле. Для арифметического вычислителя потребовалось 600 реле, и еще 400 реле применялось в устройстве управления. Z3 выполнял не только 4 арифметических операции, но и вычисление квадратного корня, умножение на –1, 0,1, 0,5, 2 и 10. Скорость работы Z3 была примерно равна скорости работы американского компьютера Harvard Mark I, созданного в конце 40-х годов. Z3 выполнял 3-4 операции сложения в секунду и умножал два числа за 4-5 секунд, позволяя при этом обрабатывать числа с плавающей запятой более эффективно, чем Mark I.
Одновременно Цузе занимался проектированием механических устройств дистанционного управления бомбами для повышения точности попадания в цель. Для создания модели требовалось провести очень большие вычисления, и он сначала сделал специализированный компьютер, выполнявший фиксированную последовательность операций. Затем он решил также автоматизировать работу оператора, занимавшегося вводом данных, и первым в мире сделал то, что сегодня называется аналогово-цифровым преобразователем.
Из-за небольшого объема памяти на Z3 нельзя было решать, в частности, системы линейных уравнений, а институту это требовалось. В 1941 г. Цузе решил разработать более мощную модель - Z4. Он понимал все минусы своей машины и хотел создать полноценный компьютер, которому, по оценкам самого Цузе, требовалась емкость памяти как минимум 8 тысяч слов. Но немецкое руководство ответило ему, что Германия так близка к победе, что компьютеры ей не нужны. Во время войны все практические работы в этой области полностью прекратились. По окончании войны Цузе на короткое время был арестован, но всю жизнь отрицал, что выполнял какие-то секретные работы для правительства.
После войны Цузе временно остался не у дел. Z3 был разрушен, Z4 не закончен, зарубежные компьютеры Mark Iи ENIAC еще не работали, и он занялся теоретическими исследованиями. Ему помогал математик Герр Лохмейер. Цузе попытался автоматизировать игру в шахматы, описать правила игры в терминах логических вычислений. Сразу возникли проблемы, хорошо известные сегодня специалистам по искусственному интеллекту, - не было подходящего инструментария для работы со сложными структурами данных. В 1945 г. Цузе создал первый в мире символический язык Plankalkul (термина “алгоритмический язык” еще не существовало) и технику трансляции адресов, кроме того, у него родились идеи использования подпрограмм с параметрами. В то же время Цузе придумал название своему устройству - логическая вычислительная машина.
В начале 50-х годов экономика Германии пошла на подъем. Цузе организовал фирму Zuze KG, построил машину Z11 и использовал ее для решения задач перепланировки земель, проектирования оптических приборов. Уже тогда возникли проблемы создания хорошего ПО. Затем Цузе построил Z22, которая поддерживала общие алгоритмы вычислений, могла работать с произвольными структурами данных, имела достаточный объем памяти и была популярна у многих немецких инженеров и ученых. Цузе полагал, что у него появятся заказы на расчеты от малых и средних компаний, но они тогда не очень нуждались в подобных услугах, и Zuze KG оказалась убыточной. Государственное финансирование работ в компьютерной области началось позже.
Цузе продолжал экспериментировать с различными вычислительными устройствами, сделал автоматическую рисовальную доску - первый прообраз современных CAD. В 1964 г. он предложил автоматическую систему управления крупными ткацкими станками. С 1966 г. Цузе стал работать в компании Siemens AG.
Одним из своих наиболее выдающихся достижений Цузе считал создание языка Plankalkul, который не был привязан к архитектуре и наборам команд конкретного компьютера в отличие от первых языков ассемблера.
В Plankalkul было введено понятие объекта. Объект мог быть примитивным, основанным на двоичных числах произвольной длины (при записи логической единицы Цузе использовал символ L; например, двоичное число 1001 записывалось как L00L), и составным (структуры, рекурсивно определяемые массивы произвольной размерности и т. д.). Битовый массив размерности [n][m] обозначался как n x m x S0. Индексация в Plankalkul всегда начиналась с 0. Разрешалось работать с подмассивами: для трехмерного массива V[][][] можно указать матрицу V[i] и вектор V[i][j]. Для описания переменной использовалась нотация S1 . n (n бит).
Plankalkul допускал использование значительно более сложных синтаксических конструкций. Десятичное число (0-9) определялось с помощью записи S1 . 4 (4 бита, значения от 0 до 15) с наложенным ограничением по диапазону. Структура из трех компонентов записывалась, например, как (A2, S1 . 4, A3), где объекты A2 и A3 определялись ранее. Для упорядочения сложных описаний в языке использовался специальный синтаксис.
В качестве идентификаторов переменных применялось сочетание “буква + число”. Первой буквой могла быть V (параметр ввода), Z (промежуточное значение), R (результирующее значение), C (константа). Программы и подпрограммы (параметры передавались по значению) трактовались как переменные (префикс P). Например, запись P3 . 7 означала вызов 7-й программы 3-й программной группы. Plankalkul предусматривал возможность работы массивов программ, что сегодня только реализуется в распределенных системах!
Цузе придумал оператор присваивания, для которого определил знак. На Цюрихской конференции по Алголу европейская группа хотела ввести в стандарт языка именно его, и только под сильным давлением американской группы, не заинтересованной в введении символов, не поддерживаемых в компьютерах США, согласилась на сочетание :=.
Plankalkul поддерживал мощные синтаксические конструкции и позволял компактно описывать сложные условные циклы. Правда, запись программы была “многоэтажной”, с верхними и нижними индексами, и походила на символические потоковые диаграммы, получившие распространение в США в 60-х годах. По мощности Plankalkul приближался к Алголу 68, но в отличие от него, в Plankalkul не поддерживалась адресная арифметика, что в целом повышало надежность программы. На Plankalkul было написано много самых разных невычислительных алгоритмов: обработки символьной информации, генерации шахматных ходов и др. В музее Retrocomputing museum (www.ccil.org/retro/) автору статьи сообщили, что в память о Цузе планируется сделать компилятор для Plankalkul.
Сегодня работы Цузе известны во всем мире. Он оказал несомненное влияние на развитие европейских компьютерных технологий. Его труды использовались при создании новых компьютеров и особенно при разработке первых алгоритмических языков программирования. Конрад Цузе получил множество наград и призов и заслужил международное признание. В последние годы жизни он занимался преимущественно рисованием. Любовь к изобразительному искусству Цузе сохранил, видимо, с тех пор, как двадцатипятилетним инженером рисовал многочисленные схемы своих первых компьютеров.