Plankalkül – Wikipedia

2023-03-07 03:34:44

Programming language designed 1942 to 1945

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

Kalkül is the German time period for a formal system—as in Hilbert-Kalkül, the unique identify for the Hilbert-style deduction system—so Plankalkül refers to a proper system for planning.[3]

Historical past of programming[edit]

Within the area of making computing machines, Zuse was self-taught, and developed them with out information about different mechanical computing machines that existed already – though afterward (constructing the Z3) being impressed by Hilbert‘s and Ackermann‘s e book on elementary mathematical logic (cf. Principles of Mathematical Logic).[4] To explain logical circuits, Zuse invented his personal diagram and notation system, which he known as “combinatorics of conditionals” (German: Bedingungskombinatorik). After ending the Z1 in 1938, Zuse found that the calculus he had independently devised already existed and was often known as propositional calculus.[5] What Zuse had in thoughts, nonetheless, wanted to be rather more highly effective (propositional calculus will not be Turing-complete and isn’t in a position to describe even easy arithmetic calculations[6]). In Might 1939 he described his plans for the event of what would turn into Plankalkül.[4] He wrote the next in his pocket book:

Desk on home in Hinterstein [de] the place Zuse labored on Plankalkül

Whereas engaged on his doctoral dissertation, Zuse developed the primary recognized formal system of algorithm notation[7] able to dealing with branches and loops.[8][9] In 1942 he started writing a chess program in Plankalkül.[10] In 1944, Zuse met with the German logician and thinker Heinrich Scholz, who expressed appreciation for Zuse’s utilization of logical calculus.[11] In 1945, Zuse described Plankalkül in an unpublished e book.[12] The collapse of Nazi Germany, nonetheless, prevented him from submitting his manuscript.[8]

At the moment the one two working computer systems on the earth have been ENIAC and Harvard Mark I, neither of which used a compiler, and ENIAC wanted to be reprogrammed for every activity by altering how the wires have been related.[13]

Though most of his computer systems have been destroyed by Allied bombs, Zuse was in a position to rescue one machine, the Z4, and transfer it to the Alpine village of Hinterstein[14] (a part of Bad Hindelang).

The very first try to plan an algorithmic language was undertaken in 1948 by Ok. Zuse. His notation was fairly basic, however the proposal by no means attained the consideration it deserved.

Unable to proceed constructing computer systems – which was additionally forbidden by the Allied Powers[15] – Zuse devoted his time to the event of a higher-level programming mannequin and language.[8] In 1948 he revealed a paper within the Archiv der Mathematik and offered on the Annual Assembly of the GAMM.[16] His work failed to draw a lot consideration.[citation needed] In a 1957 lecture, Zuse expressed his hope that Plankalkül, “after a while as a Sleeping Beauty, will but come to life.”[citation needed] He expressed disappointment that the designers of ALGOL 58 by no means acknowledged the affect of Plankalkül on their very own work.[8][17]

Plankalkül was extra comprehensively revealed[vague] in 1972. The primary compiler was applied by Joachim Hohmann in his 1975 dissertation.[18] Different impartial implementations adopted in 1998[19] and 2000 on the Free University of Berlin.[20]


Plankalkül has drawn comparisons to the language APL, and to relational algebra. It contains task statements, subroutines, conditional statements, iteration, floating-point arithmetic, arrays, hierarchical document constructions, assertions, exception dealing with, and different superior options comparable to goal-directed execution. The Plankalkül offers a knowledge construction known as generalized graph (verallgemeinerter Graph), which can be utilized to symbolize geometrical constructions.[21]

Plankalkül shared an idiosyncratic notation utilizing a number of strains with Frege‘s Begriffsschrift of 1879 (coping with mathematical logic).[clarification needed]

Some options of the Plankalkül:[22]

  • solely native variables
  • features don’t assist recursion
  • solely helps call by value
  • composite sorts are arrays and tuples
  • accommodates conditional expressions
  • accommodates a for loop and some time loop
  • no goto

