Reverse Polish notation

Reverse Polish notation (RPN), also known as reverse Łukasiewicz notation, Polish postfix notation or simply postfix notation, is a mathematical notation in which operators follow their operands, in contrast to prefix or Polish notation (PN), in which operators precede their operands. The notation does not need any parentheses for as long as each operator has a fixed number of operands.

The term postfix notation describes the general scheme in mathematics and computer sciences, whereas the term reverse Polish notation typically refers specifically to the method used to enter calculations into hardware or software calculators, which often have additional side effects and implications depending on the actual implementation involving a stack. The description "Polish" refers to the nationality of logician Jan Łukasiewicz,[1][2] who invented Polish notation in 1924.[3][4][5][6]

The first computer to use postfix notation, though it long remained essentially unknown outside of Germany, was Konrad Zuse's Z3 in 1941[7][8] as well as his Z4 in 1945. The reverse Polish scheme was again proposed in 1954 by Arthur Burks, Don Warren, and Jesse Wright[9] and was independently reinvented by Friedrich L. Bauer and Edsger W. Dijkstra in the early 1960s to reduce computer memory access and use the stack to evaluate expressions. The algorithms and notation for this scheme were extended by the Australian philosopher and computer scientist Charles L. Hamblin in the mid-1950s.[10][11][12][13][14][15]

During the 1970s and 1980s, Hewlett-Packard used RPN in all of their desktop and hand-held calculators, and has continued to use it in some models into the 2020s.[16][17] In computer science, reverse Polish notation is used in stack-oriented programming languages such as Forth, dc, Factor, STOIC, PostScript, RPL, and Joy.

  1. ^ Cite error: The named reference Łukasiewicz_1951 was invoked but never defined (see the help page).
  2. ^ Cite error: The named reference Łukasiewicz_1957 was invoked but never defined (see the help page).
  3. ^ Cite error: The named reference Łukasiewicz_1929 was invoked but never defined (see the help page).
  4. ^ Cite error: The named reference Hamblin_1962 was invoked but never defined (see the help page).
  5. ^ Cite error: The named reference Ball_1978 was invoked but never defined (see the help page).
  6. ^ Cite error: The named reference Kennedy_1982 was invoked but never defined (see the help page).
  7. ^ Cite error: The named reference Ceruzzi_1980 was invoked but never defined (see the help page).
  8. ^ Cite error: The named reference Rojas_1997 was invoked but never defined (see the help page).
  9. ^ Cite error: The named reference Burks_1954 was invoked but never defined (see the help page).
  10. ^ Cite error: The named reference Hamblin_1957_1 was invoked but never defined (see the help page).
  11. ^ Cite error: The named reference Hamblin_1957_2 was invoked but never defined (see the help page).
  12. ^ Cite error: The named reference Hamblin_1957_3 was invoked but never defined (see the help page).
  13. ^ Cite error: The named reference Hamblin_1958 was invoked but never defined (see the help page).
  14. ^ Cite error: The named reference McBurney_2008_2 was invoked but never defined (see the help page).
  15. ^ Cite error: The named reference McBurney_2008_1 was invoked but never defined (see the help page).
  16. ^ Cite error: The named reference Osborne_1994 was invoked but never defined (see the help page).
  17. ^ Cite error: The named reference Peterson_2011 was invoked but never defined (see the help page).

© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search