History of programming
In the domain of creating computing machines, Zuse was self-taught, and developed them without knowledge about other mechanical computing machines that existed already -- although later on (building the Z3) being inspired byDescription
Plankalkül has drawn comparisons to the language APL, and to relational algebra. It includes assignment statements,Data types
The only primitive data type in the Plankalkül is a single bit or boolean (german: Ja-Nein-Werte - yes-no value in Zuses terminology). It is denoted by the identifier . All the further data types are composite, and build up from primitive by means of "arrays" and "records". So, a sequence of eight bits (which in modern computing could be regarded asExamples
Zuse used a lot of examples from chess theory:Identifiers
Identifiers are alphanumeric characters with a number. There are the following kinds of identifiers for variables: * Input values (german: Eingabewerte, Variablen) — marked with a letter V. * Intermediate, temporary values (german: Zwischenwerte) — marked with a letter Z. * Constants (german: Constanten) — marked with a letter С. * Output values (german: Resultatwerte) — marked with a letter R. Particular variable of some kind is identified by number, written under the kind. For example: : , , etc. Programs and subprograms are marked with a letter P, followed by a program (and optionally a subprogram) number. For example , . Output value of program saved there in variable is available for other subprograms under the identifier , and reading value of that variable also means executing related subprogram.Accessing elements by index
Plankalkül allows access for separate elements of variable by using "component index" (german: Komponenten-Index). When, for example, program receives input in variable of type (game state), then — gives board state, — piece on square number i, and bit number j of that piece. In modern programming languages, that would be described by notation similar toV0 /code>, V0 i]
, V0 i] /code> (although to access a single bit in modern programming languages a bitmask is typically used).
Two-dimensional syntax
Because indexes of variables are written vertically, each Plankalkül instruction requires multiple rows to write down.
First row contains variable kind, then variable number marked with letter V (german: Variablen-Index), then indexes of variable subcomponents marked with K (german: Komponenten-Index), and then (german: Struktur-Index) marked with S, which describes variable type. Type is not required, but Zuse notes that this helps with reading and understanding the program.
In the line types and could be shortened to and .
Examples:
Indexes could be not only constants. Variables could be used as indexes for other variables, and that is marked with a line, which shows in which component index would value of variable be used:
Assignment operation
Zuse introduced in his calculus an assignment operator, unknown in mathematics before him. He marked it with «», and called it yields-sign (german: Ergibt-Zeichen). Use of concept of assignment is one of the key differences between math and computer science.
Zuse wrote that expression:
:
is analogous to more traditional mathematical equation:
:
There are claims that Konrad Zuse initially used the glyph as a sign for assignment, and started to use under the influence of Heinz Rutishauser. Knuth and Pardo believe that Zuse always wrote , and that was introduced by publishers of «Über den allgemeinen Plankalkül als Mittel zur Formulierung schematisch-kombinativer Aufgaben» in 1948. In the ALGOL 58
ALGOL 58, originally named IAL, is one of the family of ALGOL computer programming languages. It was an early compromise design soon superseded by ALGOL 60. According to John Backus
The Zurich ACM-GAMM Conference had two principal motives in pro ...
conference in Zurich, European participants proposed to use for assignment character introduced by Zuse, but the American delegation insisted on :=
.
The variable that stores the result of an assignment ( l-value) is written to the right side of assignment operator. First assignment to the variable is considered to be a declaration.
The left side of assignment operator is used for expression (german: Ausdruck), that defines which value will be assigned to variable. Expressions could use arithmetic operators, boolean operators, and comparison operators ( etc.).
Exponentiation operation is written similarly to the indexing operation - using lines in 2d notation:
Control flow
Terminology
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.Hellige, Hans Dieter, ''Geschichten der Informatik''. Visionen, Paradigmen, Leitmotive. Berlin, Springer 2004, . pp. 45, 104, 105
Example
The original notation was two dimensional. For a later implementation in the 1990s, a linear notation was developed.
The following example defines a function max3
(in a linear transcription) that calculates the maximum of three variables:
P1 max3 (V08.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
V18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
V28.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
→ R08.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
max(V08.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
V18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
→ Z18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
max(Z18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
V28.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
→ R08.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
END
P2 max (V08.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
V18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
→ R08.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
V08.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
→ Z18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
(Z18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
< V18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
→ V18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
→ Z18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
Z18.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
→ R08.0
8 (eight) is the natural number following 7 and preceding 9.
In mathematics
8 is:
* a composite number, its proper divisors being , , and . It is twice 4 or four times 2.
* a power of two, being 2 (two cubed), and is the first number of ...
END
See also
* History of programming languages
* Timeline of programming languages
This is a record of notable programming languages, by decade. Prior to 1950 there were 8 unique programming languages, where 6 were unique languages and 2 were combinations of unique languages. By 1960 there were around 45-50 unique programming ...
* List of programming languages
Notes
References
*
*
* 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.
*
HTML version
*
*
External links
The "Plankalkül" of Konrad Zuse: A Forerunner of Today's Programming Languages
by Friedrich L. Bauer
Friedrich Ludwig "Fritz" Bauer (10 June 1924 – 26 March 2015) was a German pioneer of computer science and professor at the Technical University of Munich.
Life
Bauer earned his Abitur in 1942 and served in the Wehrmacht during World Wa ...
alternative source
* Rojas, Raúl, et al. (2000). "Plankalkül: The First High-Level Programming Language and its Implementation". Institut für Informatik, Freie Universität Berlin, Technical Report B-3/2000
(full text)
https://web.archive.org/web/20141018204625/http://www.zib.de:80/zuse/Inhalt/Programme/Plankalkuel/Plankalkuel-Report/Plankalkuel-Report.htm (archived)]
*
*
Bram Bruines: Plankalkul
2010) - Plankalkül described in a formal way
{{DEFAULTSORT:Plankalkul
Programming languages created in 1948
Procedural programming languages
Non-English-based programming languages
German inventions of the Nazi period
German inventions
Konrad Zuse
1940s establishments in Germany