Difference between revisions of "Plankalkül"
(31 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | == Translated tables (Zuze pp 114-117) == |
− | === | + | === Character table === |
− | Variables | + | {| border="1" |
− | {| border=1 | + | !Symbol |
+ | !German | ||
+ | !Translation | ||
+ | !Notes | ||
+ | |- | ||
+ | |A | ||
+ | |Angabenart | ||
+ | |Record type* | ||
+ | | | ||
+ | |- | ||
+ | |B | ||
+ | |Beschränkungszeichen | ||
+ | |Limitation mark* | ||
+ | | | ||
+ | |- | ||
+ | |C | ||
+ | |Constante | ||
+ | |Take a guess, brainiac | ||
+ | | | ||
+ | |- | ||
+ | |E | ||
+ | |Existenz-Operator | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |F, G | ||
+ | |Funktionszeichen, allgemein | ||
+ | |Function markers, universal | ||
+ | | | ||
+ | |- | ||
+ | |I, i, j | ||
+ | |Index | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |K | ||
+ | |Komponente | ||
+ | |Component indicator | ||
+ | | | ||
+ | |- | ||
+ | |L | ||
+ | |Listenzeichen | ||
+ | |List marker* | ||
+ | | | ||
+ | |- | ||
+ | |<sup>m</sup>, <sub>n</sub> | ||
+ | |Gliedzahl von Angaben | ||
+ | |Record part indicators* | ||
+ | | | ||
+ | |- | ||
+ | |N | ||
+ | |Anzahl der Glieder einer Liste | ||
+ | |Number of parts in a list | ||
+ | | | ||
+ | |- | ||
+ | |P | ||
+ | |Planzeichen | ||
+ | |Plan sign | ||
+ | |As in program, as in function | ||
+ | |- | ||
+ | |R | ||
+ | |Resultatwert | ||
+ | |Result value | ||
+ | |Write-only | ||
+ | |- | ||
+ | |S | ||
+ | |Struktur | ||
+ | |Structure | ||
+ | |Ie array | ||
+ | |- | ||
+ | |T | ||
+ | |Angabentyp | ||
+ | |Record type* | ||
+ | | | ||
+ | |- | ||
+ | |U | ||
+ | |Unterplan | ||
+ | |Sub-plan | ||
+ | | | ||
+ | |- | ||
+ | |V, v | ||
+ | |Variable | ||
+ | |Variable | ||
+ | |Ie. temporary | ||
+ | |- | ||
+ | |W | ||
+ | |Wiederholungsplan | ||
+ | |Repeat plan* | ||
+ | |wiederholen = bring back; this is essentially the looping construct. It might be more like Ruby's inject than a traditional loop though | ||
+ | |- | ||
+ | |<sup>x</sup>, <sub>y</sub> | ||
+ | |gebundne Variable, auch allgemeine Variable | ||
+ | |Bound variables and also universal variables | ||
+ | | | ||
+ | |- | ||
+ | |z | ||
+ | |Zwischenwert | ||
+ | |Temporary value* | ||
+ | | | ||
+ | |- | ||
+ | |α | ||
+ | |variables Angabenartzeichen | ||
+ | |Variable record type indicators* | ||
+ | | | ||
+ | |- | ||
+ | |ε | ||
+ | |laufend veränderliche Hilfsgröße eines Rechenplanes | ||
+ | |Constantly variable help size of a program* | ||
+ | |what the christ | ||
+ | |- | ||
+ | |κ | ||
+ | |variabler Komponentindex | ||
+ | |Variable component index | ||
+ | | | ||
+ | |- | ||
+ | |λ | ||
+ | |"das Letzte" | ||
+ | |"the latest" | ||
+ | |Ie. previous | ||
+ | |- | ||
+ | |μ | ||
+ | |"das Nächste" | ||
+ | |"the next" | ||
+ | | | ||
+ | |- | ||
+ | |π | ||
+ | |variables Planzeichen | ||
+ | |Variable plan marker* | ||
+ | | | ||
+ | |- | ||
+ | |σ, τ | ||
+ | |variables Strukturzeichen | ||
+ | |Variable structure markers | ||
+ | | | ||
+ | |- | ||
+ | |∏ | ||
+ | |Produkt | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |∑ | ||
+ | |Summe | ||
+ | |Sum | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | '''* = Possibly worthless translation''' | ||
+ | |||
+ | === Operator table === | ||
+ | |||
+ | {| border="1" | ||
+ | !Operator | ||
+ | !German | ||
+ | !Translation | ||
+ | !Notes | ||
+ | |- | ||
+ | |□ (box) | ||
+ | |Allgemeines Leerstellenzeichen | ||
+ | |Universal empty space mark | ||
+ | | | ||
+ | |- | ||
+ | |∨ | ||
+ | |Disjunktion | ||
+ | |Disjunction | ||
+ | |http://en.wikipedia.org/wiki/Logical_disjunction | ||
+ | |- | ||
+ | |∧ | ||
+ | |Konjunktion | ||
+ | |Conjunction | ||
+ | |http://en.wikipedia.org/wiki/Logical_conjunction | ||
+ | |- | ||
+ | |x̄ (with macron) | ||
+ | |Negation | ||
+ | |Negation | ||
+ | |Im Sinne des Aussagenkalküls | ||
+ | |- | ||
+ | |→ | ||
+ | |Implikation | ||
+ | |Implication | ||
+ | |Ie. conditional | ||
+ | |- | ||
+ | |≁ (not tilde) | ||
+ | |Disvalenz | ||
+ | |Not equal | ||
+ | | | ||
+ | |- | ||
+ | |∼ | ||
+ | |Äquivalenz | ||
+ | |Equal | ||
+ | | | ||
+ | |- | ||
+ | |TO | ||
+ | |BE | ||
+ | |FUCKING | ||
+ | |CONTINUED | ||
+ | |} | ||
+ | |||
+ | == Spec == | ||
+ | |||
+ | === Variables === | ||
+ | {| border="1" | ||
|V || parameters (r/o) | |V || parameters (r/o) | ||
|- | |- | ||
Line 10: | Line 210: | ||
|- | |- | ||
|R || results (w/o) | |R || results (w/o) | ||
+ | |- | ||
+ | |C || constants (?) | ||
+ | |} | ||
+ | |||
+ | Variables are initialized the first time they're assigned to, subsequent assignments are simply normal assignments. | ||
+ | |||
+ | === 2D syntax 'sidebar' === | ||
+ | |||
+ | In the 2D notation there is a vertical column on the right where the value of elements in that row is indicated: | ||
+ | |||
+ | |Main Line | ||
+ | V|Variable Number | ||
+ | K|Component Number (Komponenten-Index) | ||
+ | S|Comment Line (Struktur-Index) | ||
+ | |||
+ | So, as an example: | ||
+ | |||
+ | |Z ^ Z | ||
+ | V|4 2 | ||
+ | K|2.3 | ||
+ | S|0 0 | ||
+ | |||
+ | (from page 8 in the Zuse PDF). This is (probably) equivalent to: | ||
+ | |||
+ | Z4[2.3] ^ Z2 | ||
+ | |||
+ | in the linear notation. | ||
+ | |||
+ | Note: not quite sure what the operator means yet, possibly greater-than. | ||
+ | |||
+ | === Primitives === | ||
+ | |||
+ | The only primitive type is boolean (or a bit). They are denoted by S0. | ||
+ | |||
+ | === Arrays === | ||
+ | |||
+ | Arrays can be made up of any other data type. For example: | ||
+ | |||
+ | 8 × S0 | ||
+ | |||
+ | is an array of 8 bits whereas: | ||
+ | |||
+ | n × 4 × S0 | ||
+ | |||
+ | is an n-length array with each element being a 4-length array of bits. | ||
+ | |||
+ | Arrays can be subscripted: | ||
+ | |||
+ | |V | ||
+ | V|0 | ||
+ | K|1 | ||
+ | |||
+ | means the 1st component of V0 (linear syntax is V0[1]). | ||
+ | |||
+ | === Records === | ||
+ | |||
+ | Page 2 of Bauer alludes to 'records' of the form (A2, A3). We need more info here. | ||
+ | |||
+ | |||
+ | === Operators === | ||
+ | |||
+ | Note that this list is vastly incomplete. | ||
+ | {| border="1" | ||
+ | | = || Equality test | ||
+ | |- | ||
+ | | => || Assignment | ||
+ | |- | ||
+ | | + || Addition | ||
+ | |- | ||
+ | | - || Subtraction (inferred, may not exist) | ||
+ | |- | ||
|} | |} | ||
− | === Implementation | + | === The µ operator === |
+ | |||
+ | µx(x ∈ V ^ R(x)) | ||
+ | 0 | ||
+ | |||
+ | Apparently this means 'The next element of V0 for which the procedure call R returns true'. | ||
+ | |||
+ | === Conditionals === | ||
+ | |||
+ | Conditionals are of the form ''expression'' -> ''statement''. There is no else clause. There is also no 'or' for the expression. | ||
+ | |||
+ | === Loops === | ||
+ | |||
+ | Loops are initiated using the letter W. I don't really understand anything beyond that. | ||
+ | |||
+ | == Questions == | ||
+ | |||
+ | * Are S (and maybe A) variables or types or constants or what? We know S0 is the boolean bit, S1 is an array of boolean bits and apparently S2 is a constant of some type. | ||
+ | |||
+ | * What is the difference between S and A? | ||
+ | |||
+ | * How is a function declared? The Bauer PDF gives this syntax: | ||
+ | |||
+ | P17 |R(V) => (R, R) | ||
+ | V| 0 0 1 | ||
+ | S| α α 0 | ||
+ | |||
+ | but.. how is this function called?, how do you actually define stuff to occur in the function, is the 'FIN' end symbol used? | ||
+ | |||
+ | * Are the S lines actually taken into account? Do they define the structure of the index? | ||
+ | |||
+ | == Implementation == | ||
Is the 2d syntax representable in ascii in some obvious way? What are the advantages of the 2d syntax? | Is the 2d syntax representable in ascii in some obvious way? What are the advantages of the 2d syntax? | ||
+ | |||
+ | |||
+ | == Links == | ||
+ | |||
+ | * [http://www.epemag.com/zuse/part5.htm The Life and Work of Konrad Zuse (by Horst Zuse) Part 5: Konrad Zuse's Plankakül Programming Language (1942-1945/6)] | ||
+ | * [http://www.zib.de/zuse/English_Version/index.html Konrad Zuse Internet Archive] | ||
+ | * [http://www.zib.de/zuse/English_Version/Inhalt/Kommentare/0679.html The “Plankalkül” of Konrad Zuse: A Forerunner of Today’s Programming Languages (by F.L. Bauer and H. Wössner) 1972] - An overview, in english, of the plankalkul. Somewhat vague and obtuse in various areas, but a good starting point. | ||
+ | * [https://web.archive.org/web/20120217010029/http://www.zib.de/zuse/Inhalt/Texte/Chrono/40er/Pdf/0233.pdf Plankalkül 1946] Zuse's own paper on the plankalkul. In german, 181 pages. | ||
+ | |||
+ | == Translation Attempts == | ||
+ | |||
+ | Here's some (probably badly mangled) attempts at translating some of Zuse's plankalkul papers. I'm gonna try running them through google translator and then manually cleaning them up afterwards. | ||
+ | |||
+ | [[Uber den Plankalkul]] | ||
+ | |||
+ | == Notes == | ||
+ | |||
+ | I'm looking through my character map for some useful HTML entities: | ||
+ | |||
+ | {| border="1" | ||
+ | | ∧ || &and; | ||
+ | |- | ||
+ | | ∨ || &or; | ||
+ | |- | ||
+ | | ⇒ || &rArr; | ||
+ | |- | ||
+ | | → || &rarr; | ||
+ | |- | ||
+ | | × || &times; | ||
+ | |} | ||
+ | |||
+ | Hm. ∈σ |
Latest revision as of 17:31, 26 April 2020
Translated tables (Zuze pp 114-117)
Character table
Symbol | German | Translation | Notes |
---|---|---|---|
A | Angabenart | Record type* | |
B | Beschränkungszeichen | Limitation mark* | |
C | Constante | Take a guess, brainiac | |
E | Existenz-Operator | ||
F, G | Funktionszeichen, allgemein | Function markers, universal | |
I, i, j | Index | ||
K | Komponente | Component indicator | |
L | Listenzeichen | List marker* | |
m, n | Gliedzahl von Angaben | Record part indicators* | |
N | Anzahl der Glieder einer Liste | Number of parts in a list | |
P | Planzeichen | Plan sign | As in program, as in function |
R | Resultatwert | Result value | Write-only |
S | Struktur | Structure | Ie array |
T | Angabentyp | Record type* | |
U | Unterplan | Sub-plan | |
V, v | Variable | Variable | Ie. temporary |
W | Wiederholungsplan | Repeat plan* | wiederholen = bring back; this is essentially the looping construct. It might be more like Ruby's inject than a traditional loop though |
x, y | gebundne Variable, auch allgemeine Variable | Bound variables and also universal variables | |
z | Zwischenwert | Temporary value* | |
α | variables Angabenartzeichen | Variable record type indicators* | |
ε | laufend veränderliche Hilfsgröße eines Rechenplanes | Constantly variable help size of a program* | what the christ |
κ | variabler Komponentindex | Variable component index | |
λ | "das Letzte" | "the latest" | Ie. previous |
μ | "das Nächste" | "the next" | |
π | variables Planzeichen | Variable plan marker* | |
σ, τ | variables Strukturzeichen | Variable structure markers | |
∏ | Produkt | ||
∑ | Summe | Sum |
* = Possibly worthless translation
Operator table
Operator | German | Translation | Notes |
---|---|---|---|
□ (box) | Allgemeines Leerstellenzeichen | Universal empty space mark | |
∨ | Disjunktion | Disjunction | http://en.wikipedia.org/wiki/Logical_disjunction |
∧ | Konjunktion | Conjunction | http://en.wikipedia.org/wiki/Logical_conjunction |
x̄ (with macron) | Negation | Negation | Im Sinne des Aussagenkalküls |
→ | Implikation | Implication | Ie. conditional |
≁ (not tilde) | Disvalenz | Not equal | |
∼ | Äquivalenz | Equal | |
TO | BE | FUCKING | CONTINUED |
Spec
Variables
V | parameters (r/o) |
Z | temporaries (r/w) |
R | results (w/o) |
C | constants (?) |
Variables are initialized the first time they're assigned to, subsequent assignments are simply normal assignments.
2D syntax 'sidebar'
In the 2D notation there is a vertical column on the right where the value of elements in that row is indicated:
|Main Line V|Variable Number K|Component Number (Komponenten-Index) S|Comment Line (Struktur-Index)
So, as an example:
|Z ^ Z V|4 2 K|2.3 S|0 0
(from page 8 in the Zuse PDF). This is (probably) equivalent to:
Z4[2.3] ^ Z2
in the linear notation.
Note: not quite sure what the operator means yet, possibly greater-than.
Primitives
The only primitive type is boolean (or a bit). They are denoted by S0.
Arrays
Arrays can be made up of any other data type. For example:
8 × S0
is an array of 8 bits whereas:
n × 4 × S0
is an n-length array with each element being a 4-length array of bits.
Arrays can be subscripted:
|V V|0 K|1
means the 1st component of V0 (linear syntax is V0[1]).
Records
Page 2 of Bauer alludes to 'records' of the form (A2, A3). We need more info here.
Operators
Note that this list is vastly incomplete.
= | Equality test |
=> | Assignment |
+ | Addition |
- | Subtraction (inferred, may not exist) |
The µ operator
µx(x ∈ V ^ R(x)) 0
Apparently this means 'The next element of V0 for which the procedure call R returns true'.
Conditionals
Conditionals are of the form expression -> statement. There is no else clause. There is also no 'or' for the expression.
Loops
Loops are initiated using the letter W. I don't really understand anything beyond that.
Questions
- Are S (and maybe A) variables or types or constants or what? We know S0 is the boolean bit, S1 is an array of boolean bits and apparently S2 is a constant of some type.
- What is the difference between S and A?
- How is a function declared? The Bauer PDF gives this syntax:
P17 |R(V) => (R, R) V| 0 0 1 S| α α 0
but.. how is this function called?, how do you actually define stuff to occur in the function, is the 'FIN' end symbol used?
- Are the S lines actually taken into account? Do they define the structure of the index?
Implementation
Is the 2d syntax representable in ascii in some obvious way? What are the advantages of the 2d syntax?
Links
- The Life and Work of Konrad Zuse (by Horst Zuse) Part 5: Konrad Zuse's Plankakül Programming Language (1942-1945/6)
- Konrad Zuse Internet Archive
- The “Plankalkül” of Konrad Zuse: A Forerunner of Today’s Programming Languages (by F.L. Bauer and H. Wössner) 1972 - An overview, in english, of the plankalkul. Somewhat vague and obtuse in various areas, but a good starting point.
- Plankalkül 1946 Zuse's own paper on the plankalkul. In german, 181 pages.
Translation Attempts
Here's some (probably badly mangled) attempts at translating some of Zuse's plankalkul papers. I'm gonna try running them through google translator and then manually cleaning them up afterwards.
Notes
I'm looking through my character map for some useful HTML entities:
∧ | ∧ |
∨ | ∨ |
⇒ | ⇒ |
→ | → |
× | × |
Hm. ∈σ