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 la máquina).
Paradigma | imperativo |
---|---|
Familia | ALGOL |
Desarrollador | EJECUTARLO |
Apareció por primera vez | 1971 |
Disciplina de mecanografía | estático , fuerte |
SO | Cross-plataforma : Kongsberg Våpenfabrikk SM-4, Norsk datos Nord-10 / ND-100, Univac-1100 series, ND-100 / Sintran -III, i386 , SPARC |
Influenciado por | |
ALGOL 68 |
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 simplemente un operador más.
Al igual que en C , parece que han existido varias características del lenguaje que permiten producir 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 de flujo de datos : los valores fluyen de izquierda a derecha, incluida la asignación
- La mayoría de las construcciones se pueden usar en expresiones: bloques, IF, CASE, etc.
- Macros recursivas basadas en texto
- Operadores sobrecargados definidos por el usuario, no restringidos a identificadores predefinidos como en C ++
- Creación y desreferenciación automática de punteros del contexto de tipo
- Tipos de rango escalar
- Matriz y enumeración de conjuntos en iteradores de bucle
- Descriptores de matriz dinámica (FILA)
En 1974 se imprimió un libro que describe a Mary (cuarta y última edición en 1979): Mary Textbook de Reidar Conradi & Per Holager.
Se crearon compiladores para las 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 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.
María ya no se mantiene.
Ejemplo
EMPEZAR INT i: = 10; %% Variable con valor inicial. REF INT ri: = i; %% Puntero inicializado para apuntar a i. INT j: = 11; j: - REF INT =: ri; %% Tipo de conversión y asignación %% ri ahora apunta a j. i =: (ri: - VAL REF INT); %% Asignación y conversión de tipo %% ri apunta a j, por lo que j se cambia. IF j> 10 %% Declaración condicional con resultado THEN %% utilizado dentro de una expresión aritmética. 1 DEMÁS 2 FI + j =: j;FINAL