Mary es un lenguaje de programación diseñado e implementado por Mark Rain [1] en RUNIT en Trondheim , Noruega durante la década de 1970. Tomó prestadas muchas características de ALGOL 68, pero fue diseñado para programación de sistemas (programación orientada a máquinas), con un subconjunto de operaciones reservadas para uso de nivel superior. [2]
Una característica inusual de su sintaxis era que las expresiones se construían utilizando los operadores infijos convencionales , pero todos ellos tenían la misma precedencia y la evaluación se hacía de izquierda a derecha a menos que hubiera corchetes. [3] La asignación tenía el destino a la derecha y la asignación se consideraba simplemente otro operador.
De manera similar a C , parece que existieron varias características del lenguaje que permitieron producir código razonablemente bien optimizado, a pesar de un generador de código bastante primitivo en el compilador. Estas incluían operadores similares a +=
et alter en C y declaraciones explícitas de registros para variables .
Características notables:
Los compiladores se crearon para los miniordenadores 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 utilizó para iniciar un compilador nativo para ND-100 / Sintran -III. RUNIT implementó un compilador CHILL escrito en Mary que se ejecutó en ND-100 y tenía objetivos Intel 8086 y 80286. Cuando este compilador se trasladó a la plataforma VAX , se implementó un backend común para Mary y CHILL. Más tarde, estaban 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. Se desarrolló una versión mejorada, Mary/2, utilizando un nuevo compilador en los Estados Unidos. [5]
María ya no se mantiene.
COMENZAR INT i := 10; %% Variable con valor inicial. REF INT ri := i; %% Puntero inicializado para apuntar a i. INT j := 11; j :- REF INT =: ri; %% Conversión y asignación de tipos %% ri ahora apunta a j. i =: (ri :- VAL REF INT); %% Asignación y conversión de tipos %% ri apunta a j por lo que j se cambia. SI j > 10 %% Sentencia condicional con resultado ENTONCES %% se utiliza dentro de una expresión aritmética. 1 DEMÁS 2 FI + j =: j;FIN
Este artículo se basa en material tomado del Diccionario gratuito en línea de informática antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencia" del GFDL , versión 1.3 o posterior.