Knowledge sorts[edit]

The one primitive information sort within the Plankalkül is a single bit or boolean (German: Ja-Nein-Werte – yes-no worth in Zuses terminology). It’s denoted by the identifier . All of the additional information sorts are composite, and construct up from primitive by the use of “arrays” and “data”.

So, a sequence of eight bits (which in trendy computing might be thought to be byte) is denoted by , and boolean matrix of measurement by   is described by . There additionally exists a shortened notation, so one may write as a substitute of .

Kind may have two attainable values and . So 4-bit sequence might be written like L00L, however in circumstances the place such a sequence represents a quantity, the programmer may use the decimal illustration 9.

Document of two parts and is written as .

Kind (German: Artwork) in Plankalkül consists of three parts: structured worth (German: Struktur), pragmatic which means (German: Typ) and attainable restriction on attainable values (German: Beschränkung). Person outlined sorts are recognized by letter A with quantity, like – first consumer outlined sort.


Zuse used quite a lot of examples from chess principle:

Coordinate of chess board (it has measurement 8×8 so 3 bits are simply sufficient)
sq. of the board (for instance L00, 00L denotes e2 in algebraic notation)
piece (for instance, 00L0 — white king)
piece on a board (for instance L00, 00L; 00L0 — white king on e2)
board (items positions, describes which piece every of 64 squares accommodates)
sport state ( — board,  — who strikes,  — risk of castling (2 for white and a couple of for black), A2 — details about cell on which En passant transfer is feasible


Identifiers are alphanumeric characters with a quantity. There are the next sorts of identifiers for variables:

  • Enter values (German: Eingabewerte, Variablen) — marked with a letter V.
  • Intermediate, short-term values (German: Zwischenwerte) — marked with a letter Z.
  • Constants (German: Constanten) — marked with a letter С.
  • Output values (German: Resultatwerte) — marked with a letter R.

Specific variable of some sort is recognized by quantity, written underneath the type. For instance:

, , and so forth.

Packages and subprograms are marked with a letter P, adopted by a program (and optionally a subprogram) quantity. For instance , .

Output worth of program saved there in variable is out there for different subprograms underneath the identifier , and studying worth of that variable additionally means executing associated subprogram.

Accessing parts by index[edit]

Plankalkül permits entry for separate parts of variable through the use of “part index” (German: Komponenten-Index). When, for instance, program receives enter in variable of sort (sport state), then  — offers board state,  — piece on sq. quantity i, and bit quantity j of that piece.

In trendy programming languages, that will be described by notation much like V0[0], V0[0][i], V0[0][i][j] (though to entry a single bit in trendy programming languages a bitmask is usually used).

Two-dimensional syntax[edit]

As a result of indexes of variables are written vertically, every Plankalkül instruction requires a number of rows to jot down down.

First row accommodates variable sort, then variable quantity marked with letter V (German: Variablen-Index), then indexes of variable subcomponents marked with Ok (German: Komponenten-Index), after which (German: Struktur-Index) marked with S, which describes variable sort. Kind will not be required, however Zuse notes that this helps with studying and understanding this system.

See Also

Within the line sorts and might be shortened to and .


Indexes might be not solely constants. Variables might be used as indexes for different variables, and that’s marked with a line, which exhibits by which part index would worth of variable be used:

Using variable as index for other variable, in 2d Plankalül notation Z5-th ingredient of variable V3. Equal to expression V3[Z5] in lots of trendy programming languages.

Task operation[edit]

Zuse launched in his calculus an task operator, unknown in arithmetic earlier than him. He marked it with «», and known as it yields-sign (German: Ergibt-Zeichen). Use of idea of task is without doubt one of the key variations between math and pc science.

Zuse wrote that expression:

is analogous to extra conventional mathematical equation:

There are claims that Konrad Zuse initially used the glyph Ergibt-Zeichen.png as an indication for task, and began to make use of underneath the affect of Heinz Rutishauser. Knuth and Pardo consider that Zuse all the time wrote , and that Ergibt-Zeichen.png was launched by publishers of «Über den allgemeinen Plankalkül als Mittel zur Formulierung schematisch-kombinativer Aufgaben» in 1948. Within the ALGOL 58 convention in Zurich, European contributors proposed to make use of for task character launched by Zuse, however the American delegation insisted on :=.

The variable that shops the results of an task (l-value) is written to the best facet of task operator. First task to the variable is taken into account to be a declaration.

The left facet of task operator is used for expression (German: Ausdruck), that defines which worth might be assigned to variable. Expressions may use arithmetic operators, boolean operators, and comparability operators ( and so forth.).

Exponentiation operation is written equally to the indexing operation – utilizing strains in second notation:

Exponentiation notation in Plankalkül

Management movement[edit]


Zuse known as a single program a Rechenplan (“computation plan”). He envisioned what he known as a Planfertigungsgerät (“plan meeting system”), which might mechanically translate the mathematical formulation of a program into machine-readable punched film stock.[30]


The unique notation was two dimensional.[clarification needed] For a later implementation within the Nineties, a linear notation was developed.

The next instance defines a operate max3 (in a linear transcription) that calculates the utmost of three variables:

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]
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]

