Open main menu

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

Plankalkül
ParadigmProcedural
Designed byKonrad Zuse
First appeared1948; 71 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]

Kalkül is the German term for a formal system—as in Hilbert-Kalkül, the original name for the Hilbert-style deduction system—so Plankalkül refers to a formal system for planning.[2]

HistoryEdit

After finishing the Z1 in 1938, Zuse discovered that the calculus he had independently devised already existed and was known as propositional calculus. What Zuse had in mind, however, needed to be much more powerful.[vague] In May 1939 he described his plans for the development of what would become Plankalkül.[3]

While working on his doctoral dissertation, Zuse developed the first known formal system of algorithm notation[4] capable of handling branches and loops.[5][6] In 1942 he began writing a chess program in Plankalkül.[7] In 1944, Zuse met with the German logician and philosopher Heinrich Scholz, who expressed appreciation for Zuse's utilization of logical calculus.[8] In 1945, Zuse described Plankalkül in an unpublished book.[9] The collapse of Nazi Germany, however, prevented him from submitting his manuscript.[5] Although most of his computers were destroyed by Allied bombs, Zuse was able to rescue one machine, the Z4, and move it to the Alpine village of Hinterstein[10] (part of Bad Hindelang).

Unable to continue building computers, Zuse devoted his time to the development of a higher-level programming model and language.[5] In 1948 he published a paper in the Archiv der Mathematik and presented at the Annual Meeting of the GAMM.[11] His work failed to attract much attention.[citation needed] In a 1957 lecture, Zuse expressed his hope that Plankalkül, "after some time as a Sleeping Beauty, will yet come to life."[citation needed] He expressed disappointment that the designers of ALGOL 58 never acknowledged the influence of Plankalkül on their own work.[5][12]

Plankalkül was more comprehensively published[vague] in 1972. The first compiler was implemented by Joachim Hohmann in his 1975 dissertation.[13] Other independent implementations followed in 1998 and 2000 at the Free University of Berlin.[citation needed]

DescriptionEdit

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.[14]

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:[15]

  • 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 typesEdit

The only primitive data type in the Plankalkül is a single bit, denoted by S0, from which further data types can be built up.[citation needed]

TerminologyEdit

Zuse called a single program a Rechenplan ("computation plan"). He envisioned what he called a Planfertigungsgerät ("plan assembly device"), which would automatically translate the mathematical formulation of a program into machine-readable punched film stock.[16]

ExampleEdit

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

See alsoEdit

NotesEdit

  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. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 216.
  4. ^ Knuth & Pardo 1976, p. 9
  5. ^ a b c d Giloi 1997
  6. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 56.
  7. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 216,217.
  8. ^ Hartmut Petzold,Moderne Rechenkünstler. Die Industrialisierung der Rechentechnik in Deutschland. München. C.H. Beck Verlag 1992
  9. ^ (full text of the 1945 manuscript)
  10. ^ Knuth & Pardo 1976, p. 8
  11. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 89.
  12. ^ Knuth & Pardo 1976, p. 15
  13. ^ 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.
  14. ^ Prof. Wolfgang Giloi [de]: Konrad Zuses Plankalkül als Vorläufer moderner Programmiermodelle, November 1990
  15. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 217.
  16. ^ Hellige, Hans Dieter, Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. pp. 45, 104, 105

ReferencesEdit

  • 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 linksEdit