Euler, siguiendo la misma tónica de bautizar los lenguajes con personajes de la ciencia, como Pascal, es un lenguaje de programación, el cual es creación de uno de los científicos más importantes en el mundo de la tecnología, Niklaus Wirth (creador de Pascal y Premio Turing), quien junto con Helmut Weber, desarrollaron este lenguaje buscando ser una extensión y generalización de Algol 60, teniendo como metas:
- Que fuese más simple y flexible que Algol 60
- Que fuese un lenguaje de programación útil y que sus procesos tuviesen una eficiencia razonable
- Que pueda ser definido con un formalismo riguroso
El lenguaje Euler, curiosamente, existe desde 1965, en donde entre sus características podemos ver que los arreglos, los procedimientos y los switches no son cantidades que se declaran y se nombran con identificadores: no son (en oposición a Algol – un lenguaje muy parecido a Pascal incluso en su sintaxis), cantidades que están en el mismo nivel que las variables, sino que estas cantidades están a nivel de constantes numéricas y booleanas. Así entonces, aparte de los valores numéricos y las constantes lógicas, Euler introduce los siguientes tipos adicionales
- Referencia
- Etiqueta
- Símbolo
- Lista (arreglo)
- Procedimiento
- Sin definir
Todas las constantes pueden ser asignadas como variables y tienen la misma forma que en Algol 60, pero no tienen fijos tipos. Euler es tipificado dinámicamente, lo cual sorprende un poco porque el manejo de variables de acuerdo a contexto no hace que la programación sea necesariamente más fácil de comprender, aunque sí la hace más poderosa y compleja. Es más, un procedimiento puede producir un valor de cualquier tipo cuando se ejecuta y este tipo puede variar de una llamada de un procedimiento al siguiente.
Igualmente los elementos de una lista pueden tener valores de cualquier tipo (como en Prolog) y estos pueden ser diferentes de elemento en elemento dentro de la lista. Los elementos de la lista pueden ser procedimientos (eso no existe en Algol) y se crean mediante un árbol internamente. Euler tiene operadores para prueba y conversión de tipos, asunto que parece más que una característica, una necesidad.
La versión escrita de Euler por el propio Wirth puede hallarse aquí.