Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Plankalkül
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Programming language designed 1942 to 1945}} {{Distinguish|Plan Calcul}} {{Use dmy dates|date=November 2023|cs1-dates=y}} {{Use list-defined references|date=November 2023}} {{Infobox programming language | name = Plankalkül | paradigm = [[Procedural programming|Procedural]] | released = {{start date and age|1948}} – concept first published | designer = [[Konrad Zuse]] | latest release version = | latest release date = | implementations = ''Plankalkül-Compiler'' by the [[Free University of Berlin|FU Berlin]] in 2000 | influenced = [[Superplan]], [[ALGOL 58]]<ref name="Rojas-Hashagen_2002"/> }} '''Plankalkül''' ({{IPA|de|ˈ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. Zuse never implemented Plankalkül on any of his Z-series machines.<ref>{{Cite web |title=PLANKALKÜL by Bernhard Behr |url=http://cl-informatik.uibk.ac.at/teaching/ss15/bob/slides/BB.pdf}}</ref> ''Kalkül'' (from Latin ''[[Calculus (disambiguation)|calculus]]'') is the [[German language|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.<ref name="Zenil_2012"/> ==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 (computer)|Z3]]) being inspired by [[David Hilbert|Hilbert]]'s and [[Wilhelm Ackermann|Ackermann]]'s book on elementary mathematical logic (see [[Principles of Mathematical Logic]]).<ref name="Hellige_2004"/>{{rp|pages=113, 152, 216}} To describe logical circuits, Zuse invented his own diagram and notation system, which he called "combinatorics of conditionals" ({{langx|de|Bedingungskombinatorik}}). After finishing the [[Z1 (computer)|Z1]] in 1938, Zuse discovered that the calculus he had independently devised already existed and was known as [[propositional calculus]].<ref name="Rojas-Göktekin-Friedland-Krüger-Kuniß-Langmack_2004"/>{{rp|page=3}} What Zuse had in mind, however, needed to be much more powerful (propositional calculus is not [[Turing-complete]] and is not able to describe even simple arithmetic calculations<ref name="Turing_2013"/>). In May 1939, he described his plans for the development of what would become Plankalkül.<ref name="Hellige_2004"/>{{rp|pages=113, 152, 216}} He wrote the following in his notebook: {{Verse translation|lang=de |1=Seit etwa einem halben Jahr allmähliches Einführen in die formale Logik. Viele meiner früheren Gedanken habe ich dort wiedergefunden. (Bedingungskombinatorik = Aussagenlogik; Lehre von den Intervallen = Gebietenkalkül). Ich plane jetzt die Aufsetzung des 'Plankalküls'. Hierzu sind eine Reihe von Begriffen zu klären. |attr2=Konrad Zuse's notebook{{r|name="Rojas-Göktekin-Friedland-Krüger-Kuniß-Langmack_2004"|page=3}} |2=Almost half a year of gradual introduction into formal logic. I rediscovered there lots of my previous thoughts. (combinatorics of conditionals = [[propositional calculus]]; study of intervals = [[lattice theory]]). I now plan the adoption of "Calculus of plans" onto this. A series of concepts need to be clarified for this. }} [[File:"Konrad Zuse-Haus" in Bruck 2.jpg|thumb|right|Historical marker on house in {{ill|Hinterstein|de}} where Zuse worked on Plankalkül]] While working on his doctoral [[Thesis#Germany|dissertation]], Zuse developed the first known formal system of algorithm notation<ref name="Knuth-Pardo_1976"/>{{rp|page=9}} capable of handling branches and loops.<ref name="Giloi_1997"/>{{rp|page=18}}<ref name="Hellige_2004"/>{{rp|page=56}} In 1942 he began writing a [[computer chess|chess]] program in Plankalkül.<ref name="Hellige_2004"/>{{rp|pages=216-217}} In 1944, Zuse met with the German logician and philosopher [[Heinrich Scholz]], who expressed appreciation for Zuse's utilization of [[logical calculus]].<ref name="Petzold_1992"/> In 1945, Zuse described Plankalkül in an unpublished book.<ref name="Zuse_1945"/> The collapse of [[Nazi Germany]], however, prevented him from submitting his manuscript.<ref name="Giloi_1997"/>{{rp|page=18}} At that time the only two working computers in the world were [[ENIAC]] and [[Harvard Mark I]], neither of which used a compiler, and ENIAC needed to be reprogrammed for each task by changing how the wires were connected.<ref name="Rojas-Göktekin-Friedland-Krüger-Kuniß-Langmack_2004"/>{{rp|page=3}} Although most of his computers were destroyed by Allied bombs, Zuse was able to rescue one machine, the [[Z4 (computer)|Z4]], and move it to the Alpine village of [[Hinterstein]]<ref name="Knuth-Pardo_1976"/>{{rp|page=8}} (part of [[Bad Hindelang]]). {{Cquote |quote=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. |author=[[Heinz Rutishauser]], creator of [[ALGOL]]}} Unable to continue building computers – which was also forbidden by the Allied Powers<ref name="Coy_2004"/> – Zuse devoted his time to the development of a higher-level programming model and language.<ref name="Giloi_1997"/>{{rp|page=18}} In 1948, he published a paper in the ''[[Archiv der Mathematik]]'' and presented at the Annual Meeting of the [[GAMM]].<ref name="Hellige_2004"/>{{rp|page=89}} His work failed to attract much attention.{{Citation needed|date=September 2019}} In a 1957 lecture, Zuse expressed his hope that Plankalkül, "after some time as a [[Sleeping Beauty]], will yet come to life."<ref name="Rojas-Göktekin-Friedland-Krüger-Kuniß-Langmack_2004"/>{{rp|page=3}} He expressed disappointment that the designers of [[ALGOL 58]] never acknowledged the influence of Plankalkül on their own work.<ref name="Giloi_1997"/>{{rp|page=18}}<ref name="Knuth-Pardo_1976"/>{{rp|page=15}} Plankalkül was republished with commentary in 1972.<ref name="Zuse_1972"/> The first compiler for Plankalkül was implemented by Joachim Hohmann in his 1975 dissertation.<ref name="Hohmann_1979"/> Other independent implementations followed in 1998<ref name="Mauerer_2016"/> and 2000 at the [[Free University of Berlin]].<ref name="Rojas-Göktekin-Friedland-Krüger-Kuniß-Langmack_2004"/>{{rp|page=2}} ==Description== Plankalkül has drawn comparisons to the language [[APL (programming language)|APL]], and to [[relational algebra]]. It includes assignment statements, [[subroutine]]s, 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 (abstract data type)|graph]]'' ({{lang|de|verallgemeinerter Graph}}), which can be used to represent geometrical structures.<ref name="Giloi_1990"/> Many features of the Plankalkül reappear in later programming languages; an exception is its idiosyncratic two-dimensional notation using multiple lines. Some features of the Plankalkül:<ref name="Hellige_2004"/>{{rp|page=217}} * 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=== The only primitive data type in the Plankalkül is a single [[binary digit|bit]] or [[Boolean data type|Boolean]] ({{langx|de|Ja-Nein-Werte}} – yes-no value in Zuse's terminology). It is denoted by the identifier <math>S0</math>. All the further data types are composite, and build up from primitive by means of "arrays" and "records".<ref name="Bauer-Wössner_1972"/>{{rp|page=679}} So, a sequence of eight bits (which in modern computing could be regarded as [[byte]]) is denoted by <math>8 \times S0</math>, and Boolean matrix of size <math>m</math> by <math>n</math> is described by <math>m \times n \times S0</math>. There also exists a shortened notation, so one could write <math>S1 \cdot n</math> instead of <math>n \times S0</math>.<ref name="Bauer-Wössner_1972"/>{{rp|page=679}} Type <math>S0</math> could have two possible values <math>0</math> and <math>L</math>. So 4-bit sequence could be written like L00L, but in cases where such a sequence represents a number, the programmer could use the decimal representation 9.<ref name="Bauer-Wössner_1972"/>{{rp|page=679}} Record of two components <math>\sigma</math> and <math>\tau</math> is written as <math>(\sigma, \tau)</math>.<ref name="Bauer-Wössner_1972"/>{{rp|page=679}} Type ({{langx|de|Art}}) in Plankalkül consists of 3 elements: structured value ({{langx|de|Struktur}}), pragmatic meaning ({{langx|de|Typ}}) and possible restriction on possible values ({{langx|de|Beschränkung}}).<ref name="Bauer-Wössner_1972"/>{{rp|page=679}} User defined types are identified by letter A with number, like <math>A1</math> – first user defined type. ====Examples==== Zuse used a lot of examples from chess theory:<ref name="Bauer-Wössner_1972"/>{{rp|page=680}} {|cellpadding=5 style="border:1px solid #BBB; width:800px;" |- | <math>A1</math> | <math>S1 \cdot 3</math> | Coordinate of chess board (it has size 8x8 so 3 bits are just enough) |- | <math>A2</math> | <math>2 \times A1</math> | square of the board (for example L00, 00L denotes e2 in [[Algebraic notation (chess)|algebraic notation]]) |- | <math>A3</math> | <math>S1 \cdot 4</math> | piece (for example, 00L0 — white king) |- | <math>A4</math> | <math>(A2, A3)</math> | piece on a board (for example L00, 00L; 00L0 — white king on e2) |- | <math>A5</math> | <math>64 \times A3</math> | board (pieces positions, describes which piece each of 64 squares contains) |- | <math>A10</math> | <math>(A5, S0, S1 \cdot 4, A2)</math> | game state (<math>A5</math> — board, <math>S0</math> — player to move, <math>S1 \cdot 4</math> — possibility of [[castling]] (2 for white and 2 for black), <math>A2</math> — information about cell on which ''[[en passant]]'' move is possible |} ===Identifiers=== Identifiers are alphanumeric characters with a number.<ref name="Bauer-Wössner_1972"/>{{rp|page=679}} There are the following kinds of identifiers for variables:<ref name="Zuse_1945"/>{{rp|page=10}} * Input values ({{langx|de|Eingabewerte, Variablen}}) — marked with a letter V. * Intermediate, temporary values ({{langx|de|Zwischenwerte}}) — marked with a letter Z. * Constants ({{langx|de|Constanten}}) — marked with a letter С. * Output values ({{langx|de|Resultatwerte}}) — marked with a letter R. Particular variable of some kind is identified by number, written under the kind.<ref name="Bauer-Wössner_1972"/>{{rp|page=679}} For example: : <math>\begin{matrix} V \\ 0 \end{matrix}</math>, <math>\begin{matrix} Z \\ 2 \end{matrix}</math>, <math>\begin{matrix} C \\ 31 \end{matrix}</math> etc. Programs and subprograms are marked with a letter P, followed by a program (and optionally a subprogram) number. For example <math>P13</math>, <math>P5 \cdot 7</math>.<ref name="Bauer-Wössner_1972"/>{{rp|page=679}} Output value of program <math>P13</math> saved there in variable <math>\begin{matrix} R \\ 0 \end{matrix}</math> is available for other subprograms under the identifier <math>\begin{matrix} R17 \\ 0 \end{matrix}</math>, and reading value of that variable also means executing related subprogram.<ref name="Bauer-Wössner_1972"/>{{rp|page=680}} ===Accessing elements by index=== Plankalkül allows access for separate elements of variable by using "component index" ({{langx|de|Komponenten-Index}}). When, for example, program receives input in variable <math>\begin{matrix} V \\ 0 \end{matrix}</math> of type <math>A10</math> (game state), then <math>\begin{matrix} V \\ 0 \\ 0 \end{matrix}</math> — gives board state, <math>\begin{matrix} V \\ 0 \\ 0 \cdot i \end{matrix}</math> — piece on square number i, and <math>\begin{matrix} V \\ 0 \\ 0 \cdot i \cdot j \end{matrix}</math> bit number j of that piece.<ref name="Bauer-Wössner_1972"/>{{rp|page=680}} In modern programming languages, that would be described by notation similar to <code>V0[0]</code>, <code>V0[0][i]</code>, <code>V0[0][i][j]</code> (although to access a single bit in modern programming languages a [[mask (computing)|bitmask]] is typically used). ===Two-dimensional syntax=== Because indexes of variables are written vertically, each Plankalkül instruction requires multiple rows to write down.{{citation needed|date=November 2016}} First row contains variable kind, then variable number marked with letter V ({{langx|de|Variablen-Index}}), then indexes of variable subcomponents marked with K ({{langx|de|Komponenten-Index}}), and then ({{langx|de|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.<ref name="Bauer-Wössner_1972"/>{{rp|page=681}} In the line <math>S</math> types <math>S0</math> and <math>S1</math> could be shortened to <math>0</math> and <math>1</math>.<ref name="Bauer-Wössner_1972"/>{{rp|page=681}} Examples: {|cellpadding=5 style="border:1px solid #BBB; width:600px;" |- | <math>\begin{array}{r|l} & V \\ V & 3 \\ K & \\ S & m \times 2 \times 1 \cdot n \end{array}</math> | variable V3 — list of <math>m</math> pairs of values of type <math>S1 \cdot n</math> |- | <math>\begin{array}{r|l} & V \\ V & 3 \\ S & m \times 2 \times 1 \cdot n \end{array}</math> | Row K could be skipped when it is empty. Therefore, this expression means the same as above. |- | <math>\begin{array}{r|l} & V \\ V & 3 \\ K & i \cdot 0 \cdot 7 \\ S & 0 \end{array}</math> | Value of eights bit (index 7), of first (index 0) pair, of і-th element of variable V3, has Boolean type (<math>S0</math>). |} 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: {|cellpadding=5 style="border:1px solid #BBB; width:600px;" |- | [[File:Plankalkül variable index.png|Using variable as index for other variable, in 2d Plankalül notation]] | Z5-th element of variable V3. Equivalent to expression <code>V3[Z5]</code> in many modern programming languages.<ref name="Bauer-Wössner_1972"/>{{rp|page=681}} |} ===Assignment operation=== Zuse introduced in his calculus an assignment operator, unknown in mathematics before him. He marked it with «<math>\Rightarrow</math>», and called it yields-sign ({{langx|de|Ergibt-Zeichen}}). Use of concept of assignment is one of the key differences between mathematics and computer science.<ref name="Knuth-Pardo_1976"/>{{rp|page=14}} Zuse wrote that the expression: : <math>\begin{array}{r|lll} & Z + 1 & \Rightarrow & Z\\ V & 1 & & 1\\ \end{array}</math> is analogous to the more traditional mathematical equation: : <math>\begin{array}{r|lll} & Z + 1 & = & Z\\ V & 1 & & 1\\ K & i & & i + 1\\ \end{array}</math> There are claims that Konrad Zuse initially used the glyph [[File:Ergibt-Zeichen.png|frameless|25px]] as a sign for assignment, and started to use <math>\Rightarrow</math> under the influence of [[Heinz Rutishauser]].<ref name="Bauer-Wössner_1972"/>{{rp|page=681}} Knuth and Pardo believe that Zuse always wrote <math>\Rightarrow</math>, and that [[File:Ergibt-Zeichen.png|frameless|25px]] was introduced by publishers of «Über den allgemeinen Plankalkül als Mittel zur Formulierung schematisch-kombinativer Aufgaben» in 1948.<ref name="Knuth-Pardo_1976"/>{{rp|page=14}} In the [[ALGOL 58]] conference in Zürich, European participants proposed to use the assignment character introduced by Zuse, but the American delegation insisted on <code>:=</code>.<ref name="Bauer-Wössner_1972"/>{{rp|page=681}} The variable that stores the result of an assignment ([[L-value (computer science)|l-value]]) is written to the right side of assignment operator.<ref name="Knuth-Pardo_1976"/>{{rp|page=14}} The first assignment to the variable is considered to be a declaration.<ref name="Bauer-Wössner_1972"/>{{rp|page=681}} The left side of assignment operator is used for an expression ({{langx|de|Ausdruck}}), that defines which value will be assigned to the variable. Expressions could use arithmetic operators, Boolean operators, and comparison operators (<math>=, \neq, \leq</math> etc.).<ref name="Bauer-Wössner_1972"/>{{rp|page=682}} The exponentiation operation is written similarly to the indexing operation - using lines in the two-dimensional notation:<ref name="Zuse_1945"/>{{rp|page=45}} [[File:Plankalkül-Potenzen.png|Exponentiation notation in Plankalkül]] ===Control flow=== Boolean values were represented as integers with {{code|1=FALSE=0}} and {{code|1=TRUE=1}}. Conditional control flow took the form of a guarded statement {{code|A -> B}}, which executed the block {{code|B}} if {{code|A}} was true. There was also an iteration operator, of the form {{code|W { A -> X; B -> Y }}} which repeats until all guards are false.<ref name="Rojas_2001"/> ===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]], something today would be called a [[translator (computing)|translator]] or [[compiler]].<ref name="Hellige_2004"/>{{rp|pages=45, 104, 105}} ===Example=== The original notation was two-dimensional, i.e. the indentation and thus spatial relation of different terminal symbols mattered in regard to the semantics ''spanning multiple lines''. For a later implementation in the 1990s, a linear notation was developed. The following example defines a function <code>max3</code> (in a linear transcription) that calculates the maximum 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] 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 also== * [[History of programming languages]] * [[Timeline of programming languages]] * [[List of programming languages]] ==References== {{reflist|refs= <ref name="Zenil_2012">{{cite book |editor-first=Héctor |editor-last=Zenil |editor-link=:d:Q63660773 |date=2012 |title=A Computable Universe: Understanding and Exploring Nature As Computation - with a Foreword by Sir [[Roger Penrose]] |publication-place=Singapore |publisher=[[World Scientific Publishing Company]] |page=791}}</ref> <ref name="Turing_2013">{{cite web |title=Why is propositional logic not Turing complete? |author= |date=2013-04-01 |work=StackExchange |department=Mathematics |url=https://math.stackexchange.com/a/348411/571313 |access-date=2023-11-02 |url-status=live |archive-url=https://web.archive.org/web/20231102131830/https://math.stackexchange.com/questions/348379/why-is-propositional-logic-not-turing-complete/348411#348411 |archive-date=2023-11-02}}</ref> <ref name="Giloi_1990">{{citation |title=Konrad Zuses Plankalkül als Vorläufer moderner Programmiermodelle |language=de |author-first=Wolfgang K. |author-last=Giloi |author-link=:de:Wolfgang Giloi |date=November 1990}}</ref> <ref name="Giloi_1997">{{cite journal |title=Konrad Zuse's Plankalkül: The First High-Level "non von Neumann" Programming Language |author-last=Giloi |author-first=Wolfgang K. |author-link=:de:Wolfgang Giloi |date=April–June 1997 |journal=[[IEEE Annals of the History of Computing]] |issn= |publisher=[[IEEE]] |volume=19 |issue=2 |doi=10.1109/85.586068 |pages=17–24 |url=http://doi.ieeecomputersociety.org/10.1109/85.586068|url-access=subscription }} (8 pages)</ref> <ref name="Rojas_2001">{{cite encyclopedia |author-last=Rojas |author-first=Raúl |author-link=Raúl Rojas |title=Plankalkül |encyclopedia=Encyclopedia of computers and computer history |date=2001 |publisher=[[Fitzroy Dearborn Publishers]] |location=Chicago / London |isbn=1-57958235-4 |page=634 |url=http://page.mi.fu-berlin.de/rojas/pub/computer_history/m_z/plankalkuel.pdf |access-date=26 May 2023}}</ref> <ref name="Rojas-Hashagen_2002">{{cite book |author-last1=Rojas |author-first1=Raúl |author-link1=Raúl Rojas |author-first2=Ulf |author-last2=Hashagen |author-link2=:de:Ulf Hashagen |date=2002 |title=The First Computers: History and Architectures |publisher=[[MIT Press]] |isbn=978-0-26268137-7 |edition= |page=292 |url=https://books.google.com/books?id=nDWPW9uwZPAC&dq=algol-68+konrad+zuse&pg=PA292 |access-date=2013-10-25}}</ref> <ref name="Petzold_1992">{{cite book |title=Moderne Rechenkünstler. Die Industrialisierung der Rechentechnik in Deutschland |language=de |author-first=Hartmut |author-last=Petzold |author-link=:de:Hartmut Petzold |publication-place=München, Germany |publisher=[[C.H. Beck Verlag]] |date=1992 |edition=}}</ref> <ref name="Zuse_1945">{{cite book |title=Der Plankalkül (In der Fassung von 1945) |language=de |author-first=Konrad |author-last=Zuse |author-link=Konrad Zuse |editor-first1=Raúl |editor-last1=Rojas |editor-link1=Raúl Rojas |editor-first2=G. |editor-last2=Wagner |editor-first3=Ludmila |editor-last3=Scharf |editor-first4=Susanne |editor-last4=Schöttker-Söhl [Schötke-Suhl<!-- most probably typos in the document -->] |type=Manuscript |date=1946 |orig-date=1945 |publisher=Konrad Zuse Internet Archive |id=ZIA ID: 0233 |pages=10, 45 |url=http://zuse.zib.de/item/DB2j_t_w1fbxvaiq |access-date=2023-11-01 |url-status=live |archive-url=https://web.archive.org/web/20150416133441/http://zuse.zib.de/file/zuse_archive-0233.pdf;jsessionid=5F7002ED0507BF67BC4332A35F1DCDA5?id=http%3A//zuse.zib.de/file/1rUAfKDkirW8o3gT/21/1c/70/9e-d718-4b4e-be7b-ed9b620f5683/0/original/092be0ebdd0784fee570ef37eee273c7.pdf&download=1 |archive-date=2015-04-16}} (1+1+180 pages)</ref> <ref name="Hohmann_1979">{{cite book |author-first=Joachim |author-last=Hohmann |title=Der PLANKALKÜL im Vergleich mit algorithmischen Sprachen |language=de |series=Reihe Informatik und Operations Research |volume=7 |publisher=[[S. Toeche-Mittler-Verlag]] (stmv) |publication-place=Darmstadt, Germany |date=1979 |edition=1 |isbn=3-87820-028-5}} (136 pages) [https://web.archive.org/web/20231030161043/https://external.dandelon.com/download/attachments/dandelon/ids/DE0049D0E905ED237EB1EC1257A0E0049AFDF.pdf Contents]</ref> <ref name="Mauerer_2016">[https://web.archive.org/web/20161115175703/http://www.bytesex.de/mauerer/pk/README Description of Plankalkül-Compiler by Wolfgang Mauerer]; {{cite web |url=http://www.bytesex.de/mauerer/pk/ |title=Der Plankalkül von Konrad Zuse |author-last=Mauerer |author-first=Wolfgang |date=2016-06-03 |language=de |others=Implementation in German |archive-url=https://web.archive.org/web/20160603234257/http://www.bytesex.de/mauerer/pk/ |archive-date=2016-06-03 |access-date=2017-10-03}}</ref> <ref name="Hellige_2004">{{cite book |editor-first=Hans Dieter |editor-last=Hellige |location=Bremen, Germany |title=Geschichten der Informatik. Visionen, Paradigmen, Leitmotive |language=de |publication-place=Berlin / Heidelberg, Germany |publisher=[[Springer-Verlag]] |edition=1 |date=January 2004 |orig-date=November 2002 |isbn=978-3-540-00217-8 |id={{ISBN|3-540-00217-0}} |doi=10.1007/978-3-642-18631-8 |pages=45, 56, 89, 104–105, 113, 152, 216–217}} (xii+514 pages)</ref> <ref name="Coy_2004">{{cite book |author-first=Wolfgang |author-last=Coy |author-link=:de:Wolfgang Coy |editor-first=Hans Dieter |editor-last=Hellige |title=Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Teil 5: Wandel der Leitkonzepte in der Wissenschaftsdisziplin Informatik |language=de |title-link=#{{harvid|Hellige|2004}} |chapter=Was ist Informatik? Zur Entstehung des Faches an den deutschen Universitäten |publication-place=Berlin / Heidelberg, Germany |publisher=[[Springer-Verlag]] |edition=1 |date=January 2004 |orig-date=November 2002 |isbn=978-3-540-00217-8 |id={{ISBN|3-540-00217-0}} |doi=10.1007/978-3-642-18631-8_17 |pages=473–498 [474] |chapter-url=https://www.researchgate.net/publication/301184912}} [https://web.archive.org/web/20231102212758/https://edoc.hu-berlin.de/bitstream/handle/18452/9794/8.pdf?sequence=1]</ref> <ref name="Rojas-Göktekin-Friedland-Krüger-Kuniß-Langmack_2004">{{cite book |author-first1=Raúl |author-last1=Rojas |author-link1=Raúl Rojas |author-first2=Cüneyt |author-last2=Göktekin |author-first3=Gerald |author-last3=Friedland |author-first4=Mike |author-last4=Krüger |author-first5=Ludmila |author-last5=Scharf |author-first6=Denis |author-last6=Kuniß |author-first7=Olaf |author-last7=Langmack |editor-first=Hans Dieter |editor-last=Hellige |title=Geschichten der Informatik. Visionen, Paradigmen, Leitmotive. Teil 3: Leitideen und Paradigmen in der Entwicklung der Programmiersprachen und der Programmierung |title-link=#{{harvid|Hellige|2004}} |chapter=Konrad Zuses Plankalkül — Seine Genese und eine moderne Implementierung |language=de |publication-place=Berlin / Heidelberg, Germany |publisher=[[Springer-Verlag]] |edition=1 |date=January 2004 |orig-date=November 2002 |doi=10.1007/978-3-642-18631-8_9 |isbn=978-3-642-62208-3 |pages=215–235 [2–4] |chapter-url=http://www.zib.de/zuse/Inhalt/Programme/Plankalkuel/Genese/Genese.pdf |archive-url=https://web.archive.org/web/20060501175217/http://www.zib.de/zuse/Inhalt/Programme/Plankalkuel/Genese/Genese.pdf |archive-date=2006-05-01}} (21 [24] pages)</ref> <ref name="Knuth-Pardo_1976">{{cite web |title=The Early Development of Programming Languages |author-last1=Knuth |author-first1=Donald Ervin |author-link1=Donald Ervin Knuth |author-last2=Pardo |author-first2=Luis Isidoro Trabb |author-link2=:pt:Luis Trabb Pardo |date=August 1976 |pages=8, 9, 14, 15 |url=https://bitsavers.org/pdf/stanford/cs_techReports/STAN-CS-76-562_EarlyDevelPgmgLang_Aug76.pdf |publisher=Stanford University, Computer Science Department |access-date=2017-12-28 |url-status=dead |archive-url=https://web.archive.org/web/20170912102014/http://bitsavers.org/pdf/stanford/cs_techReports/STAN-CS-76-562_EarlyDevelPgmgLang_Aug76.pdf |archive-date=2017-09-12}}</ref> <ref name="Bauer-Wössner_1972">{{cite journal |title=The "Plankalkül" of Konrad Zuse: A Forerunner of Today's Programming Languages |language=en |author-last1=Bauer |author-first1=Friedrich L. |author-link1=Friedrich L. Bauer |author-last2=Wössner |author-first2=Hans |date=1972 |journal=[[Communications of the ACM]] |issn= |volume=15 |issue=7 |doi=10.1145/361454.361515 |s2cid=17681101 |pages=678–685 |url=http://delivery.acm.org/10.1145/370000/361515/p678-bauer.pdf?key1=361515&key2=3342588511&coll=&dl=acm&CFID=15151515&CFTOKEN=6184618 |url-status=dead |archive-url=https://web.archive.org/web/20090220012346/http://delivery.acm.org/10.1145/370000/361515/p678-bauer.pdf?key1=361515&key2=3342588511&coll=&dl=acm&CFID=15151515&CFTOKEN=6184618 |archive-date=2009-02-20}} ([http://www.catb.org/retro/plankalkuel/ HTML])</ref> <ref name="Zuse_1972">{{cite book |title=Der Plankalkül. Kommentierter Nachdruck der Fassung von 1945 |language=de |author-last=Zuse |author-first=Konrad |author-link=Konrad Zuse |date=1972 |publisher=[[Gesellschaft für Mathematik und Datenverarbeitung]] (GMD) / Bundesministerium für Bildung und Wissenschaft (BMBW) |publication-place=Sankt Augustin, Germany |volume=63<!-- or |number=? --> |id=BMBW-GMD-63}}</ref> }} ==Further reading== * {{cite book |title=Ansätze einer Theorie des allgemeinen Rechnens unter besonderer Berücksichtigung des Aussagenkalküls und dessen Anwendung auf Relaisschaltungen |language=de |trans-title=Inception of a universal theory of computation with special consideration of the propositional calculus and its application to relay circuits |author-last=Zuse |author-first=Konrad |author-link=Konrad Zuse |date=1943 |type=unpublished manuscript |id=Zuse Papers 045/018}} * {{cite journal |title=Über den allgemeinen Plankalkül als Mittel zur Formulierung schematisch-kombinativer Aufgaben |language=de |trans-title= |author-last=Zuse |author-first=Konrad |author-link=Konrad Zuse |date=1948-12-06 |orig-date=November 1948 |journal=[[Archiv der Mathematik]] |issn=0003-889X |eissn=1420-8938 |location=Hopferau bei Füssen, Germany |publisher=[[Birkhäuser Verlag]] |publication-place=Karlsruhe / Stuttgart / Basel, Germany |volume=1 |issue=6 |doi=10.1007/BF02038459 |pages=441–449}} (9 pages) * {{cite book |title=Plankalkül: The First High-Level Programming Language and its Implementation |language=en |author-last1=Rojas |author-first1=Raúl |author-link1=Raúl Rojas |author-first2=Cüneyt |author-last2=Göktekin |author-first3=Gerald |author-last3=Friedland |author-first4=Mike |author-last4=Krüger |author-first5=Denis |author-last5=Kuniß |author-first6=Olaf |author-last6=Langmack |date=February 2000 |publisher=Institut für Informatik, Freie Universität Berlin & Feinarbeit.de |location=Berlin, Germany |id=Technical Report B-3/2000 |url=https://www.researchgate.net/publication/250809396 |archive-url=https://web.archive.org/web/20060501175521/http://www.zib.de/zuse/Inhalt/Programme/Plankalkuel/Plankalkuel-Report/techreport.pdf |archive-date=2006-05-01}}[https://web.archive.org/web/20141018204625/http://www.zib.de:80/zuse/Inhalt/Programme/Plankalkuel/Plankalkuel-Report/Plankalkuel-Report.htm] (22 pages) * {{cite web |title=Plankalkül |author-first=Bram |author-last=Bruines |date=2010-01-08 |type=Thesis |url=https://www.cs.ru.nl/bachelors-theses/2010/Bram_Bruines___0213837___Plankalkul.pdf |access-date=2023-11-02 |url-status=live |archive-url=https://web.archive.org/web/20231102210756/https://www.cs.ru.nl/bachelors-theses/2010/Bram_Bruines___0213837___Plankalkul.pdf |archive-date=2023-11-02}} (24 pages) ==External links== * {{cite web |title=Plankalkül-Programme |language=de, en |date=2014-08-21 |website=Konrad Zuse Internet Archive |url=http://zuse.zib.de/ |access-date=2017-10-04 |url-status=dead |archive-url=https://web.archive.org/web/20140821215119/http://www.zib.de/zuse/Inhalt/Programme/Plankalkuel/ |archive-date=2014-08-21}} (NB. Plankalkül Java applets and documents.) {{Authority control}} {{DEFAULTSORT:Plankalkul}} [[Category:Programming languages created in 1948]] [[Category:Procedural programming languages]] [[Category:Non-English-based programming languages]] [[Category:German inventions of the Nazi period]] [[Category:German inventions]] [[Category:Konrad Zuse]] [[Category:1940s establishments in Germany]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Code
(
edit
)
Template:Cquote
(
edit
)
Template:Distinguish
(
edit
)
Template:IPA
(
edit
)
Template:Ill
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Lang
(
edit
)
Template:Langx
(
edit
)
Template:Reflist
(
edit
)
Template:Rp
(
edit
)
Template:Short description
(
edit
)
Template:Use dmy dates
(
edit
)
Template:Use list-defined references
(
edit
)
Template:Verse translation
(
edit
)