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:
- Sintaxis de flujo de datos : los valores fluyen de izquierda a derecha, incluida la asignación
- Basado en expresiones; [4] la mayoría de las construcciones podrían usarse en expresiones: bloques, IF, CASE, etc.
- Macros recursivas basadas en texto
- Operadores definidos por el usuario sobrecargados, no restringidos a identificadores predefinidos como en C++
- Construcción y desreferenciación automática de punteros desde el contexto de tipo
- Tipos de rango escalar
- Enumeración de matrices y conjuntos en iteradores de bucle
- Descriptores de matriz dinámica (ROW)
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.
Ejemplo
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
Véase también
Referencias
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.
- ^ van der Meulen, SG (junio de 1977). "ALGOL 68 podría haber sido". Avisos ACM SIGPLAN . 12 (6): 1–18. doi : 10.1145/872738.807137.
- ^ Gjessing, Stein; Nygaard, Kristen (1988). Conferencia europea ECOOP '88 sobre programación orientada a objetos: Oslo, Noruega, 15 al 17 de agosto de 1988. Actas . Medios de ciencia y negocios de Springer. ISBN 978-3-540-50053-7.
- ^ Rain, Mark (enero de 1973). "Expresiones de operación en MARY". Avisos SIGPLAN de ACM . 8 (1): 7–14. doi :10.1145/986925.986927.
- ^ Hills, Michael Turner; Kanō, Sadahiko (1976). Programación de sistemas de conmutación electrónica: aspectos en tiempo real y sus implicaciones lingüísticas . Peregrinus [para] la Institución de Ingenieros Eléctricos. ISBN 978-0-901223-80-7.
- ^ Rain, Mark. "La estructura del compilador MARY/2". Software, práctica y experiencia . 11. Penobscot Research Center: Wiley : 225–235.
Lectura adicional
- Conradi, Reidar; Holager, Per (1974). Libro de texto MARÍA . CORRER. ISBN 978-82-595-0403-6.