Plankalkül

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Plankalkül
ParadigmProcedural
Designed byKonrad Zuse
First appeared1948; 70 years ago (1948) – concept first published
Major implementations
Plankalkül-Compiler by the FU Berlin in 2000
Influenced by
Begriffsschrift
Influenced
Superplan by Heinz Rutishauser,
ALGOL 58[1]

Plankalkül (German pronunciation: [ˈplaːnkalkyːl], "Plan Calculus") is a programming language designed for engineering purposes by Konrad Zuse between 1942 and 1945. It was the first high-level (non-von Neumann) programming language to be designed for a computer.

"Kalkül" means formal system – the Hilbert-style deduction system is for example originally called "Hilbert-Kalkül", so Plankalkül means "formal system for planning".[2]

History[edit]

While working on his intended doctoral dissertation, Konrad Zuse developed a formal system of notation for algorithms because no such system was yet known.[3] This notation could only handle linear (unbranched and unlooped) calculation plans.[3] He had intended to submit an early manuscript, written in 1944, as a PhD thesis, but the collapse of Nazi Germany made this impossible.[4]

Near the end of the Second World War, most of the computers Zuse was building were destroyed by Allied bombs. He was able to rescue one machine, the Z4, and move it to the small Alpine village of Hinterstein.[5] After the war it was not possible for Zuse to continue building his computers, so he devoted his time to the development of a higher level programming model and language for them called the Plankalkül.[4]

Notes survive with scribblings about such a plan calculation dating back to May 1939 and in 1942 Zuse began writing a computer chess program in Plankalkül.[6] In 1944 Zuse met with the German logician and philosopher Heinrich Scholz and they discussed Zuse's Plankalkül. In March 1945 Scholz personally expressed his deep appreciation for Zuse's utilization of the logical calculus.[7] Plankalkül was not published at that time owing to a combination of factors such as conditions in World War II and postwar Germany and his efforts to commercialise the Z3 computer and its successors. By 1946, Zuse had written a book on the subject[8] but this remained unpublished.

Only in 1948 Zuse published a paper about the Plankalkül in the "Archiv der Mathematik" but still did not attract much feedback – for a long time to come programming a computer would only be thought of as programming with machine code. In the same year Zuse introduced his programming language at the Annual Meeting of the GAMM.[9]

The Plankalkül was eventually more comprehensively published in 1972 and the first compiler for it was implemented in 1975 in a dissertation by Joachim Hohmann.[10] Other independent implementations followed in 1998 and then in 2000 by the Free University of Berlin.

Zuse was unhappy that the designers of ALGOL 58 did not acknowledge the Plankalkül, even though many of them had been aware of it.[4][11]

Description[edit]

Plankalkül has drawn comparisons to APL and relational algebra. It includes assignment statements, subroutines, conditional statements, iteration, floating point arithmetic, arrays, hierarchical record structures, assertions, exception handling, and other advanced features such as goal-directed execution. The Plankalkül provides a data structure called generalized graph (verallgemeinerter Graph), which can be used to represent geometrical structures.[12]

Plankalkül shared an idiosyncratic notation using multiple lines with Frege's Begriffsschrift of 1879 (dealing with mathematical logic).[clarification needed]

Some features of the Plankalkül:[13]

  • only local variables
  • functions do not support recursion
  • only supports call by value
  • composite types are arrays and tuples
  • contains conditional expressions
  • contains a for loop and a while loop
  • no goto

Data types[edit]

The only primitive data type in the Plankalkül is a single bit, denoted by S0. Further data types can be built up from these.

Terminology[edit]

Zuse called a single program a Rechenplan (i.e. computation plan), and in 1944 he already envisioned a device that should read and then automatically translate a mathematical formulation of a program into machine readable punched film stock – a device which he called Planfertigungsgerät (i.e. plan construction device).[14]

Example[edit]

The original notation was two dimensional. For a later implementation in the 1990s, a linear notation was developed.

The following example shows a program (in a linear transcription), which calculates the maximum of three variables by calling the function max3:

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

Quotations[edit]

In a lecture in 1957 Zuse mentioned his hope that the Plankalkül "after some time as a Sleeping Beauty, will yet come to life".

Heinz Rutishauser, one of the founders of ALGOL:

The very first attempt to devise an algorithmic language was undertaken in 1948 by K. Zuse. His notation was quite general, but the proposal never attained the consideration it deserved.

See also[edit]

Notes[edit]

  1. ^ Rojas, Raúl; Hashagen, Ulf (2002). The First Computers: History and Architectures. MIT Press. p. 292. ISBN 978-0262681377. Retrieved October 25, 2013.
  2. ^ Hector Zenil (ed.), 2012. A Computable Universe: Understanding and Exploring Nature As Computation with a Foreword by Sir Roger Penrose. Singapore: World Scientific Publishing Company. Page 791.
  3. ^ a b Knuth & Pardo 1976, p. 9
  4. ^ a b c Giloi 1997, p. 18
  5. ^ Knuth & Pardo 1976, p. 8
  6. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 216,217.
  7. ^ Hartmut Petzold,Moderne Rechenkünstler. Die Industrialisierung der Rechentechnik in Deutschland. München. C.H. Beck Verlag 1992
  8. ^ (full text of the 1945 manuscript)
  9. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 89.
  10. ^ Joachim Hohmann: Der Plankalkül im Vergleich mit algorithmischen Sprachen. Reihe Informatik und Operations Research, S. Toeche-Mittler Verlag, Darmstadt 1979, ISBN 3-87820-028-5.
  11. ^ Knuth & Pardo 1976, p. 15
  12. ^ Prof. Wolfgang Giloi [de]: Konrad Zuses Plankalkül als Vorläufer moderner Programmiermodelle, November 1990
  13. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 217.
  14. ^ Hellige, Hans Dieter, Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. pp. 45, 104, 105

References[edit]

  • Giloi, Wolfgang (1997), "Konrad Zuse's Plankalkül: The First High-Level "non von Neumann" Programming Language", IEEE Annals of the History of Computing, 19 (2): 17–24, doi:10.1109/85.586068
  • Knuth, Donald Ervin; Pardo, Luis Trabb (1976), The Early Development of Programming Languages (PDF), Stanford University, Computer Science Department, archived from the original (PDF) on 2017-09-12, retrieved 2017-12-28
  • Zuse, Konrad (1943), "Ansätze einer Theorie des allgemeinen Rechnens unter besonderer Berücksichtigung des Aussagenkalküls und dessen Anwendung auf Relaisschaltungen", (i.e. Inception of a universal theory of computation with special consideration of the propositional calculus and its application to relay circuits.) unpublished manuscript, Zuse Papers 045/018.
  • Zuse, Konrad (1948/49). "Über den allgemeinen Plankalkül als Mittel zur Formulierung schematisch-kombinativer Aufgaben". Arch. Math. 1, pp. 441–449, 1948/49.
  • Zuse, Konrad (1972). "Der Plankalkül". Gesellschaft für Mathematik und Datenverarbeitung. Nr. 63, BMBW - GMD - 63, 1972.
  • Giloi, Wolfgang (1997). "Konrad Zuse's Plankalkül: The First High-Level "non von Neumann" Programming Language". IEEE Annals of the History of Computing. 19 (2): 17–24. doi:10.1109/85.586068.

External links[edit]