Modula-2 es un lenguaje de programación procedimental estructurado desarrollado entre 1977 y 1985 por Niklaus Wirth en ETH Zurich . Fue creado como el lenguaje para el sistema operativo y el software de aplicación de la estación de trabajo personal Lilith . [1] Más tarde se usó para programar fuera del contexto de Lilith.
Paradigmas | ocultación imperativa , estructurada , modular , de datos y procedimientos , concurrente |
---|---|
Familia | Wirth Modula |
Diseñada por | Niklaus Wirth |
Apareció por primera vez | 1978 |
Disciplina de mecanografía | Estático , fuerte , seguro |
Alcance | Léxico (estático) |
Plataforma | Lilith ( AMD 2901 ) |
SO | Multiplataforma |
Extensiones de nombre de archivo | .mod, .m2, .def, .MOD, .DEF, .mi, .md |
Sitio web | www |
Implementaciones importantes | |
Compilador ETH escrito por Niklaus Wirth GNU Modula-2 ADW Modula-2 | |
Dialectos | |
PIM2, PIM3, PIM4, ISO | |
Influenciado por | |
Modula , Mesa , Pascal , ALGOL W , Euclid | |
Influenciado | |
Modula-3 , Oberon , Ada , Fortran 90 , Lua , Seed7 , Zonnon , Modula-GM |
Wirth vio Modula-2 como un sucesor de sus lenguajes de programación anteriores Pascal y Modula . [2] [3] Los conceptos principales son:
- El módulo como unidad de compilación para compilación separada
- La corrutina como bloque de construcción básico para procesos concurrentes
- Tipos y procedimientos que permiten el acceso a datos específicos de la máquina.
El diseño del lenguaje fue influenciado por el lenguaje Mesa y el Xerox Alto , ambos de Xerox PARC , que Wirth vio durante su año sabático de 1976 allí. [4] La revista de informática Byte dedicó el número de agosto de 1984 al lenguaje y su entorno. [5]
Modula-2 fue seguido por Modula-3 , y más tarde por la serie de lenguajes Oberon .
Descripción
Modula-2 es un lenguaje procedimental de propósito general , suficientemente flexible para realizar programación de sistemas , pero con una aplicación mucho más amplia. En particular, se diseñó para admitir la recopilación y el resumen de datos por separado de una manera sencilla. Gran parte de la sintaxis se basa en el lenguaje anterior y más conocido de Wirth, Pascal . Modula-2 fue diseñado para ser ampliamente similar a Pascal, con algunos elementos y ambigüedades sintácticas eliminados y la importante adición de un concepto de módulo y soporte de lenguaje directo para multiprogramación .
El lenguaje permite el uso de compiladores de una sola pasada . Un compilador de este tipo de Gutknecht y Wirth era aproximadamente cuatro veces más rápido que los compiladores de múltiples pasadas anteriores . [6]
A continuación, se muestra un ejemplo del código fuente del programa "Hola mundo":
MÓDULO Hola ; FROM STextIO IMPORT WriteString ; BEGIN WriteString ( "¡Hola mundo!" ); FIN Hola .
Se puede utilizar un módulo Modula-2 para encapsular un conjunto de subprogramas y estructuras de datos relacionados, y restringir su visibilidad desde otras partes del programa. El diseño del módulo implementó la función de abstracción de datos de Modula-2 de una manera muy limpia. Los programas Modula-2 se componen de módulos, cada uno de los cuales consta de dos partes: un módulo de definición , la parte de interfaz, que contiene solo aquellas partes del subsistema que se exportan (visibles para otros módulos), y un módulo de implementación , que contiene el código de trabajo interno del módulo.
El lenguaje tiene un estricto control de alcance . El alcance de un módulo se puede considerar como una pared impenetrable: a excepción de los identificadores estándar, ningún objeto del exterior es visible dentro de un módulo a menos que se importe explícitamente; ningún objeto de módulo interno es visible desde el exterior a menos que se exporte explícitamente.
Suponga que el módulo M1 exporta los objetos a, b, c y P enumerando sus identificadores en una lista de exportación explícita
MÓDULO DEFINICIÓN M1 ; EXPORTACIÓN CALIFICADOS a , b , c , P ; ...
Entonces, los objetos a, b, c y P del módulo M1 se conocen ahora fuera del módulo M1 como M1.a, M1.b, M1.cy M1.P. Se exportan de forma calificada al exterior (se supone que el módulo M1 es global). El nombre del módulo de exportación, es decir, M1, se utiliza como calificador seguido del nombre del objeto.
Suponga que el módulo M2 contiene la siguiente declaración IMPORT
MÓDULO M2 ; IMPORT M1 ; ...
Entonces esto significa que los objetos exportados por el módulo M1 al exterior de su programa adjunto ahora se pueden usar dentro del módulo M2. Se hace referencia a ellos de manera calificada , así: M1.a, M1.b, M1.cy M1.P. Ejemplo:
... M1 . a : = 0 ; M1 . c : = M1 . P ( M1 . Un + M1 . B ); ...
La exportación calificada evita conflictos de nombres: por ejemplo, si otro módulo M3 también exportara un objeto llamado P, entonces aún podemos distinguir los dos objetos, ya que M1.P difiere de M3.P. Gracias a la exportación calificada no importa que ambos objetos se llamen P dentro de sus módulos exportadores M1 y M3.
Existe un método alternativo, que es ampliamente utilizado por los programadores de Modula-2. Supongamos que el módulo M4 se formula así:
MÓDULO M4 ; DESDE M1 IMPORTAR a , b , c , P ;
Entonces esto significa que los objetos exportados por el módulo M1 al exterior se pueden usar nuevamente dentro del módulo M4, pero ahora por meras referencias a los identificadores exportados de manera no calificada , así: a, b, cy P. Ejemplo:
... a : = 0 ; c : = P ( a + b ); ...
Este método de importación no calificada permite el uso de variables y otros objetos fuera de su módulo de exportación exactamente de la misma manera simple, es decir , no calificada , que dentro del módulo de exportación. Las paredes que rodean todos los módulos ahora se han vuelto irrelevantes para todos aquellos objetos para los que esto se ha permitido explícitamente. Por supuesto, la importación no calificada solo se puede utilizar si no hay conflictos de nombres.
Estas reglas de exportación e importación pueden parecer innecesariamente restrictivas y detalladas. Pero no solo protegen los objetos contra el acceso no deseado, sino que también tienen el agradable efecto secundario de proporcionar una referencia cruzada automática de la definición de cada identificador en un programa: si el identificador está calificado por un nombre de módulo, entonces la definición proviene de ese módulo. De lo contrario, si ocurre sin calificar, simplemente busque hacia atrás, y encontrará una declaración de ese identificador, o su ocurrencia en una declaración IMPORT que nombra el módulo del que proviene. Esta propiedad se vuelve muy útil cuando se trata de comprender programas grandes que contienen muchos módulos.
El lenguaje proporciona concurrencia (limitada) de un solo procesador ( monitores , corrutinas y transferencia explícita de control) y acceso al hardware (direcciones absolutas, manipulación de bits e interrupciones ). Utiliza un sistema de tipo nominal .
Dialectos
Hay dos dialectos principales de Modula-2. El primero es PIM , llamado así por el libro Programación en Modula-2 de Niklaus Wirth. [4] Hubo tres ediciones principales de PIM: la segunda, la tercera (corregida) y la cuarta. Cada uno describe ligeras variantes del idioma. El segundo dialecto principal es ISO , llamado así por el esfuerzo de estandarización de la Organización Internacional de Normalización . Estas son algunas de las diferencias entre ellos.
- PIM2 (1983)
EXPORT
Cláusula explícita requerida en los módulos de definición.- La función
SIZE
debe importarse del móduloSYSTEM
- PIM3 (1985)
- Se eliminó la
EXPORT
cláusula de los módulos de definición siguiendo la observación de que todo dentro de un módulo de definición define la interfaz a ese módulo, por lo tanto, laEXPORT
cláusula era redundante. - La función
SIZE
es omnipresente (visible en cualquier ámbito sin importar)
- Se eliminó la
- PIM4 (1988)
- Especificó el comportamiento del
MOD
operador cuando los operandos son negativos. - Requería que todas las
ARRAY OF CHAR
cadenas terminen con ASCII NUL, incluso si la cadena encaja exactamente en su matriz.
- Especificó el comportamiento del
- ISO (1996, 1998)
- ISO Modula-2 resolvió la mayoría de las ambigüedades en PIM Modula-2. Agregó los tipos de datos
COMPLEX
y lasLONGCOMPLEX
excepciones, la terminación del módulo (FINALLY
cláusula) y una biblioteca estándar completa de entrada / salida (E / S) . Hay muchas diferencias y aclaraciones menores. [7]
- ISO Modula-2 resolvió la mayoría de las ambigüedades en PIM Modula-2. Agregó los tipos de datos
Supersets
Hay varios superconjuntos de Modula-2 con extensiones de idioma para dominios de aplicación específicos:
- Superconjuntos PIM
- Canterbury Modula-2 , ampliado con registros extensibles similares a Oberon [Esto se ha retirado y ya no está disponible en ninguna parte]
- Modula-2 + , extendido con subprocesos preventivos y excepciones
- Modula-2 * , extensión paralela [8]
- Modula-P , otra extensión paralela [9]
- Modula – Prolog, agrega una capa Prolog [10]
- Modula / R, agrega extensiones de bases de datos relacionales
- Modula-GM, agrega extensiones de sistema embebido
- Superconjuntos ISO
- ISO10514-2, agrega una capa de programación orientada a objetos [11]
- ISO10514-3, agrega una capa de programación genérica (genéricos) [11]
- Superconjuntos IEC
- Mod51 , ampliado con construcciones IEC1131 para desarrollo integrado
Derivados
Hay varios lenguajes derivados que se parecen mucho a Modula-2, pero son lenguajes nuevos por derecho propio. La mayoría son idiomas diferentes con diferentes propósitos y con fortalezas y debilidades propias:
- Modula-3 , desarrollado por un equipo de ex empleados de Xerox que se habían trasladado a DEC y Olivetti [12]
- Oberon , desarrollado en ETH Zürich para System Oberon [13] disponible en línea .
- Oberon-2 , Oberon con extensiones OO [14]
- Active Oberon , otra extensión orientada a objetos de Oberon , desarrollada también en ETH con el objetivo principal de admitir la programación paralela en sistemas multiprocesador y multinúcleo.
- Parallaxis, un lenguaje para la programación en paralelo de datos independiente de la máquina [15]
- Umbriel, desarrollado por Pat Terry como lengua de enseñanza [16]
- YAFL, un lenguaje de investigación de Darius Blasband [17]
Muchos otros lenguajes de programación actuales han adoptado características de Modula-2.
Elementos del lenguaje
Palabras reservadas
PIM [2,3,4] define 40 palabras reservadas :
Y ELSIF LOOP REPEATARRAY END MOD RETORNOCOMENZAR SALIR CONFIGURACIÓN DEL MÓDULOPOR EXPORTACIÓN NO ENTONCESCASO A FAVOR DECONST DE O TIPODEFINICIÓN SI PUNTERO HASTAPROCEDIMIENTO DE EJECUCIÓN DIV VARIMPORTE CUALIFICADO MIENTRASMÁS EN REGISTRO CON
Identificadores integrados
PIM [3,4] define 29 identificadores integrados :
ABS EXCL LONGINT REALBITSET FALSO LARGO TAMAÑO REALFLOTADOR BOOLEANO MÁXIMO VERDADEROCAP HALT MIN TRUNCCARDENAL HIGH NIL VALCHAR INC IMPARCHR INCL ORDDEC INTEGER PROC
Uso del sistema integrado
Modula-2 se utiliza para programar muchos sistemas integrados .
Cambridge Modula-2
Cambridge Modula-2 de Cambridge Microprocessor Systems se basa en un subconjunto de PIM4 con extensiones de lenguaje para desarrollo integrado. El compilador se ejecuta en DOS y genera código para microcontroladores embebidos basados en Motorola serie 68000 (M68k) que ejecutan un sistema operativo MINOS.
Mod51
Mod51 de Mandeno Granville Electronics se basa en ISO Modula-2 con extensiones de lenguaje para desarrollo integrado siguiendo IEC1131, un estándar de la industria para controladores lógicos programables (PLC) estrechamente relacionado con Modula-2. El compilador Mod51 genera código independiente para microcontroladores basados en 80C51.
Modula-GM
Delco Electronics , entonces una subsidiaria de GM Hughes Electronics , desarrolló una versión de Modula-2 para sistemas de control embebidos a partir de 1985. Delco lo llamó Modula-GM. Fue el primer lenguaje de programación de alto nivel utilizado para reemplazar el código de máquina (lenguaje) para sistemas integrados en las unidades de control del motor (ECU) de Delco . Esto fue significativo porque Delco estaba produciendo más de 28.000 ecus por día en 1988 para GM. Este era entonces el mayor productor mundial de ecus. [18] El primer uso experimental de Modula-GM en un controlador integrado fue en el controlador del sistema de frenos antibloqueo de 1985, que se basó en el microprocesador Motorola 68xxx, y en 1993 la ECU Gen-4 utilizada por los equipos de carreras de autos del campeonato de la serie Champ Car (CART) e Indy Racing League (IRL). [19] El primer uso de producción de Modula-GM fue su uso en camiones GM a partir del módulo de control de vehículos (VCM) del año 1990 utilizado para administrar los motores Vortec de GM Powertrain . Modula-GM también se usó en todas las ECU para la familia de motores Buick V6 de 90 ° 3800 Serie II de GM que se usa en el año modelo 1997-2005 Buick Park Avenue . Los compiladores de Modula-GM y las herramientas de gestión de software asociadas fueron adquiridos por Delco de Intermetrics .
Modula-2 fue seleccionado como base para el lenguaje de alto nivel de Delco debido a sus muchas fortalezas sobre otras opciones de lenguaje alternativo en 1986. Después de que Delco Electronics se separó de GM (con otras divisiones de componentes) para formar Delphi Automotive Systems en 1995, el suministro global requería que se utilizara un lenguaje de software de alto nivel no propietario. Software de la ECU incrustado ahora desarrollado en Delphi está compilado con compiladores comerciales para el lenguaje C .
Los satélites del marco del servicio de radionavegación por satélite ruso GLONASS , similar al Sistema de Posicionamiento Global (GPS) de los Estados Unidos , están programados en Modula-2. [20]
Compiladores
- Amsterdam Compiler Kit (ACK) Modula-2 - para MINIX ; software gratuito [21]
- ADW Modula-2: para Windows, compatible con ISO, ISO / IEC 10514-1, ISO / IEC 10514-2 (extensión OO), ISO / IEC 10514-3 (extensión genérica); software gratuito [22]
- Aglet Modula-2 - para AmigaOS 4.0 para PowerPC ; software gratuito [23]
- Cambridge Modula-2: para varios microcontroladores y sistema operativo MINOS integrado; software propietario [24]
- Herramientas de software integradas (FST) Modula-2 - para DOS; freeware [25] [ enlace muerto permanente ]
- Gardens Point Modula-2 (GPM): para BSD, Linux, OS / 2, Solaris ; Compatible con ISO; freeware, a 30 de julio de 2014 [26]
- Gardens Point Modula-2 (GPM / CLR) - para .NET Framework ; software gratuito [27]
- GNU Modula-2: para plataformas GCC, versión 1.0 lanzada el 11 de diciembre de 2010; cumplimiento: PIM2, PIM3, PIM4, ISO; software libre , GNU General Public License (GPL) [28]
- M2Amiga - para Amiga ; software libre [29]
- M2M - por N. Wirth y colaboradores de ETH Zurich, multiplataforma, genera código M para máquina virtual ; software gratuito [30]
- MacMETH: de N. Wirth y colaboradores de ETH Zurich para Macintosh, solo Classic; software gratuito [31]
- Mod51: para la familia de microcontroladores Intel 80x51, compatible con ISO, extensiones IEC1132; software propietario [32]
- Megamax Modula-2: para Atari ST con documentación solo en alemán; software gratuito [33]
- Modula-2 R10 - compilador de referencia para este Modula; código abierto, revisión por pares [34]
- ModulaWare: para OpenVMS ( VAX y Alpha ), compatible con ISO; software propietario [35]
- ORCA / Modula-2: para Apple IIGS de The Byte Works para el taller del programador de Apple
- p1 Modula-2: para Macintosh , Classic y macOS (solo PowerPC y Carbon (API) ), compatible con ISO; software propietario [36]
- MOCKA: para varias plataformas, compatible con PIM; Versiones comerciales y gratuitas de Linux / BSD [37]
- TDI Modula-2 - para Atari ST , por TDI Software
- Terra M2VMS: para OpenVMS ( VAX y Alpha ), compatible con PIM; software propietario [38]
- m2c, Ulm Modula-2 System - para Solaris (Sun SPARC y Motorola 68k ); software libre, GNU General Public License (GPL) [39]
- XDS: biblioteca compatible con ISO y compatible con TopSpeed: XDS-x86 nativo para x86 (Windows y Linux); XDS-C para Windows y Linux (versiones de 16 y 32 bits), destinos C ( K&R y ANSI ); software gratuito [40]
Turbo Modula-2
Turbo Modula-2 era un compilador y un entorno de desarrollo integrado para MS-DOS desarrollado, pero no publicado, por Borland . Jensen and Partners, que incluía al cofundador de Borland, Niels Jensen, compraron el código base inédito y lo convirtieron en TopSpeed Modula-2. Finalmente se vendió a Clarion, ahora propiedad de SoftVelocity, que todavía ofrece el compilador Modula-2 como parte de su línea de productos Clarion .
A Zilog Z80 CP / M versión de Turbo Modula-2 fue comercializado brevemente por Echelon bajo licencia de Borland. Micromint vendió una versión complementaria para Hitachi HD64180 como herramienta de desarrollo para su computadora de placa única SB-180.
IBM Modula-2
IBM tenía un compilador Modula-2 para uso interno que se ejecutaba tanto en OS / 2 como en AIX , y tenía soporte de primera clase en el editor E2 de IBM . [41] IBM Modula-2 se utilizó para partes del Código Interno con Licencia Vertical OS / 400 (de hecho, el núcleo de OS / 400). [42] Este código fue reemplazado por C ++ cuando OS / 400 fue portado a la familia de procesadores IBM RS64 . [43] Un Motorola 68000 backend también existía, que puede haber sido utilizado en productos de sistemas embebidos. [41]
Sistemas operativos
Modula-2 se utiliza para programar algunos sistemas operativos (SO). La estructura y el soporte del módulo Modula-2 se utilizan directamente en dos sistemas operativos relacionados.
El sistema operativo llamado Medos-2 , para la estación de trabajo Lilith, fue desarrollado en ETH Zurich, por Svend Erik Knudsen con el asesoramiento de Wirth. Es un sistema operativo orientado a objetos de un solo usuario construido a partir de módulos Modula-2. [44] [45] [46]
El sistema operativo llamado Excelsior , para la estación de trabajo Kronos , fue desarrollado por la Academia de Ciencias de la Unión Soviética , sucursal de Siberia, Novosibirsk Computing Center, proyecto Modular Asynchronous Developable Systems (MARS), Kronos Research Group (KRG). Es un sistema de usuario único basado en módulos Modula-2. [47]
Libros
- Wirth, Niklaus (1988). Programación en Modula-2 (4ª ed.). Berlín Heidelberg : Springer-Verlag . ISBN 978-0-387-96051-7.
- King, KN (1 de enero de 1988). Modula-2: una guía completa . Burlington, Massachusetts : Jones y Bartlett Publishers. ISBN 978-0669110913.
- Sutcliffe, Richard J. (2004-2005). Modula-2: Abstracciones para estructuras de programación y datos . Libros de Arjay. ISBN 978-0-669-11091-3. Utiliza Modula-2 estándar ISO.
- Gleaves, Richard (1984). Modula-2 para programadores Pascal (1ª ed.). Suiza: Springer Nature. ISBN 978-0-387-96051-7.
- Cooper, Doug (1 de septiembre de 1990). ¡Oh mi! Modula-2: Introducción a la programación . Ciudad de Nueva York , Nueva York : WW Norton & Company . ISBN 978-0393960099.
Referencias
- ^ "Resumen de proyectos de N. Wirth, 1962-1999" . Departamento de Ciencias de la Computación . ETH Zurich .
- ^ Wirth, Niklaus (2002). "Pascal y sus sucesores". En Broy, Manfred; Denert, Ernst (eds.). Pioneros del software: contribuciones a la ingeniería del software . Berlín, Heidelberg: Springer-Verlag . págs. 108–120. doi : 10.1007 / 978-3-642-59412-0 . ISBN 978-3-642-59412-0.
- ^ Wirth, Niklaus (18 de febrero de 2005). "Historia y metas de Modula-2" . Diario del Dr. Dobb . Informa PLC.
- ^ a b Wirth, Niklaus . Programación en Modula-2 (4ª ed.). Berlín, Heidelberg: Springer. doi : 10.1007 / 978-3-642-83565-0 . ISBN 978-3-642-83565-0. Página 4.
- ^ Wirth, Niklaus ; Gutknecht, Jürg ; Ohran, Richard; Paul, Robert J .; Coar, David (agosto de 1984). "Tema: Modula-2" . Byte: The Small Systems Journal . Vol. 9 no. 8. págs. 143–232. Disponible en Archive.org
- ^ Wirth, Niklaus (1 de mayo de 1984). "Un compilador de Modula-2 de un solo paso para Lilith" (PDF) . Software CFB . Consultado el 28 de enero de 2019 .
- ^ ISO / IEC 10514-1: 1996
- ^ Tichy et al., Modula-2 *: Una extensión para Modula-2 para programas portátiles altamente paralelos, Universidad de Karlsruhe [1990]
- ^ Bräunl, Programación paralela, Prentice-Hall [1993]
- ^ Muller, C. (noviembre de 1986). "Modula – Prolog: un desarrollo de software". Software IEEE . 3 (6): 39–45}. doi : 10.1109 / MS.1986.229475 .
- ^ a b modula2.org, 5. ¿Dónde puedo obtener información sobre ISO Modula-2?
- ^ Cardelli et al., Informe Modula-3 , Informe de investigación 31, Centro de investigación de sistemas, Digital Equipment Corporation, [1988]
- ^ N. Wirth & J. Gutknecht, Proyecto Oberon: el diseño de un sistema operativo y compilador, ISBN 0-201-54428-8 , Addison-Wesley [1992]
- ^ Moessenboeck & Wirth, El lenguaje de programación Oberon-2 , ETH Zurich [1995]
- ^ Thomas Bräunl, Parallaxis, un lenguaje para programación paralela de datos estructurados, Universidad de Stuttgart [1996]
- ^ Pat D. Terry, Otro lenguaje de programación mínimo, ACM SIGPLAN Notices No. 30 [1995]
- ^ D. Blasband, El lenguaje de programación YAFL, segunda edición, [1993]
- ^ Revista Delco Electronics Electron, The Atwood Legacy, Spring '89, página 25
- ^ Desarrollo de electrónica para carreras de autos GM
- ^ Koltashev, AA (2006). "Modula-2 en el espacio ruso" . Kronos: Historia de un proyecto (en ruso). xTech . Consultado el 8 de abril de 2021 .
- ^ Dado, David (9 de octubre de 2020). "ACK" . GitHub . Consultado el 13 de marzo de 2021 .
- ^ "ADW Modula-2" . Modula-2.org . Consultado el 13 de marzo de 2021 .
- ^ "Aglet Modula-2" . Aglet Modula-2 . 15 de febrero de 2012 . Consultado el 13 de marzo de 2021 .
- ^ "Cambridge Modula-2" . Cambridge Microprocessor Systems . Consultado el 13 de marzo de 2021 .
- ^ "FST Modula-2" . psg.com . Consultado el 13 de marzo de 2021 .
- ^ "Jardines Point Modula" . Grupo de Lenguajes y Sistemas de Programación, Facultad de Tecnologías de la Información . Universidad de Tecnología de Queensland, Brisbane. 29 de enero de 2007. Archivado desde el original el 23 de marzo de 2013 . Consultado el 13 de marzo de 2021 .
- ^ "Gardens Point Modula-2 (GPM / CLR)" . Archivo CodePlex: Archivo de proyectos de código abierto . Microsoft. 29 de enero de 2007. Archivado desde el original en 2018 . Consultado el 13 de marzo de 2021 .
- ^ "GNU Modula-2" . Savannah . Fundación de Software Libre. 30 de agosto de 2018 . Consultado el 13 de marzo de 2021 .
- ^ Degen, René; Nieder, Claudio; Preusing, Bernd; Schaub, Markus; Straube, Jörg (2004). "M2Amiga" . Sitio web de Claudio . A + L AG. Archivado desde el original el 20 de enero de 2019 . Consultado el 13 de marzo de 2021 .
- ^ "Lilith y Modula-2" . Software CFB . Consultado el 13 de marzo de 2021 .
- ^ "MacMETH: un sistema de lenguaje rápido Modula-2 para computadoras Macintosh" . ETH Zurich: Ecología de sistemas terrestres . 22 de enero de 2020 . Consultado el 13 de marzo de 2021 .
- ^ "Lenguaje de programación de texto estructurado Mod51" . Herramientas de diseño . Archivado desde el original el 21 de octubre de 2008 . Consultado el 13 de marzo de 2021 .
- ^ Tempelmann, Thomas (1 de septiembre de 2020). "Página de inicio de Thomas Tempelmann" . Consultado el 18 de marzo de 2021 .
- ^ "Modula-2 R10" . Consultado el 18 de marzo de 2021 .
- ^ Dotzel, Chih-Ya (21 de enero de 2020). "ModulAware" . Consultado el 18 de marzo de 2021 .
- ^ Wiedemann, Albert (13 de enero de 2021). "p1 Modula-2" . p1 Sociedad de Ciencias de la Computación . Consultado el 19 de marzo de 2021 .
- ^ Beck, Michael; Geiss, Rubino (2006). "El compilador de Karlsruhe Modula-2 MOCKA" . Instituto de Estructuras de Programas y Organización de Datos (IPD) . Instituto de Tecnología de Karlsruhe . Archivado desde el original el 4 de septiembre de 2009 . Consultado el 21 de marzo de 2021 .
- ^ "Sistemas Modula-2 para OpenVMS / Alpha y OpenVMS / VAX" . Terra Datentechnik (en inglés y alemán). Erlenbach, Suiza. 12 de noviembre de 2002 . Consultado el 23 de marzo de 2021 .
- ^ Borchert, Andreas; Hasch, Martin (21 de enero de 2003). "m2c: Sistema Modula-2 de Ulm" . Universidad de Ulm . Ulm , Alemania . Consultado el 23 de marzo de 2021 .
- ^ "Familia de productos XDS: Modula-2 - Herramientas de desarrollo Oberon-2" . Excelsior LLC . 1999-2009. Archivado desde el original el 27 de mayo de 2009 . Consultado el 23 de marzo de 2021 .
- ^ a b "IBM Modula-2" . edm2.com . 2 de marzo de 2019 . Consultado el 12 de marzo de 2021 .
- ^ "Comentarios del lector sobre AS / 400 to i Mystery Resuelto" . itjungle.com . 21 de febrero de 2011 . Consultado el 12 de marzo de 2021 .
- ^ Soltis, Frank G. (1997). Dentro del AS / 400 (2ª ed.). Duke Press. ISBN 978-1882419661.
- ^ Knudsen, Svend Erik (1983). Medos-2: Un sistema operativo orientado a Modula-2 para la computadora personal Lilith (PhD). ETH Zurich . doi : 10.3929 / ethz-a-000300091 .
- ^ Knudsen, Svend Erik (25 de octubre de 2000). "Medos en retrospectiva". En Böszörményi, László; Gutknecht, Jürg ; Pomberger, Gustav (eds.). La escuela de Niklaus Wirth: el arte de la simplicidad . Morgan Kaufmann. págs. 69–86. ISBN 978-1558607231.ISBN 1-55860-723-4 y dpunkt, ISBN 3-932588-85-1 .
- ^ Sand, Paul A. (septiembre de 1984). "La computadora personal Lilith" . Byte . págs. 300–311 . Consultado el 6 de marzo de 2021 . Reimprimir.
- ^ Kuznetsov, DN; Nedorya, AE; Tarasov, EV; Filippov, VE "Kronos: una familia de procesadores para lenguajes de alto nivel" . Kronos: Historia de un proyecto (en ruso). xTech . Consultado el 13 de abril de 2021 .
enlaces externos
- Página web oficial
Este artículo se basa en material extraído del Diccionario gratuito de informática en línea antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencias" de la GFDL , versión 1.3 o posterior.