⌨ Labor omnia vincit ☮

Z3

Posted in Hacker culture by anaumov on 22.06.2010

После капитуляции III Рейха, многие немецкие инженеры иммигрировали в США. Началась холодная война, военные разработки которой дали начало сегодняшнему интернету. Именно в это время в США разрабатывались прородители тех сетевых технологий, которыми сегодня мы пользуемся каждый день. Принято считать, что и процесс разработки первых компьютеров тоже был связан с холодной войной, однако это не совсем так…
Первой вычислительной машиной с двоичной системой был Z3. Разработан он был в самом сердце Европы – в Германии – немецким конструктором Конрадом Цузе (Konrad Zuse) в 1941 году.

Именно эта, мало кому известная сегодня машина, была первой свободно программируемой в двоичном коде (с плавающей точкой), которая уже тогда управлялась программно.

Только через пять лет, в 1946 году, Артур Бёркс (Arthur Burks), Герман Голдстайн (Herman Goldstine) и Джон фон Нейман (John von Neumann) — опубликуют свою статью «Предварительное рассмотрение логического конструирования электронного вычислительного устройства», в которой сформируют так называемые “принципы фон Неймана”. В последствии этот принцип войдет во все учебники информатики как основопологающий и самый оптимальный для проектирования электонно вычислительных машин. Забавно, но еще несколькими годами ранее двоичный Z3 использовался для расчётов, связанных с конструированием самолётов и управляемых ракет немецким исследовательским институтом аэродинамики.

Википедия говорит, что Z3 обладал всеми свойствами современного компьютера, однако это не совсем так. Выполненной на основе телефонных реле, в этой машине не были реализованны циклы и условные переходы… Однако они были реализованны в машине Z4, над которой Цузе занимался в конце войны и для которой в 1945 году сам же разработал первый в мире язык высокого уровня – Plankalkül (Планкалкюль).
Вот пример кода, который вычисляет максимум для трёх переменных при помощи вызова функции max:

P1 max3 (V0[:8.0],V1[:8.0],V2[:8.0]) => R0[:8.0]
max(V0[:8.0],V1[:8.0]) => Z1[:8.0]
max(Z1[:8.0],V2[:8.0]) => R0[:8.0]
END
P2 max (V0[:8.0],V1[:8.0]) => R0[:8.0]
V0[:8.0] => Z1[:8.0]
(Z1[:8.0] < V1[:8.0]) -> V1[:8.0] => Z1[:8.0]
Z1[:8.0] => R0[:8.0]
END

Plankalkül: The First High-Level Programming Language

Конрад Цузе безусловно не просто выдающийся конструктор, чье имя должен знать каждый уважающий себя программист, но и пожалуй один из первых хакеров, который любил криптографию, компьютеры, которыми занимался just for fun, и разработке которых посвятил всю свою жизнь.
Сегодня ему исполнилось бы 100 лет…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: