Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
Modula-3
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
{{Ficha de lenguaje de programación | nombre = Modula-3 | logo = [[File:M3Logo.gif|100px]] paradigma = [[programación multiparadigma|multiparadigma]]: [[Programación imperativa|imperativo]], [[Programación estructurada|estructurado]], [[Programación modular|modular]] | año = Años 1980 | diseñador = [[Digital Equipment Corporation|DEC]] y [[Olivetti]] | tipo_dato = [[Fuertemente tipado|fuerte]], estático | implementaciones = [http://www.elegosoft.com/cm3/ CM3], [http://www.elegosoft.com/pm3/ PM3], [http://www.cvsup.org/ezm3/ EZM3], [https://web.archive.org/web/http://trac.m3w.org/trac/wiki/Modula-3/ HM3 ] | influido_por = [[PASCAL|Pascal]], [[ALGOL]], [[Modula-2]] | ha_influido = [[Lenguaje de programación Java|Java]], [[Python]], [[Caml]] }} '''Modula-3''' es un [[lenguaje de programación]] [[Programación imperativa|imperativo]], [[Programación estructurada|estructurado]] y [[Programación modular|modular]], concebido como el sucesor de [[Modula-2]]. Las principales características del lenguaje son su simplicidad y la seguridad, además de conservar la potencia de los lenguajes de programación de sistemas. == Historia == Modula-3 fue diseñado por [[Luca Cardelli]], [[Jim Donahue]], [[Mick Jordan]], [[Bill Kalsow]] y [[Greg Nelson]] en el [[Digital Equipment Corporation|DEC]] Systems Research Center (DEC SRC) y en [[Olivetti]] a finales de los 80. Su diseño estuvo muy influido por el lenguaje [[Modula-2+]], que se usaba en el DECSRC en aquel momento, y era el lenguaje en el que estaban escritos los Sistemas Operativos para la máquina [[VAX]] [[DEC Firefly]]. El proyecto de Modula-3 comenzó en noviembre del 86, cuando [[Maurice Wilkes]] escribió a [[Niklaus Wirth]] con ideas para una nueva versión de [[Modula]]. Wilkes había estado trabajando para [[Digital Equipment Corporation|DEC]] justo antes de ello, y había vuelto a [[Inglaterra]] para unirse al Olivetti Research Strategy Board. Wirth ya había comenzado a trabajar con [[Lenguaje de programación Oberon|Oberon]] , pero no tuvo problemas con que el equipo de Wilkes continuara desarrollando usando el nombre de "Modula". Modula-3 pretendía continuar con la tradición de [[PASCAL]], además de añadir nuevas construcciones para conseguir una programación práctica para el mundo real. En particular, añadía soporte para programación genérica (parecido a las [[plantilla]]s), [[multiprogramación]], [[manejo de excepciones]], [[recolección de basura]], [[programación orientada a objetos]], [[principio de ocultación]] y [[Encapsulamiento (programación orientada a objetos)|encapsulamiento de código]]. El mayor objetivo en el diseño de Modula-3 era crear un lenguaje que implementara las características más importantes de los modernos [[programación imperativa|lenguajes imperativos]] de un modo simple. Por ello, se omitieron característica complicadas y "peligrosas" como la [[herencia múltiple]] y la [[sobrecarga]] de operadores. La definición del lenguaje se completó en agosto del 88, y una versión actualizada salió en enero del 89. Los compiladores de [[Digital Equipment Corporation|DEC]] y [[Olivetti]] le siguieron enseguida, al igual que las implementaciones de terceros. Durante los 90, Modula-3 se difundió considerablemente como lenguaje docente, pero nunca fue ampliamente adoptado para usos industriales. También pudo haber contribuido en esto la desaparición de [[Digital Equipment Corporation|DEC]], un partidario clave para Modula-3.<ref>{{Cita web|url=https://www.spokesman.com/stories/1998/jan/27/compaq-agrees-to-buy-digital-96-billion-deal/|título=Compaq Agrees To Buy Digital $9.6 Billion Deal Creates New Computer Powerhouse|fechaacceso=2026-07-08|fecha=1998-01-27|sitioweb=Spokesman.com|idioma=en}}</ref> En cualquier caso, a pesar de la simplicidad y potencia del lenguaje, parece que hay poca demanda para un lenguaje [[Lenguajes compilados|compilado]] altamente [[programación estructurada|estructurado]] e implementado como un [[lenguaje orientado a objetos]] restringido. Durante algún tiempo, un [[compilador]] de [[código cerrado]] (llamado ''CM3'') y un [[entorno de desarrollo integrado]] (llamado ''Reactor'') y también una [[Máquina Virtual de Java]] eran ofrecidos por [[Critical Mass Inc.]], pero dicha compañía cerró en el año 2000. Actualmente, la única empresa que mantiene a Modula-3 es [[Elego Software Solutions GmBH]], que heredó todo el código de ''CM3'' y ''Reactor'' de Critical Mass. ''Reactor'', sin embargo, no había podido ser relanzando debido a problemas con los términos del contrato de licencia. Actualmente ''Reactor'' se encuentra disponible al público y junto con ''CM3'' en proceso de producción, en https://www.opencm3.net/releng están disponibles los candidatos de lanzamiento (a enero de 2010) de una nueva versión con ''Reactor'' ahora como ''CM3IDE''. En marzo de 2002, Elego adquirió los [[repositorio]]s de la última distribución activa de Modula-3, PM3, que hasta entonces estaba siendo mantenida por la [[École Polytechnique de Montréal]]. == Características del lenguaje == El [[manejo de excepciones]] está basado en un sistema de bloques <code>TRY...EXCEPT</code> bastante común. Una característica que no se ha adoptado en otros lenguajes (a excepción de [[Python]] y [[Scala (lenguaje de programación)|Scala]]) es la construcción del <code>EXCEPT</code> definido como un ''pseudo''-<code>CASE</code>, en el que cada posible excepción es un caso en una cláusula <code>EXCEPT</code>. Modula-3 también incluye la construcción <code>LOOP...EXIT...END</code>, en la que el [[bucle]] se repite hasta que se encuentra un <code>EXIT</code> (esta estructura es equivalente a un bucle simple dentro de un <code>TRY...EXCEPT</code>) El empleo de [[Objetos (programación orientada a objetos)|objetos]] se mantiene intencionadamente en su vertiente más simple. Un tipo de objeto ([[Clase (informática)|clase]]) se crea con la declaración <code>OBJECT</code>. Esta tiene básicamente la misma sintaxis que una declaración <code>RECORD,</code> aunque un objeto así declarado es un tipo de referencia mientras que <code>RECORD</code> no lo es. Por ejemplo: <code>A = OBJECT a: INTEGER; METHODS p() := AP; END;</code> declara un nuevo tipo de objeto "A", que contiene un único [[Campo (informática)|campo]] "a" y un [[Método (programación orientada a objetos)|método]] "p". El [[subrutina|procedimiento]] "AP" que implementa a "p" debe ser declarado en otro lugar: <code>PROCEDURE AP(self: A) = BEGIN ... END;</code> Las llamadas a los métodos se realizan con "o.p();", donde "o" es una variable de tipo "A". La construcción <code>REVEAL</code> de Modula-3 proporciona un mecanismo conceptualmente simple y muy potente para ocultar los detalles de implementación a los clientes, con distintos niveles de "amistad". En resumen, las características del lenguaje son: * [[Modularidad]] e [[interfaz|interfaces]] * Resaltado explícito de código inseguro * [[Recolección de basura|Recogida automática de basura]] * [[Lenguaje de programación fuertemente tipado|Tipo de dato fuerte]], equivalencia estructural de tipos * [[Objetos (programación orientada a objetos)|Objetos]] * [[Manejo de excepciones|Excepciones]] * [[Hilo (informática)|Hilos]] * [[Plantilla]]s Modula-3 es uno de los pocos lenguajes en los que la evolución de sus características está documentada. En ''System Programming with Modula-3'', se tratan cuatro puntos esenciales del diseño del lenguaje. Estos temas son Estructural vs. Equivalencia Semántica, reglas para los subtipos, módulos genéricos y tipos de parámetros (como <code>READONLY</code>) == Sintaxis == Un ejemplo típico de la sintaxis de un lenguaje de programación es el [[Hola Mundo]]: MODULE Main; IMPORT IO; BEGIN IO.Put("Hola Mundo\n") END Main. <br /> == Implementaciones == Existen bastantes [[compilador]]es disponibles, y la mayoría de ellos son de [[código abierto]]. * DEC-SRC M3. Es un compilador desarrollado en [[Digital Equipment Corporation|DEC]] para [[Unix]], [[Windows NT]] y [[Windows 95]]. Para instalarlo en Windows hay que tener Microsoft [[Visual C++]] 4.0 o superior. * Critical Mass CM3. Es un completo sistema Modula-3, fácil de usar y de instalar y con considerables mejoras sobre su antecesor, DEC-SRC M3. Funciona en varias plataformas, incluyendo [[Linux]] y [[Win32]]. * Polytechnique Montreal Modula-3 PM3. Es un compilador de código abierto basado en SRC, extendido y mejorado por un gran número de personas y organizaciones. Actualmente se está fusionando con CM3 * Persistent Modula 3. Es una extensión de Modula-3 basada en PM3. Es el resultado de un trabajo de investigación en estado beta. Sólo se ha instalado en [[Linux]], [[Solaris (sistema operativo)|Solaris]] y [[Alpha (sistema operativo)|Alpha/OSF]]. * EzM3, una implementación liviana y fácilmente [[portable]], desarrollada junto a CVSup. * HM3, un sucesor del PM3 versión 1.1.15 con el uso de hilos [[NPTL]] probado sólo en Linux Puesto que el único aspecto de las estructuras de datos en [[Lenguaje de programación C|C]] que se pierde en Modula-3 es el tipo unión, todas las implementaciones de Modula-3 dan buena compatibilidad binaria con las declaraciones de tipos de vectores y structs de C. == Bibliografía == * Greg Nelson, ed. ''Systems Programming with Modula-3''. Contiene interesantes artículos sobre construcción de software basados en sistemas orientados a objetos, y documentación sobre las proposiciones que llevaron a las características finales del lenguaje. * Samuel P. Harbison, ''Modula-3''. Libro de texto, simple y fácil de usar. * Robert Sedgewick, ''Algorithms in Modula-3'' * Laszlo Boszormenyi y Carsten Weich, ''Programming in Modula-3: An Introduction in Programming with Style'' == Referencias == <references /> == Véase también == * [[Modula-2]] == Enlaces externos == * [news:comp.lang.modula3 Modula-3 newsgroup] * [http://www.m3.org Modula-3 Página de recursos de Modula-3] {{Wayback|url=http://www.m3.org/ |date=20040703074806 }} * [http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-52.html Definición del lenguaje Modula-3] * [http://www.elegosoft.com elego Software Solutions] * [https://modula3.elegosoft.com/pm3/ PM3] * [https://modula3.elegosoft.com/cm3/ CM3] * {{Enlace roto|1=[http://www.polstra.com/projects/freeware/ezm3/ EzM3] |2=http://www.polstra.com/projects/freeware/ezm3/ |bot=InternetArchiveBot }} * [https://web.archive.org/web/20060924083458/http://www.m3.org/books/ Bibliografía] * [https://web.archive.org/web/19970814162826/http://www.ifi.uni-klu.ac.at/Modula-3/m3book/examples.html ''Programming in Modula-3'': program examples] * [https://web.archive.org/web/20000818223112/http://m3.polymtl.ca/dagenais/if515/main/main.html Building Distributed OO Applications: Modula-3 Objects at Work] * [https://csis.pace.edu/~bergin/M3text "Object-Oriented Data Abstraction in Modula-3" libro en línea] {{Control de autoridades}} [[Categoría:Lenguajes de programación de sistemas]] [[Categoría:Lenguajes compilados]] [[Categoría:Lenguajes de programación de DEC]] [[Categoría:Lenguajes de programación de Olivetti]] [[Categoría:Software de 1989]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
Modula-3
»
Añadir idiomas
Añadir tema