<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Umgekehrte_polnische_Notation</id>
	<title>Umgekehrte polnische Notation - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Umgekehrte_polnische_Notation"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Umgekehrte_polnische_Notation&amp;action=history"/>
	<updated>2026-04-15T12:40:29Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=Umgekehrte_polnische_Notation&amp;diff=6782&amp;oldid=prev</id>
		<title>imported&gt;Schotterebene: Formatierung</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Umgekehrte_polnische_Notation&amp;diff=6782&amp;oldid=prev"/>
		<updated>2025-10-01T05:56:09Z</updated>

		<summary type="html">&lt;p&gt;Formatierung&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:HP-41CX Programmable Scientific Calculator (removed background, colour adjustment).jpg|mini|hochkant|Programmierbarer Taschen&amp;amp;shy;rechner [[HP-41CX]] aus den 1980er Jahren mit überbreiter Enter-Taste]]&lt;br /&gt;
[[Datei:Typing the calculation for &amp;quot;8 times 6&amp;quot; into a pocket calculator HP-32SII which uses RPN logic.webm|mini|hochkant|Video: Tastenfolge für die Berechnung von acht mal sechs auf einem [[HP-32S|HP-32SII]] von 1991]]&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;umgekehrte polnische Notation&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;UPN&amp;#039;&amp;#039;&amp;#039;) oder &amp;#039;&amp;#039;&amp;#039;reverse polnische Notation&amp;#039;&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;Günter Jorke, Bernhard Lampe, Norbert Wengel: &amp;#039;&amp;#039;Arithmetische Algorithmen der Mikrorechentechnik.&amp;#039;&amp;#039; Auflage 1, VEB Verlag Technik, Berlin 1989, ISBN 3-341-00515-3 ([http://books.google.de/books/about/Arithmetische_Algorithmen_der_Mikroreche.html?id=DqYWAQAAMAAJ books.google.de]).&amp;lt;/ref&amp;gt; {{enS|&amp;#039;&amp;#039;&amp;#039;reverse Polish notation&amp;#039;&amp;#039;&amp;#039;}} (kurz &amp;#039;&amp;#039;&amp;#039;RPN&amp;#039;&amp;#039;&amp;#039;), auch &amp;#039;&amp;#039;&amp;#039;Postfixnotation&amp;#039;&amp;#039;&amp;#039; genannt, ist eine von der [[Polnische Notation|polnischen Notation]] abgeleitete Schreibweise bzw. Eingabelogik für die Anwendung von Operationen. Bei der umgekehrten polnischen Notation werden zunächst die [[Operator (Mathematik)#Operand|Operanden]] niedergeschrieben bzw. eingegeben und danach der darauf anzuwendende [[Operator (Mathematik)|Operator]] ([[Mathematische Notation#Postfixnotation|Postfixnotation]]).&lt;br /&gt;
&lt;br /&gt;
Größere Verbreitung fand die UPN nur durch die [[Taschenrechner]] des Herstellers [[Hewlett-Packard]]. Dessen Rechner besitzen eine meist auffällig große {{Taste|Enter}}-Taste, dafür fehlen die [[Klammer (Zeichen)#Klammern in der Mathematik|Klammertasten]] {{Taste|(}}, {{Taste|)}} und die [[Gleichheitszeichen|Gleichheitstaste]] {{Taste|1==}}. Eine konventionelle Löschtaste zur Einleitung der Berechnung fehlt ebenfalls, da nicht mehr benötigte Ergebnisse während der Berechnungen automatisch aus dem [[Stapelspeicher|Stapel]] geschoben werden. Eine modifizierte Löschtaste wird allerdings zur Beseitigung von Tippfehlern verwendet. Viele der größeren Taschenrechner von Hewlett-Packard, wie etwa die [[HP-48]]-Serie, unterstützen eine objektorientierte Abwandlung und Erweiterung von UPN/RPN namens RPL (für [[Reverse Polish LISP]]), die zwar auf den gleichen Grundprinzipien beruht, aber in einigen Details soweit abweicht, dass Eingabefolgen angepasst werden müssen.&lt;br /&gt;
&lt;br /&gt;
== Prinzip ==&lt;br /&gt;
[[Datei:Upnlogik.svg|mini|Flussdiagramm wie mit einem UPN-Taschenrechner eine Berechnung mit mehreren Zahlen und Operationen ausgeführt wird]]&lt;br /&gt;
In der [[Informatik]] ist die UPN deshalb von Interesse, weil sie eine [[Stapelspeicher|stapelbasierte]] Abarbeitung ermöglicht: Operanden werden beim Lesen auf den Stapel (Stack) gelegt, ein Operator holt sich die Anzahl an Operanden vom Stapel, die seiner Stelligkeit entspricht, und legt das Ergebnis der Operation wieder auf dem Stapel ab. Am Ende liegt dann das Ergebnis des Terms oben auf dem Stapel. Deshalb bildet die UPN die Grundlage für stapelbasierte Programmiersprachen wie [[Forth (Programmiersprache)|Forth]], [[Reverse Polish LISP|RPL]], [[PostScript]] oder die [[Anweisungsliste]] im [[Speicherprogrammierbare Steuerung|SPS]]-Bereich. Eine andere Bezeichnung ist &amp;#039;&amp;#039;Nulladressmaschine&amp;#039;&amp;#039;, weil keine expliziten Speicheradressen im Spiel sind.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Es sollen 3 und 4 addiert werden. Die Operanden sind dann 3 und 4, der Operator ist „+“:&lt;br /&gt;
&lt;br /&gt;
In der Schule ist die erlernte Notation die (sequenziell organisierende) [[Infixnotation]] „3+4“. In der umgekehrten polnischen Notation wird hingegen „3&amp;amp;nbsp;4&amp;amp;nbsp;+“ geschrieben (zwischen 3 und 4 ist ein Leerraum, damit die Zahlenfolge von der Zahl 34 unterschieden werden kann).&lt;br /&gt;
&lt;br /&gt;
Weiteres Beispiel (in der Infixnotation): „(3+4)×5“. Bei der UPN können die Klammern entfallen, alle Operationen (hier „+“ und „×“) arbeiten mit den beiden oberen Elementen des [[Stapelspeicher|Stapels]]. Das Beispiel heißt in UPN dann: „3&amp;amp;nbsp;4&amp;amp;nbsp;+&amp;amp;nbsp;5&amp;amp;nbsp;×“ (zuerst wird der Klammerausdruck „3&amp;amp;nbsp;4&amp;amp;nbsp;+“ausgerechnet, danach die hierbei entstandene Zahl 7 mit 5 multipliziert).&lt;br /&gt;
&lt;br /&gt;
Ein ähnliches Prinzip ist auch im Deutschen und anderen [[Natürliche Sprache|natürlichen Sprachen]] ([[Subjekt-Objekt-Verb|SOV-Sprachen]]) zu finden, hierbei [[Scrambling (Linguistik)|Scrambling]] genannt: In Infinitiven und Nebensätzen des Deutschen werden erst alle Ergänzungen ([[Argument (Linguistik)|Argumente]]) eines Verbs hintereinander genannt, und am Schluss das Verb, das einem Operator gleicht, weil es die Ergänzungen zu einem Satz verknüpft:&lt;br /&gt;
* Die Wäsche mit Seife waschen.&lt;br /&gt;
* Das Mehl in einer Schüssel mit den Eiern verrühren&lt;br /&gt;
* wenn jemand dem Hund das Futter wegnimmt.&lt;br /&gt;
&lt;br /&gt;
Sprachlich kann man die Unterschiede der Infixnotation „(3+4)×5“ und der UPN „3 4 + 5 ×“ daher wie folgt veranschaulichen:&lt;br /&gt;
&lt;br /&gt;
* Statt „3 plus 4, und dann mal 5“ sagt man „3 und 4 addieren und mit 5 multiplizieren“.&lt;br /&gt;
&lt;br /&gt;
Bei nicht-[[Kommutativgesetz|kommutativen]] Operationen ist die Reihenfolge in beiden Schreibweisen identisch.&lt;br /&gt;
&lt;br /&gt;
Bei Operatoren mit nur einem Operanden ist UPN auch bei (Taschen-)Rechnern sehr gebräuchlich, die sonst mit der Infixnotation arbeiten. Beispiele dafür sind die [[Trigonometrie|trigonometrischen]] oder [[Logarithmus|logarithmischen]] Funktionen, die bei den meisten [[Taschenrechner]]n in der Form {{Taste|2}} {{Taste|5}} {{Taste|ln}} oder {{Taste|2}} {{Taste|5}} {{Taste|sin}} eingegeben werden (der Operator „ln“ bzw. „sin“ wird nach dem Operanden „25“ eingegeben).&lt;br /&gt;
&lt;br /&gt;
Für die Konversion zwischen den Schreibweisen lässt sich der [[Shunting-yard-Algorithmus]] verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Vorteile ===&lt;br /&gt;
[[Datei:Financial Calculator Hewlett-Packard HP-12C built from 1981, this item was produced in 1988.jpg|mini|Der UPN-finanzmathematische Taschenrechner [[HP-12C]] wird seit 1981 gebaut.]]&lt;br /&gt;
Der auffälligste Vorteil der UPN ist, dass sie im Allgemeinen mit einer geringeren Anzahl von Tastendrücken auskommt. Um zum Beispiel die Rechnung &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;(1+2)×(3+4)&amp;lt;/span&amp;gt; vorzunehmen, muss man im algebraischen Modus zwölf Tasten betätigen:&lt;br /&gt;
&lt;br /&gt;
:{{Taste|(}} {{Taste|1}} {{Taste|+}} {{Taste|2}} {{Taste|)}} {{Taste|×}} {{Taste|(}} {{Taste|3}} {{Taste|+}} {{Taste|4}} {{Taste|)}} {{Taste|1==}}&lt;br /&gt;
&lt;br /&gt;
Bei vielen Implementierungen lässt sich die Tastenfolge noch optimieren; dies ist allerdings genaugenommen kein „algebraisches Vorgehen“:&lt;br /&gt;
:{{Taste|1}} {{Taste|+}} {{Taste|2}} {{Taste|1==}} {{Taste|×}} {{Taste|(}} {{Taste|3}} {{Taste|+}} {{Taste|4}} {{Taste|1==}}&lt;br /&gt;
&lt;br /&gt;
Im UPN-Modus sind nur neun Tastendrücke erforderlich:&lt;br /&gt;
&lt;br /&gt;
:{{Taste|1}} {{Taste|Enter}} {{Taste|2}} {{Taste|+}} {{Taste|3}} {{Taste|Enter}} {{Taste|4}} {{Taste|+}} {{Taste|×}}&lt;br /&gt;
&lt;br /&gt;
Es sind also drei Tasten weniger zu drücken als im algebraischen Modus; bei aufwendigeren Rechnungen ist die Ersparnis entsprechend größer.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Vorteil der UPN ist es, dass die Rechnung stets schrittweise und mit sichtbaren Zwischenergebnissen ausgeführt wird; man kann die Daten also nach und nach weiterbearbeiten. Allerdings zeigen auch viele algebraische Taschenrechner Zwischenergebnisse, so weit es möglich ist, zum Beispiel beim Betätigen der {{Taste|)}}-Taste den Wert des aktuellen Klammerausdrucks.&lt;br /&gt;
&lt;br /&gt;
Die Verfügbarkeit von Zwischenergebnissen erleichtert nicht nur, die Eingaben zu kontrollieren und Fehler zu identifizieren, sondern erlaubt im Zusammenhang mit den bei UPN verfügbaren Vertauschungsoperationen innerhalb des Stapels, jedes Zwischenergebnis einfach zu speichern, ohne dass dafür gesonderte Speicherregister benötigt würden, und später weiterzuverarbeiten. Insbesondere lässt sich der häufig vorkommende Fall, dass ein Operand gleich nochmals benötigt wird&amp;amp;nbsp;– wie etwa in der Rechnung &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;(a−b)/b&amp;lt;/span&amp;gt;&amp;amp;nbsp;–, ohne erneute Eingabe oder Speicherung von b rechnen; UPN-Rechner verfügen dafür über ein Register LASTX, das den letzten Operanden automatisch speichert.&lt;br /&gt;
&lt;br /&gt;
Die [[Programmierung]] eines UPN-Rechners folgt normalerweise exakt der manuellen Eingabe einer Berechnung, was vor allem bei häufigen kurzen Rechenaufgaben sehr anwendungsfreundlich ist, weil keine gesonderte Programmiersprache erlernt werden muss. Bei algebraischen Taschenrechnern weicht das Programmiermodell oft (aber nicht immer) von der manuellen Formeleingabe ab.&lt;br /&gt;
&lt;br /&gt;
=== Nachteile ===&lt;br /&gt;
Nachteil der UPN ist in erster Linie die Tatsache, dass sie häufig nicht aus dem täglichen Leben beziehungsweise der Schule vertraut ist und daher erst erlernt werden muss; hinzu kommt, dass die Vorteile erst beim intensiveren Gebrauch und vor allem bei der Arbeit mit komplizierten Formeln zu bemerken sind. Die Gewöhnung an eine der beiden Notationen kann den Umgang mit der jeweils anderen erschweren.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
In klassischen UPN-Rechnern werden vier Stack-Ebenen verwendet, die bei Hewlett-Packard mit X (Anzeigewert), Y, Z und T bezeichnet sind. Erste Umsetzungen mit nur zwei (Sinclair-Taschenrechner) oder drei Registern (X, Y und Z) hatten sich als unpraktisch erwiesen. Daneben gab es auch Implementierungen mit fünf Registern (Heathkit OC-1401). Seit neuerem existieren auch freie Implementierungen mit acht Stackebenen (X, Y, Z, T, A, B, C, D) (WP 31S und WP 34S). Aktuelle Implementierungen der HP-Taschenrechner ab der Baureihe HP 48 haben keine Begrenzung in der Anzahl der Stack-Ebenen (nur noch durch den Speicher begrenzt). Dadurch sind auch die Namenskonventionen insbesondere für die Register Z, T usw. entfallen. Aus Gründen der Tastaturbeschriftung sowie zum einfacheren Verständnis werden jedoch auch bei diesen Rechnern die ersten beiden Stack-Ebenen als Y und X bezeichnet (auch wenn sie programmatisch nicht mehr so adressiert werden). Der quasi vollkommene Wegfall der Stack-Ebenen-Limitierung hat einerseits den Vorteil, dass auch komplexere Rechnungen übersichtlich eingegeben sowie Zwischenergebnisse gespeichert werden können, aber auch den Nachteil, dass der Stack mit einer [[Tastenkombination]] gelöscht werden muss, um alte Ergebnisse zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Register L (LASTX) speichert automatisch den letzten Wert von X. Zusätzlich ist eine Vertauschung von X und Y (wichtig für nicht-kommutative Operationen) sowie eine [[Zyklische Permutation|zyklische Vertauschung]] aller Stack-Register (&amp;#039;&amp;#039;roll down&amp;#039;&amp;#039;, der Wert von X gelangt nach T, der Wert von Y nach X usw.) implementiert. In besser ausgestatteten Rechnern ist auch die umgekehrte zyklische Vertauschung (&amp;#039;&amp;#039;roll up&amp;#039;&amp;#039;) und später (im [[HP-41]]) das beliebige Speichern und Zurückrufen von Stackregistern möglich.&lt;br /&gt;
&lt;br /&gt;
Register T hat dabei eine Sonderfunktion. Operationen, die mehr als ein Argument haben, verschieben den Stack „nach unten“, und der Wert von T wird kopiert, was für fortgesetztes Rechnen sehr vorteilhaft sein kann. Frühe Umsetzungen löschten auf einigen Rechnern T &amp;#039;&amp;#039;(T clears on pop)&amp;#039;&amp;#039;, was sich als weniger praktisch herausstellte. Es gab auch Modelle (wie den [[HP-35]]), die bei komplexen Operationen T als Zwischenspeicher benötigten und dessen Inhalt überschrieben. Bei Rechnern, die RPL unterstützen, ist die Tiefe des Stacks nur durch den zur Verfügung stehenden Speicherplatz beschränkt. Beim [[HP Prime]] ist sie auf 128 Stack-Ebenen begrenzt. Demzufolge entfällt dort auch die oben skizzierte Sonderfunktion des T-Registers.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Besonderheit betrifft die Funktion der ENTER-Taste, die bei Hewlett-Packard-Rechnern, die klassisches UPN (&amp;#039;&amp;#039;Classical RPN&amp;#039;&amp;#039; im englischen Sprachraum) implementieren, unter bestimmten Bedingungen den Inhalt des X-Registers automatisch in das Y-Register dupliziert, was bei UPN-Rechnern anderer Hersteller und auch bei RPL-Rechnern nicht geschieht. Auch alle neueren Hewlett-Packard-Rechner mit UPN-Unterstützung, die nicht eines der klassischen Modelle nachbilden, weichen in diesem Punkt von der klassischen UPN-Eingabelogik ab und arbeiten diesbezüglich stattdessen wie RPL. Diese Variante erfordert auch leichte Anpassungen in der Kommandoabfolge in Programmen und wird im englischen Sprachraum umgangssprachlich oft als &amp;#039;&amp;#039;Entry RPN&amp;#039;&amp;#039; (Eingabe-UPN) bezeichnet.&lt;br /&gt;
&lt;br /&gt;
In der Vergangenheit, insbesondere in der Frühzeit elektronischer Taschenrechner, galt als wesentlicher Vorteil der UPN, dass sie sich mit geringerem Hardwareaufwand realisieren lässt. Die Praxis zeigt, dass sich relativ komplexe mathematische Berechnungen mit einem Stapel von nur vier Einträgen ausführen lassen. Demgegenüber muss ein algebraischer Taschenrechner für jede Klammerebene und allgemein für jedes Zwischenergebnis („[[Punktrechnung vor Strichrechnung|Punkt- vor Strichrechnung]]“), das er verarbeiten soll, ein eigenes Register besitzen; in der Praxis wurden algebraische Taschenrechner mit bis zu zwölf Operandenregistern zur Speicherung von bis zu elf unvollständigen Operationen hergestellt. Mit der Leistungsfähigkeit der heutigen elektronischen Schaltkreise ist dieser theoretische Vorteil der UPN technisch nicht mehr bedeutsam, und es werden heute moderne UPN-Taschenrechner mit mehr als vier Stapelregistern und mit zusätzlichen Speicherregistern ausgestattet.&lt;br /&gt;
&lt;br /&gt;
== Algorithmen ==&lt;br /&gt;
=== Konvertierung von Infixnotation nach UPN ===&lt;br /&gt;
[[Datei:Term42.svg|mini|hochkant=0.6|Arithmetischer Ausdruck &amp;lt;math&amp;gt;23\cdot 2 -4&amp;lt;/math&amp;gt; als Term-Baum]]&lt;br /&gt;
Ein arithmetischer Ausdruck in [[Infixnotation]] kann zeichenweise mit dem [[Shunting-yard-Algorithmus]] (deutsch: ‚Rangierbahnhof‘-Algorithmus) direkt in die UPN umgewandelt werden.&lt;br /&gt;
&lt;br /&gt;
Bei der Darstellung eines Ausdrucks in Infixnotation als Term-Baum entspricht die UPN der Ausgabe der Knoten-Labels in einem [[Binärbaum#Traversierung|Postorder-Traversal]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Infixnotation: &amp;lt;math&amp;gt;23\cdot 2-4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Postorder-Traversal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   postorder(23*2-4)&lt;br /&gt;
-&amp;gt; postorder(23*2); postorder(4); print(-);&lt;br /&gt;
-&amp;gt; postorder(23); postorder(2); print(*); postorder(4); print(-);&lt;br /&gt;
-&amp;gt; print(23); print(2); print(*); print(4); print(-)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Postfix-Notation (UPN): &amp;lt;math&amp;gt;23\;2\cdot 4\; -&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Definition:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Analog zu einem Postorder-Traversal lässt sich die UPN formal über die Konvertierung von einem Infix-Ausdruck rekursiv definieren:&lt;br /&gt;
&lt;br /&gt;
# Wenn der Infix-Ausdruck &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; ein Operand ist, dann ist &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; in UPN.&lt;br /&gt;
# Wenn der Infix-Ausdruck in der Form &amp;lt;math&amp;gt;e_1 \theta e_2&amp;lt;/math&amp;gt; vorliegt, dann ist seine UPN durch &amp;lt;math&amp;gt;e_1&amp;#039; e_2&amp;#039; \theta&amp;lt;/math&amp;gt; definiert, wobei &amp;lt;math&amp;gt;e_1&amp;#039;&amp;lt;/math&amp;gt; bzw. &amp;lt;math&amp;gt;e_2&amp;#039;&amp;lt;/math&amp;gt; die UPN von &amp;lt;math&amp;gt;e_1&amp;lt;/math&amp;gt; bzw. &amp;lt;math&amp;gt;e_2&amp;lt;/math&amp;gt; bezeichnen.&lt;br /&gt;
# Wenn ein Infix-Ausdruck die Form &amp;lt;math&amp;gt;(e)&amp;lt;/math&amp;gt; hat, dann ist &amp;lt;math&amp;gt;e&amp;#039;&amp;lt;/math&amp;gt; seine UPN, wobei &amp;lt;math&amp;gt;e&amp;#039;&amp;lt;/math&amp;gt; die UPN von &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; bezeichnet.&lt;br /&gt;
&lt;br /&gt;
==== Anwendung ====&lt;br /&gt;
Die Umwandlung eines Infix-Terms nach UPN ist ein wichtiger Bestandteil beim [[Compilerbau]].&lt;br /&gt;
&lt;br /&gt;
=== Auswertung ===&lt;br /&gt;
Ein Ausdruck in UPN wird ausgewertet, indem er von links nach rechts gelesen wird, wobei Operanden auf einen [[Stapelspeicher|Stack]] gelegt werden. Wird ein &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;-stelliger [[Operator (Mathematik)|Operator]] gelesen, werden &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; Elemente vom Stack entfernt, der Operator auf diese angewendet und das Ergebnis auf den Stack zurückgelegt. Am Ende der Verarbeitung liegt das Gesamtergebnis der Berechnung auf dem Stack. Der folgende [[Pseudocode]] spezifiziert diesen Algorithmus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compute_rpn(input)&lt;br /&gt;
  stack_init&lt;br /&gt;
  foreach (o in input)&lt;br /&gt;
     switch o&lt;br /&gt;
       isnumber&lt;br /&gt;
         push o&lt;br /&gt;
       isbinoperator&lt;br /&gt;
         right = pop&lt;br /&gt;
         left = pop&lt;br /&gt;
         t = compute(left, o, right)&lt;br /&gt;
         push t&lt;br /&gt;
  return pop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Reihenfolge, in der die Operanden vom Stack entnommen werden, ist nicht beliebig. Sie ergibt sich direkt aus der Definition der Umwandlung von Infix-Ausdrücken in die UPN. Bei nicht-[[Kommutativgesetz|kommutativen]] Operatoren kann eine falsche Operandenfolge zu einem falschen Ergebnis führen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039; &amp;lt;math&amp;gt;23\;2\cdot 4\; -&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
           stack : []&lt;br /&gt;
o = 23     stack : [23]&lt;br /&gt;
o = 2      stack : [23,2]&lt;br /&gt;
o = *&lt;br /&gt;
right = 2  stack : [23]&lt;br /&gt;
left = 23  stack : []&lt;br /&gt;
t = 46     stack : [46]&lt;br /&gt;
o = 4      stack : [46,4]&lt;br /&gt;
o = -&lt;br /&gt;
right = 4  stack : [46]&lt;br /&gt;
left = 46  stack : []&lt;br /&gt;
t = 42     stack : [42]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modelle ==&lt;br /&gt;
Es gibt im Vergleich zu rein algebraischen Taschenrechnern nur wenige Taschenrechnermodelle, die auch oder ausschließlich UPN unterstützen; der einzige etablierte Hersteller, der eine größere Zahl UPN-fähiger Geräte herstellt, ist [[Hewlett-Packard]]. Mit Ausnahme des seit 1981 erhältlichen reinen UPN-Taschenrechners [[HP-12C]] und einiger rein algebraischer Geräte im unteren Preisbereich unterstützen die Anfang 2007 neu auf den Markt gekommenen HP-Taschenrechner wie der [[HP 48#HP&amp;amp;nbsp;50g|HP-50g]] und der [[HP Prime]] beide Eingabenotationen.&lt;br /&gt;
&lt;br /&gt;
Derzeit bietet auch das russische Unternehmen Semico aus Nowosibirsk Taschen- und [[Desktop-Computer|Tischrechner]] mit UPN-Eingabe, allerdings ausschließlich mit [[kyrillisch]]er Tastatur, an.&amp;lt;ref&amp;gt;[http://mk.semico.ru/ mk.semico.ru]&amp;lt;/ref&amp;gt; Seit 2012 stellt auch die schweizerische &amp;#039;&amp;#039;SwissMicros&amp;#039;&amp;#039; eine Reihe an unterschiedlichen UPN-Rechnern her, die sich überwiegend an Vorbildern von HP orientieren.&lt;br /&gt;
&lt;br /&gt;
Der in [[Emacs]] integrierte Taschenrechner &amp;#039;&amp;#039;Calc&amp;#039;&amp;#039; verwendet optional die umgekehrte polnische Notation. Auf der [[Shell (Betriebssystem)|Shell]] nahezu jedes [[Unix]]-Systems steht der Rechner [[dc (Unix)|dc]] zur Verfügung, der ebenfalls auf der umgekehrten polnischen Notation beruht. Auch der Rechner von [[macOS]] kann optional im UPN-Betrieb genutzt werden, wobei allerdings in früheren Versionen eine falsche Implementierung des Stacks die Benutzbarkeit einschränkte. Spätestens seit macOS 10.12 (Sierra) ist der Stack hier korrekt implementiert.&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werden insbesondere im [[Open Source]], [[Freeware|Free-]] und [[Shareware]]bereich etliche Programme angeboten, die UPN-Rechner emulieren bzw. die UPN verwenden.&lt;br /&gt;
&lt;br /&gt;
Einige [[BASIC]]-Dialekte (insbesondere auf HP-Computern) haben zur internen Darstellung des Bytecodes die UPN-Form verwendet. Diese Rechner übersetzten die eingegebenen Programmzeilen (und arithmetischen Ausdrücke) in UPN und legten sie so im Speicher ab. Während der Laufzeit konnten die Ausdrücke damit mit maximaler Effizienz abgearbeitet werden, da keine arithmetischen Umformungen oder Prioritätenbetrachtungen mehr vorgenommen werden mussten. Insbesondere die HP-Computer der Serien 70 und 80 konnten auf diesem Wege trotz geringer Taktfrequenz hohe Verarbeitungsgeschwindigkeiten erzielen.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Die [[polnische Notation]] (auch Präfix-Notation oder Łukasiewicz-Notation) verdankt ihren Namen dem polnischen Mathematiker [[Jan Łukasiewicz]], der sie in den 1920er-Jahren entwickelte (eine genauere Datierung ist wohl nicht möglich&amp;lt;ref&amp;gt;„Die ältesten Texte in den ‚Selected Works‘, in denen [[Jan Łukasiewicz|Łukasiewicz]] polnische Notation verwendet, datieren relativ spät, sind aber Präsentationen vorangehender Arbeiten, die ‚in the course of the years 1920–1930‘ (S. 131) stattgefunden haben, also auch keine genauere Zeitangabe geben.“ (Ch.&amp;amp;nbsp;Gottschall: &amp;#039;&amp;#039;Logische Notationen und deren Verarbeitung auf elektronischen Rechenanlagen aus theoretischer, praktischer und historischer Sicht.&amp;#039;&amp;#039; (Diplomarbeit), Wien 2005, S.&amp;amp;nbsp;88).&amp;lt;/ref&amp;gt;). Łukasiewicz stellte die polnische Notation als kompakte und klammerfreie Schreibweise für die [[Aussagenlogik]] vor.&lt;br /&gt;
&lt;br /&gt;
Łukasiewicz weist selbst darauf hin,&amp;lt;ref&amp;gt;&amp;#039;&amp;#039;On the history of the logic of propositions.&amp;#039;&amp;#039; In: Łukasiewicz: &amp;#039;&amp;#039;Selected Works.&amp;#039;&amp;#039; 1970.&amp;lt;/ref&amp;gt; dass seine Schreibweise zwar die kompakteste und die erste linear geschriebene klammerfreie Schreibweise ist, aber nicht die erste klammerfreie Schreibweise überhaupt. Das Verdienst, die Logik von der Klammer befreit zu haben, kommt [[Gottlob Frege]] mit seiner bereits 1879 veröffentlichten [[Begriffsschrift]]notation zu.&lt;br /&gt;
&lt;br /&gt;
Der gleiche Effekt der Klammerfreiheit wird erreicht, wenn der Operator nicht vor den Operanden, sondern danach steht. Diese Variante der polnischen Notation, die als „umgekehrte polnische Notation“ bezeichnet wird, wurde vermutlich ebenfalls bereits von Łukasiewicz gesehen. Explizit angesprochen und praktisch verwendet wurde die umgekehrte polnische Notation allerdings wohl erst in den 1950er-Jahren vom australischen Philosophen [[Charles Hamblin]].&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{BibISBN|0201896834|Seite=338}}&lt;br /&gt;
* {{BibISBN|0139145567|Seite=214}}&lt;br /&gt;
* {{BibISBN|0720422523}}&lt;br /&gt;
* {{BibDOI|10.1093/comjnl/5.3.210}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Toter Link | url=http://h41111.www4.hp.com/calculators/ch/ger/articles/rpn.html | text=Eine Einführung in die umgekehrte polnische Notation}} bei HP&lt;br /&gt;
* {{Internetquelle | url=https://ksuweb.kennesaw.edu/faculty/rbrow211/web_lectures/postfix/ | autor= Bob Brown | titel= Postfix Notation Mini-Lecture | datum=2016-05-06 | sprache = en | abruf=2021-12-19 | abruf-verborgen=1}}&lt;br /&gt;
* [http://www.hpmuseum.org/rpn.htm Verwendung der RPN bei HP] (englisch)&lt;br /&gt;
* [https://www.youtube.com/watch?v=qRrAj-GCTQM &amp;#039;&amp;#039;Is it Really a Pathetic Name?&amp;#039;&amp;#039;] Vortrag auf der HP Handheld Conference am, 22.–23. Sept. 2012 in Nashville (englisch)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Compilerbau]]&lt;br /&gt;
[[Kategorie:Mathematische Notation]]&lt;br /&gt;
[[Kategorie:Normalform]]&lt;br /&gt;
[[Kategorie:Wikipedia:Artikel mit Video]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Schotterebene</name></author>
	</entry>
</feed>