María (lenguaje de programación)

Ajustar Compartir Imprimir Citar

Mary es un lenguaje de programación diseñado e implementado por RUNIT en Trondheim, Noruega, en la década de 1970. Tomó prestadas muchas características de ALGOL 68 pero fue diseñado para la programación de sistemas (programación orientada a máquina).

Una característica inusual de su sintaxis era que las expresiones se construían usando los operadores infijos convencionales, pero todos tenían la misma precedencia y la evaluación iba de izquierda a derecha a menos que hubiera corchetes. La asignación tenía el destino a la derecha y la asignación se consideraba un operador más.

Al igual que en C, parece que existieron varias características del lenguaje para permitir la producción de un código razonablemente bien optimizado, a pesar de un generador de código bastante primitivo en el compilador. Estos incluían operadores similares a += et alter en C y declaraciones de registro explícitas para variables.

Características notables:

En 1974 se imprimió un libro que describe a María (cuarta y última edición en 1979): Mary Textbook de Reidar Conradi & Por Holager.

Se crearon compiladores para las minicomputadoras SM-4 y Norsk Data Nord-10/ND-100 de Kongsberg Våpenfabrikk. El compilador Mary original se escribió en NU ALGOL, se ejecutó en la serie Univac-1100 y se usó para iniciar un compilador nativo para ND-100/Sintran-III. RUNIT implementó un compilador CHILL escrito en Mary que se ejecutaba en ND-100 y tenía objetivos Intel 8086 y 80286. Cuando este compilador fue portado a la plataforma VAX, se implementó un backend común para Mary y CHILL. Más tarde, estuvieron disponibles los backends para i386 y SPARC. Dado que el compilador Mary se implementó en Mary, fue posible ejecutar el compilador en todas estas plataformas.

Mary ya no se mantiene.

Ejemplo

BEGIN
INT i:= 10; %% Variable with initial value.
REF INT ri:= i; %% Pointer inicializó para apuntar a i.
INT j:= 11;
J:- REF INT =: ri; %% Conversión y asignación de tipos
Ahora apunta a J.
i =: (ri:- VAL REF INT);
Porcentaje de asignación y conversión de tipo
Por favor, cambiemos.
IF j 10 %% Estado con resultado
Luego se utiliza dentro de una expresión aritmética.
1
ELSE
2
FI + j =: j;
FIN