Jan Lukasiewicz fue un matemático polaco que nació y vivió en la actual Ucrania. Uno de sus mas afamados aportes fué realizado en el año 1920. Se trata de un sistema alternativo para la notación de expresiones matemáticas, cuya principal característica es que no requiere el uso de agrupadores (paréntesis, llaves o corchetes) a fines de indicar la precedencia de las operaciones. La clave del sistema propuesto por Lukasiewicz es indicar los operadores antes que los operandos (notación prefija). A esta notación se la conoce como Notación Polaca en claro tributo a su creador. En el año 1954 Burks, Warren, y Wright desarrollan, probablemente partiendo del trabajo de Lukasiewicz, la que es conocida actualmente como Notación Polaca Inversa (o RPN por sus siglas en ingles) variante postfija de la Notación Polaca.
Analizaremos un caso simple para exponer la idea de las distintas notaciones. Por ejemplo: la expresión algebraica “(2 + 3) * 4”, requiere el uso de paréntesis para indicar que el producto debe hacerse entre el número 4 y el resultado de la suma de los números 2 y 3. Se puede apreciar que de no existir los paréntesis la operación con prioridad sería el producto. Utilizando la Notación Polaca la misma operación se puede indicar como “* + 2 3 4” y también como “* 4 + 2 3”, ambas notaciones son prefijas y no requieren la utilización de los paréntesis. Si a primera vista no resulta clara esta notación nos podemos valer de un pequeño árbol binario invertido que muestra como los operandos “consumen” operadores.
Arbol binario invertido de Arbol binario invertido de la expresión “ * + 2 3 4 ” la expresión “ * 4 + 2 3” La misma expresión indicada en notación postfija es “2 3 + 4 *” o “ 4 2 3 + *”, que ahora podemos representar con los siguientes árboles binarios.
Arbol binario de la expresión Arbol binario de la expresión “ 2 3 + 4 *” “ 4 3 2 + * ” Hewlett Packard y el Sistema RPN.
La compañía Hewlett-Packard implementó la Notación Polaca Inversa por primera vez en su calculadora de mesa HP-9100A en el año 1968. Si bien Hewlett-Packard no fué la primer compañia en adoptar la Notación Polaca Inversa, no cabe duda que fué esta la que le dió mayor difusión, convirtiendo el sistema RPN en un símbolo de la marca. La implementación de Hewlett-Packard se vale de un Stack LIFO (arreglo de datos tipo pila, donde el último elemento ingresado es el primero en salir) y la incorporación de una tecla especial, necesaria para separar los operandos que consumirán las distintas teclas de función, se trata de la tecla ENTER. Esta tecla es otro de los elementos que permite diferenciar de un golpe de vista a una calculadora de Hewlett-Packard.
La Notación Polaca Inversa se mostró como una solución muy eficiente en computación y es ampliamente utilizada en compiladores e intérpretes. Algunos ejemplos son los lenguajes Forth y Lisp. Este último explica el nombre de los lenguajes de programación elegidos por Hewlett Packard para su serie de calculadoras 48, User RPL y System RPL (Reverse Polish Lisp).
Algunas diferencias con el sistema infijo o Algebraico.
Vamos a mencionar solo dos diferencias entre las calculadoras “tradicionales” o con notación infija o algebraica y las basadas en RPN. En principio y como ya se anticipó, las calculadoras con notación RPN no requieren del usuario un análisis de las expresiones a fines de determinar la precedencia de los operadores para ser ingresadas en la máquina. La segunda diferencia es tal vez más sutil, se trata de la consistencia en cuanto al modo de ingresar las distintas operaciones. En las calculadoras algebraicas cuando las funciones requieren un único parámetro se utiliza la notación postfija. Veamos algunos ejemplos. Cuando pretendemos calcular raíces, potencias o funciones trigonométricas debemos ingresar primero el parámetro de la función y luego seleccionar la función correspondiente. De manera que estamos utilizando la notación postfija. Es curioso ver como la amplia difusión de las calculadoras algebraicas y su utilización volvieron natural esta inconsistencia.
Referencias:
HP48 Insights. Part I: Principles and Programming, William C. Wickes, 1993, Larken Publications. The Hewlett-Packard Personal Calculator Digest, Volume Seven, 1980.
El texto explicativo del sistema RPN fue escrito por Gus, a quien hago publico mi agradecimiento. Mi aporte fue restaurar y fotografiar las bellezas que se ven a continuacion.