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 philosopher and computer scientist Charles L. Hamblin in the mid-1950s.[10][11][12][13][14][15][excessive citations]
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.
Łukasiewicz_1951
was invoked but never defined (see the help page).Łukasiewicz_1957
was invoked but never defined (see the help page).Łukasiewicz_1929
was invoked but never defined (see the help page).Hamblin_1962
was invoked but never defined (see the help page).Ball_1978
was invoked but never defined (see the help page).Kennedy_1982
was invoked but never defined (see the help page).Ceruzzi_1980
was invoked but never defined (see the help page).Rojas_1997
was invoked but never defined (see the help page).Burks_1954
was invoked but never defined (see the help page).Hamblin_1957_1
was invoked but never defined (see the help page).Hamblin_1957_2
was invoked but never defined (see the help page).Hamblin_1957_3
was invoked but never defined (see the help page).Hamblin_1958
was invoked but never defined (see the help page).McBurney_2008_2
was invoked but never defined (see the help page).McBurney_2008_1
was invoked but never defined (see the help page).Osborne_1994
was invoked but never defined (see the help page).Peterson_2011
was invoked but never defined (see the help page).