María (lenguaje de programación)
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:
- Sintaxis del flujo de datos – los valores fluyen de izquierda a derecha, incluyendo la asignación
- La mayoría de los constructos podrían utilizarse en expresiones: bloques, IF, CASE, etc.
- macros recursivas basadas en textos
- Operadores sobrecargados por el usuario, no limitados a identificadores predefinidos como en C++
- Construcción y derreferencia automática de punteros de contexto tipo
- Tipos de rango de escalar
- Array y enumeración de conjunto en los iteradores de lazo
- Descriptores de matriz dinámica (ROW)
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
Contenido relacionado
Siguiente
Modo de Transferencia Asíncrona
Arquitectura MIPS