Życie i Praca Konrada Zuse (wg Horsta Zuse)

Część 5: Język Programowania Plankalkül Konrada Zuse


Od roku 1942 do 1945/46 (w tym samym czasie, gdy opracowywał komputer Z4, co omawiamy w Części 6 tego artykułu) Konrad Zuse opracowywał również zaawansowane sposoby programowania swoich maszyn (tzn. bardziej zaawansowane niż jedynie obliczenia arytmetyczne).

Rozważył wiele problemów, z którymi borykali się inżynierowie i naukowcy, zanalizował i opisał te problemy oraz stworzył tuziny przykładów. Na podstawie tych badań ojciec mój zrozumiał, iż potrzebna będzie skomplikowana metoda do formułowania zadań, które miał rozwiązywać komputer. Na przykład jeden jego pomysł wiązał się z wykonywanie obliczeń wykonywanych przy budowie mostów. W tym przypadku wierzył on, iż dane wejściowe do programu budowania mostów powinny określać rodzaj wymaganego mostu oraz warunki z nim związane w zależności od zastosowanych materiałów i ukształtowania terenu. Opierając się o te dane komputer powinien następnie zaproponować porządny most.

Zuse określał takie maszyny terminem Logistische Maschinen (maszyny logistyczne) w przeciwieństwie do maszyn algebraicznych, takich jak Z1, Z2, Z3 (oraz Z4 opisany w Części 6), które nadawały się jedynie do obliczeń numerycznych. Aby umożliwić rozwiązywanie trudnych problemów technicznych za pomocą programów komputerowych, Konrad Zuse zaprojektował niezwykle zaawansowany język programowania - Plankalkül(4). Oprócz czystych poleceń do obliczeń liczbowych, Zuse również zastosował w nim reguły logiki matematycznej.

(4)Nazwa Plankalkül wywodzi się z połączenia dwóch słów niemieckich: "Plan" i "Kalkül". Konrad Zuse nazywał swoje programy słowem Rechenpläne (Plany Obliczeń).

Termin Kalkül (rachunek) jest dobrze znany w matematyce, więc połączył ze sobą "Plan" oraz "Kalkül", aby stworzyć słowo Plankakül, oznaczające "rachunek dla planu obliczeń".

Z jednej strony użył on zaawansowanej logiki predykatywnej algebry Boole'a jako konstrukcji języka. Z drugiej strony rozwinął mechanizm definiowania złożonych struktur danych, rozpoczynając od prostego bitu (cyfry dwójkowej) i podążając w górę do skomplikowanych, hierarchicznych struktur danych. Aby udowodnić użyteczność języka Plankalkül przy rozwiązywaniu problemów naukowych i technicznych, Konrad Zuse napisał dziesiątki przykładowych programów. W jego notatkach możemy odnaleźć  sortowanie list, strategie poszukiwań, związki pomiędzy parami list, itd.

Konrad Zuse skupiał uwagę na problemach logicznych, które muszą być rozwiązywane za pomocą komputera. Z mojego punktu widzenia nie istniało żadne inne dzieło (w tym czasie lub wcześniej) z taką ilością napisanych programów rozwiązujących problemy inżynierskie. Ostateczna wersja języka Plankalkül została ukończona w Hinterstein (Allgäu) w latach 1946/47, lecz nie opublikowano jej aż do 1972 [ZUSE72], kiedy to Plankalkül został w końcu wydany w druku przez GMD (Gesellschaft für Mathematik und Datenverarbeitung - Towarzystwo Matematyczne i Przetwarzania Danych). Powodem tak późnej publikacji było zaangażowanie Konrada Zuse w utworzoną przez niego firmę Zuse KG poczynając od roku 1949 do 1964, co opisujemy w Części 7 tego opracowania.

Konrad Zuse zastosował niezwykłą technikę poleceń w języku Plankalkül. Każdy element danych był oznaczany za pomocą jednej z liter V (variable - zmienna), C (constant - stała), Z (wynik pośredni) lub R (result - wynik), liczby całkowitej do rozróżniania danych oraz zaawansowanej notacji do zapisu struktury danych tej zmiennej. Głównymi cechami języka Plankalkül są:

Wprowadzenie operacji przypisania, na przykład: V1 + V2 => R1.
Znak => został zaproponowany przed komisją GAMM języka ALGOL 60 przez Rutishausera(5), ale komisja go nie zaakceptowała.

Polecenia takie jak V1 = V2 => R1. Oznacza ono: porównać ze sobą zmienne V1 oraz V2: jeśli są identyczne, to przypisać wartość logiczną prawda do R1, w przeciwnym wypadku przypisać wartość logiczną fałsz. Takie operacje mogły również być wykonywane nad skomplikowanymi strukturami danych.

Programy, wywoływanie podprogramów oraz różne warunki zatrzymania wykonywania obliczeń.

Polecenia warunkowe (lecz bez polecenia ELSE).

Powtarzanie poleceń (pętle).

Działania logiki predykatywnej (orzekającej) i algebra Boole'a.

Zaawansowane operacje na listach i parach list.

Brak rekurencji (wywoływania podprogramu przez samego siebie).

Typy danych takie jak: zmiennoprzecinkowy, stałoprzecinkowy, liczby zespolone.

Tablice, rekordy, hierarchiczne struktury danych, pary list.

Obsługa wyjątków arytmetycznych.

Zastosowania do gry w szachy są opisane na ponad 60 stronach.

Asercje(6) w sensie wprowadzonym później w językach EIFFEL i MODULA-2.

Skomplikowane wyrażenia z nawiasami i zagnieżdżeniami.

(5)Heinz Rutishauser był (wraz z Ambrosem Speiserem) jednym z naukowców pracujących na komputerze Z4 w ETH-Zürich, co opisano w Części 6.

(6)Asercja jest własnością pewnych wartości elementów programu. Na przykład asercja może wyrażać, iż pewna liczba całkowita posiada wartość dodatnią lub że pewne wskazanie jest puste.

Dobre wprowadzenie do języka Plankalkül można znaleźć w [SEBE96]. Jednakże po roku 1949 Konrad Zuse nie miał już czasu na zajmowanie się zastosowaniami języka Plankalkül lub innymi językami programowania, ponieważ w tym czasie założył firmę Zuse KG. Powrócimy do tej firmy w Części 7, lecz najpierw musimy wrócić do roku 1940 ...


Historia życia i twórczości Konrada Zuse została umieszczona na serwerze I-LO za pisemną zgodą syna wynalazcy, prof. dr inż. Horsta Zuse
Z języka angielskiego tłumaczenie wykonał: mgr Jerzy Wałaszek