www.wikidata.de-de.nina.az
Reverse Polish LISP RPL selten auch UPL 1 ist eine stackbasierte Programmiersprache ahnlich FORTH die in den Hewlett Packard Taschenrechnern wie dem HP 28 HP 48 und in neueren Serien wie dem HP 49 und HP 50 Verwendung findet 2 Die Sprache wurde 1984 in der HP Niederlassung in Corvallis im US Bundesstaat Oregon entwickelt Das Ziel war einen Ersatz fur die bis dahin ublicherweise in Assembler programmierte Betriebssoftware in Taschenrechnern zu finden 3 Inhaltsverzeichnis 1 Beschreibung 2 Hintergrund 3 Beispiel 4 EinzelnachweiseBeschreibung BearbeitenRPL ist eine Mischung aus Forth Lisp und Smalltalk Forth ist stackorientiert erst auszufuhrende Argumente auf den Stack dann wird das Kommando ausgefuhrt z B lt lt 1 1 gt gt Lisp ist listenorientiert erst Liste Formel auf den Stack dann wird von innen her aufgelost Z B lt lt 1 1 EVAL gt gt wird mit dem Kommando EVAL umgewandelt in lt lt 1 1 gt gt Ebenso lt lt SIN 45 gt gt auf dem Stack in lt lt 45 SIN gt gt Zusatzlich simuliert der Rechner auf dem System einen im Speicherplatz beschrankten Stack wobei dieser tatsachlich nur aus Adressen besteht die zum Speicherinhalt fuhren indirekte Adressierung Speicherinhalt ist dann das Objekt Zahl komplexe Zahl Matrix Formel etc das zum Rechnen geladen werden kann und erst am Ende auf dem Display angezeigt wird Wird eine Stackoperation ausgefuhrt z B SWAP vertauschen werden nur die Adressen im Stack verandert nicht aber der Inhalt Dadurch ist der Rechner sehr schnell Am Ende der Rechnungen nach der Garbage Collection wird erst der neue Inhalt des Stacks durch ein internes Programm auf dem Display angezeigt Hintergrund BearbeitenEiner Anekdote eines der beteiligten RPL Entwickler Dr William Wickes zufolge ist die Bezeichnung willkurlich gewahlt 4 Programmcode in RPL kann wie bei der umgekehrten polnischen Notation UPN RPN eingegeben werden Von Lisp hat die Sprache im Wesentlichen die Eigenschaft Listen beliebigen Inhalts als Datentyp zu verwenden grundlegende Lisp Operationen darauf auszufuhren und mit vielen RPL Befehlen auf diesen zu operieren wie beispielsweise 0 12 5 91 7 43 sinbzw im algebraischen Modus sin 0 12 5 91 7 43 Der Befehlsumfang unterscheidet sich bei den verschiedenen Taschenrechnerreihen Komplexere RPL Programme sind daher nicht abwarts meist aber aufwartskompatibel Es gibt zwei Dialekte der Sprache das komfortablere User RPL und das hardwarenahere jedoch leistungsfahigere Sys RPL Die Verwendung der umgekehrten polnischen Notation fuhrt zu einer ungewohnten nach der Gewohnung aber effizienten Befehlsreihenfolge bei der die zu bearbeitenden Daten stets vor den bearbeitenden Befehlen erfasst werden zunachst werden Elemente auf dem Stack abgelegt anschliessend ein Operator auf sie angewandt Beispiel BearbeitenFolgendes Beispielprogramm gibt die Zahlen von 1 bis 100 in der ersten Bildschirmzeile aus 1 100 FOR I I 1 DISP NEXT Das Programm wird vom Rechner so abgearbeitet Zunachst werden die Zahlen 1 und 100 auf den Stack gelegt Der Befehl FOR entfernt diese beiden Zahlen wieder vom Stack speichert sie als Start und Endwert der Schleife und erkennt den nachfolgenden Bezeichner I als Laufvariable der FOR Anweisung I ist hier eine globale Variable Ab der nachsten Anweisung beginnt das Innere der FOR Schleife Zunachst wird der aktuelle Wert der Variablen I auf den Stack gelegt Der Befehl DISP gibt einen Wert in der Anzeige DISPlay aus wobei der Wert 1 die erste Zeile der Anzeige als Ziel der Ausgabe angibt DISP entfernt sowohl den Wert von I als auch die 1 vom Stack und zeigt I in der ersten Zeile der Anzeige an NEXT kennzeichnet das Ende der SchleifenstrukturIn den meisten Fallen erfolgt die Ubergabe von Argumenten so dass sie zuerst auf den Stack gelegt werden und selbst Kontrollstrukturen diese Werte wie Funktionen als Argumente nehmen Selbst Vergleiche funktionieren so a IF a 1 gt THEN a LOG ELSE a 1 END Beschreibung des Beispiels Zu Beginn des Programms wird ein Wert vom Stack geholt und von in die temporare Variable a verschoben Die Variable a existiert nur so lange wie das Programm innerhalb der inneren abgearbeitet wird Der Wert in der lokalen Variablen a und 1 werden auf den Stack gelegt Der Vergleich gt ist wie mathematische Operation z B welche a und 1 vom Stack entfernt und stattdessen das Ergebnis des Vergleichs auf den Stack legt 0 FALSCH 1 WAHR Die folgende Anweisung THEN nimmt dann das Ergebnis des Vergleichs 0 oder 1 vom Stack und setzt die Verarbeitung entweder nach THEN bis ELSE oder nach ELSE bis END fort Fur die Ausfuhrung in RPL ist es nicht relevant wann der Vergleichswert als Argument fur THEN bereitgestellt wurde Alternativ konnte die Zeile mit dem IF auch so aussehen a 1 gt IF Einzelnachweise Bearbeiten Serie HP 48G Benutzerhandbuch Hewlett Packard Ausgabe 4 2 1994 10 1996 HP Teilenummer 00048 90127 Erstveroffentlichung 07 1993 http www hpcalc org hp48 docs programming rpl3 txt http www hpcalc org hp48 docs programming rplman zip http www faqs org faqs hp hp48 faq part2 Abgerufen von https de wikipedia org w index php title Reverse Polish LISP amp oldid 221968435