See additionally[edit]

  1. ^ “Early Programming Languages / CS208e: Great Ideas in Computer Science” (PDF).
  2. ^ Rojas, Raúl; Hashagen, Ulf (2002). The First Computers: History and Architectures. MIT Press. p. 292. ISBN 978-0262681377. Retrieved October 25, 2013.
  3. ^ Hector Zenil (ed.), 2012. A Computable Universe: Understanding and Exploring Nature As Computation with a Foreword by Sir Roger Penrose. Singapore: World Scientific Publishing Firm. Web page 791.
  4. ^ a b Hans Dieter Hellige, ed. (2004). Geschichten der Informatik. Visionen, Paradigmen, Leitmotive (in German). Berlin: Springer. pp. 113n 152, 216. ISBN 978-3-540-00217-8.
  5. ^ a b Rojas et al. 2004, p. 3.
  6. ^ “Why is propositional logic not Turing complete?”.
  7. ^ Knuth & Pardo 1976, p. 9
  8. ^ a b c d Giloi 1997
  9. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 56.
  10. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 216,217.
  11. ^ Hartmut Petzold,Moderne Rechenkünstler. Die Industrialisierung der Rechentechnik in Deutschland. München. C.H. Beck Verlag 1992
  12. ^ (full text of the 1945 manuscript)
  13. ^ Rojas et al. 2000, p. 3.
  14. ^ Knuth & Pardo 1976, p. 8
  15. ^ Prof. Wolfgang Coy: Was ist Informatik? Zur Entstehung des Faches an den deutschen Universitäten, in: Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 474.
  16. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 89.
  17. ^ Knuth & Pardo 1976, p. 15
  18. ^ Joachim Hohmann: Der Plankalkül im Vergleich mit algorithmischen Sprachen. Reihe Informatik und Operations Analysis, S. Toeche-Mittler Verlag, Darmstadt 1979, ISBN 3-87820-028-5.
  19. ^ Description of Plankalkül-Compiler by Wolfgang Mauerer
  20. ^ Rojas et al. 2000, p. 2.
  21. ^ Prof. Wolfgang Giloi [de]: Konrad Zuses Plankalkül als Vorläufer moderner Programmiermodelle, November 1990
  22. ^ Hans Dieter Hellige (ed.): Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. p. 217.
  23. ^ Hellige, Hans Dieter, Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, ISBN 3-540-00217-0. pp. 45, 104, 105


Exterior hyperlinks[edit]

Source Link

What's Your Reaction?
In Love
Not Sure
View Comments (0)

Leave a Reply

Your email address will not be published.

2022 Blinking Robots.
WordPress by Doejo

Scroll To Top