Die Polnische Notation wurde ursprünglich 1930 von dem polnischen Logiker und Philosoph Jan Lukasiewicz (1878-1956) erfunden. Sie sieht vor, daß die auszuführende Operation vor den Argumenten anzugeben ist, auf die sie sich bezieht. Um zum Beispiel die Zahlen 3 und 12 zu summieren würde man "+ 3 12" in den Rechner eingeben.
Die Umgekehrte Polnische Notation, 1967 eingeführt von der Firma Hewlett Packard, fordert im Gegensatz dazu, daß die Operation nach den Argumenten angegeben wird, im obigen Beispiel also "3 12 +".
Die normale algebraische Notation, auch Peano-Russell-Notation genannt, lautet für dieses Beispiel "3 + 12 =".
Eingabe | Stack | Vorgang |
154 | 154 | Die Ziffern der Zahl 154 werden eingegeben und gelangen in den Stack. |
Enter | 154 154 |
Um die Zahleneingabe abzuschließen bzw. die Eingabe von zwei aufeinanderfolgenden Zahlen zu trennen, muß ein spezieller Befehl vorhanden sein. Üblicherweise wird dieser "Enter" genannt. Er verdoppelt den untersten Wert im Stack und aktiviert den Ersetzungs-Modus in welchem die nächste Ziffern-Eingabe den untersten Stack-Wert überschreibt. |
3 | 154 3 |
Die Zahl 3 ersetzt den untersten Stack-Wert. |
Enter | 154 3 3 |
Verdopplung und Ersetzungs-Modus. |
4 | 154 3 4 |
Die Zahl 4 ersetzt den untersten Stack-Wert. |
+ | 154 7 |
Die obersten beiden Zahlen des Stack werden entfernt, addiert und das Ergebnis wird wieder in den Stack geschoben. |
5 | 154 7 5 |
Die Zahl 5 wird in den Stack geschoben und "verdrängt" die 7, da der Ersetzungs-Modus nicht aktiv ist. |
Enter | 154 7 5 5 |
Verdopplung und Ersetzungs-Modus. |
6 | 154 7 5 6 |
Die Zahl 6 ersetzt den untersten Stack-Wert. |
+ | 154 7 11 |
5 und 6 werden addiert. |
* | 154 77 |
7 und 11 werden multipliziert |
/ | 2 | 154 wird durch 77 dividiert |
sin | 0.909 | Nimmt die oberste Zahl vom Stack, berechnet den Sinus (in Rad) und schiebt das Ergebnis wieder auf den Stack. |
Bei diesem Beispiel fallen sofort zwei Dinge auf:
Bei den Hewlett Packard Rechnern kann der Stack üblicherweise 4 Werte speichern. Verschachtelte Rechnungen müssen deshalb unter Umständen in einer modifizierten Reihenfolge durchgeführt werden, damit der Stack nicht überläuft.
Die 4 Stack-Register werden üblicherweise X (Eingabe-Ebene), Y, Z und T genannt.
Werden Werte vom Stack genommen, so stellt sich die Frage, was mit dem T-Register geschieht. Hewlett-Packard Rechner lassen es unverändert, andere Rechner setzen seinen Wert auf 0 (z.B. Novus 4510).
Wie im obigen Beispiel nehmen zweiwertige Funktionen (wie z.B. "+") zwei Argument vom Stack und liefern ein Ergebnis zurück auf den Stack. Dies ist allerdings nicht immer so:
Manche Rechner besitzen nur 3 Stack-Register (z.B. Novus 4510) oder "unendlich" viele Stack-Register (z.B. HP-28S/C), siehe Abschnitt RPL unten.
In RPL kann der unendlich große Stack verschiedene Objekt-Typen speichern (Zahlen, Vektoren, Matrizen, Strings usw). Dabei ist seine Größe nur durch den verfügbaren Speicher begrenzt und unbenutzte Stack-Register besitzen nicht den Wert 0 sonderen sind "leer". Sind nicht genügend Werte auf dem Stack vorhanden, um eine Operation auszuführen, so erfolgt eine Fehlermeldung.
RPL kennt allgemeine n-wertige Funktionen, die m Resultate auf dem Stack erzeugen. So kann z.B. eine Anzahl von Stack-Werten in einen Zahlen-Vektor umgewandelt werden und umgekehrt, wobei das Vektor-Objekt nur ein Register im Stack benötigt. Auch gibt es eine Speicher-Funktion, die einen Wert und einen Namen vom Stack nimmt, den Wert unter diesem Variablen-Namen abspeichert und als Ergebnis nichts auf dem Stack zurückgibt.
Im Unterschied zum 4-Ebenen-Stack erfolgt die Zahleneingabe nicht
automatisch
ins X-Register sondern in einer Eingabezeile, die auch das Editieren
des
Wertes bei Tipp-Fehlern erlaubt. Erst durch Drücken von "Enter"
gelangt
der Wert in das X-Register und konsequenterweise gibt es auch nicht den
oben erwähnten "Ersetzungs-Modus". Zur Vereinfachung führen
Operationen
aber implizit ein "Enter" aus, bevor die Operation erfolgt:
Eingabe | UPN Stack | Vorgang | RPL Stack | Vorgang |
3 | 3 | Die Zahl 3 gelangt in das X Register. | - | Die Zahl 3 gelangt in den Editor. |
Enter | 3 3 |
Verdopplung und Ersetzungs-Modus. | 3 | Die 3 wird in den Stack geschoben. |
4 | 3 4 |
Die Zahl 4 ersetzt den untersten Stack-Wert. | 3 | Die Zahl 4 gelangt in den Editor. |
+ | 7 | Die obersten beiden Zahlen des Stack werden entfernt, addiert und das Ergebnis wird wieder in den Stack geschoben. | 7 | Ein implizites Enter wird durchgeführt, welches die 4 in den Stack schiebt. Dann wird die Addition ausgeführt. |
5 | 7 5 |
Die Zahl 5 wird in den Stack geschoben und "verdrängt" die 7, da der Ersetzungs-Modus nicht aktiv ist. | 7 | Die Zahl 5 gelangt in den Editor. |
Enter | 7 5 5 |
Verdopplung und Ersetzungs-Modus. | 7 5 |
Die 5 wird in den Stack geschoben. |
* | 7 25 |
5 wird quadriert. | 35 | Ausführen der Multiplikation. |
Das Beispiel zeigt, daß manche Tastenfolgen in UPN und RPL dasselbe Ergebnis liefern, wie z.B. bei der Addition von 3 und 4. Andere Tastenfolgen liefern allerdings ein unterschiedliches Ergebnis, wie bei der Quadrierung von 5 - hier hätte im RPL-Modus vor der Multiplikation nocheinmal Enter gedrückt werden müssen, um den Wert von 5 zu duplizieren.
RPL wird verwendet bei den Rechner-Modellen HP-28C/S, HP-48GX, HP-49G und anderen.