fbpx
Wikipedia

Modula-3

Modula-3 es un lenguaje de programación imperativo, estructurado y modular, concebido como el sucesor de Modula-2.

Modula-3

paradigma = multiparadigma: imperativo, estructurado, modular
Digital Equipment Corporation
http://www.modula3.org
Información general
Apareció en Años 1980
Diseñado por DEC y Olivetti
Sistema de tipos fuerte, estático
Implementaciones CM3, PM3, EZM3, HM3
Influido por Pascal, ALGOL, Modula-2
Ha influido a Java, Python, Caml

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 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 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 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 plantillas), multiprogramación, manejo de excepciones, recolección de basura, programación orientada a objetos, principio de ocultación y 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 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 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 DEC, un partidario clave para Modula-3. En cualquier caso, a pesar de la simplicidad y potencia del lenguaje, parece que hay poca demanda para un lenguaje compilado altamente 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 http://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 repositorios 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 TRY...EXCEPT bastante común. Una característica que no se ha adoptado en otros lenguajes (a excepción de Python y Scala) es la construcción del EXCEPT definido como un pseudo-CASE, en el que cada posible excepción es un caso en una cláusula EXCEPT. Modula-3 también incluye la construcción LOOP...EXIT...END, en la que el bucle se repite hasta que se encuentra un EXIT (esta estructura es equivalente a un bucle simple dentro de un TRY...EXCEPT)

El empleo de objetos se mantiene intencionadamente en su vertiente más simple. Un tipo de objeto (clase) se crea con la declaración OBJECT. Esta tiene básicamente la misma sintaxis que una declaración RECORD, aunque un objeto así declarado es un tipo de referencia mientras que RECORD no lo es.

Por ejemplo: A = OBJECT a: INTEGER; METHODS p() := AP; END; declara un nuevo tipo de objeto "A", que contiene un único campo "a" y un método "p". El procedimiento "AP" que implementa a "p" debe ser declarado en otro lugar: PROCEDURE AP(self: A) = BEGIN ... END; Las llamadas a los métodos se realizan con "o.p();", donde "o" es una variable de tipo "A".

La construcción REVEAL 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:

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 READONLY)

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. 


Implementaciones

Existen bastantes compiladores disponibles, y la mayoría de ellos son de código abierto.

  • DEC-SRC M3. Es un compilador desarrollado en 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 y 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 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 systemas 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

Véase también

Enlaces externos

  • Modula-3 newsgroup
  • Modula-3 Página de recursos de Modula-3
  • Definición del lenguaje Modula-3
  • elego Software Solutions
  • PM3
  • CM3
  • EzM3 (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
  • "Object-Oriented Data Abstraction in Modula-3" libro en línea
  •   Datos: Q1928222

modula, lenguaje, programación, imperativo, estructurado, modular, concebido, como, sucesor, modula, paradigma, multiparadigma, imperativo, estructurado, modulardigital, equipment, corporationhttp, modula3, orginformación, generalapareció, enaños, 1980diseñado. Modula 3 es un lenguaje de programacion imperativo estructurado y modular concebido como el sucesor de Modula 2 Modula 3paradigma multiparadigma imperativo estructurado modularDigital Equipment Corporationhttp www modula3 orgInformacion generalAparecio enAnos 1980Disenado porDEC y OlivettiSistema de tiposfuerte estaticoImplementacionesCM3 PM3 EZM3 HM3Influido porPascal ALGOL Modula 2Ha influido aJava Python Caml editar datos en Wikidata Las principales caracteristicas del lenguaje son su simplicidad y la seguridad ademas de conservar la potencia de los lenguajes de programacion de sistemas Indice 1 Historia 2 Caracteristicas del lenguaje 3 Sintaxis 4 Implementaciones 5 Bibliografia 6 Vease tambien 7 Enlaces externosHistoria EditarModula 3 fue disenado por Luca Cardelli Jim Donahue Mick Jordan Bill Kalsow y Greg Nelson en el DEC Systems Research Center DEC SRC y en Olivetti a finales de los 80 Su diseno 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 maquina VAX DEC Firefly El proyecto de Modula 3 comenzo en noviembre del 86 cuando Maurice Wilkes escribio a Niklaus Wirth con ideas para una nueva version de Modula Wilkes habia estado trabajando para DEC justo antes de ello y habia vuelto a Inglaterra para unirse al Olivetti Research Strategy Board Wirth ya habia comenzado a trabajar con Oberon pero no tuvo problemas con que el equipo de Wilkes continuara desarrollando usando el nombre de Modula Modula 3 pretendia continuar con la tradicion de PASCAL ademas de anadir nuevas construcciones para conseguir una programacion practica para el mundo real En particular anadia soporte para programacion generica parecido a las plantillas multiprogramacion manejo de excepciones recoleccion de basura programacion orientada a objetos principio de ocultacion y encapsulamiento de codigo El mayor objetivo en el diseno de Modula 3 era crear un lenguaje que implementara las caracteristicas mas importantes de los modernos lenguajes imperativos de un modo simple Por ello se omitieron caracteristica complicadas y peligrosas como la herencia multiple y la sobrecarga de operadores La definicion del lenguaje se completo en agosto del 88 y una version actualizada salio en enero del 89 Los compiladores de DEC y Olivetti le siguieron enseguida al igual que las implementaciones de terceros Durante los 90 Modula 3 se difundio considerablemente como lenguaje docente pero nunca fue ampliamente adoptado para usos industriales Tambien pudo haber contribuido en esto la desaparicion de DEC un partidario clave para Modula 3 En cualquier caso a pesar de la simplicidad y potencia del lenguaje parece que hay poca demanda para un lenguaje compilado altamente estructurado e implementado como un lenguaje orientado a objetos restringido Durante algun tiempo un compilador de codigo cerrado llamado CM3 y un entorno de desarrollo integrado llamado Reactor y tambien una Maquina Virtual de Java eran ofrecidos por Critical Mass Inc pero dicha compania cerro en el ano 2000 Actualmente la unica empresa que mantiene a Modula 3 es Elego Software Solutions GmBH que heredo todo el codigo de CM3 y Reactor de Critical Mass Reactor sin embargo no habia podido ser relanzando debido a problemas con los terminos del contrato de licencia Actualmente Reactor se encuentra disponible al publico y junto con CM3 en proceso de produccion en http www opencm3 net releng estan disponibles los candidatos de lanzamiento a enero de 2010 de una nueva version con Reactor ahora como CM3IDE En marzo de 2002 Elego adquirio los repositorios de la ultima distribucion activa de Modula 3 PM3 que hasta entonces estaba siendo mantenida por la Ecole Polytechnique de Montreal Caracteristicas del lenguaje EditarEl manejo de excepciones esta basado en un sistema de bloques TRY EXCEPT bastante comun Una caracteristica que no se ha adoptado en otros lenguajes a excepcion de Python y Scala es la construccion del EXCEPT definido como un pseudo CASE en el que cada posible excepcion es un caso en una clausula EXCEPT Modula 3 tambien incluye la construccion LOOP EXIT END en la que el bucle se repite hasta que se encuentra un EXIT esta estructura es equivalente a un bucle simple dentro de un TRY EXCEPT El empleo de objetos se mantiene intencionadamente en su vertiente mas simple Un tipo de objeto clase se crea con la declaracion OBJECT Esta tiene basicamente la misma sintaxis que una declaracion RECORD aunque un objeto asi declarado es un tipo de referencia mientras que RECORD no lo es Por ejemplo A OBJECT a INTEGER METHODS p AP END declara un nuevo tipo de objeto A que contiene un unico campo a y un metodo p El procedimiento AP que implementa a p debe ser declarado en otro lugar PROCEDURE AP self A BEGIN END Las llamadas a los metodos se realizan con o p donde o es una variable de tipo A La construccion REVEAL de Modula 3 proporciona un mecanismo conceptualmente simple y muy potente para ocultar los detalles de implementacion a los clientes con distintos niveles de amistad En resumen las caracteristicas del lenguaje son Modularidad e interfaces Resaltado explicito de codigo inseguro Recogida automatica de basura Tipo de dato fuerte equivalencia estructural de tipos Objetos Excepciones Hilos PlantillasModula 3 es uno de los pocos lenguajes en los que la evolucion de sus caracteristicas esta documentada En System Programming with Modula 3 se tratan cuatro puntos esenciales del diseno del lenguaje Estos temas son Estructural vs Equivalencia Semantica reglas para los subtipos modulos genericos y tipos de parametros como READONLY Sintaxis EditarUn ejemplo tipico de la sintaxis de un lenguaje de programacion es el Hola Mundo MODULE Main IMPORT IO BEGIN IO Put Hola Mundo n END Main Implementaciones EditarExisten bastantes compiladores disponibles y la mayoria de ellos son de codigo abierto DEC SRC M3 Es un compilador desarrollado en 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 facil 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 codigo abierto basado en SRC extendido y mejorado por un gran numero de personas y organizaciones Actualmente se esta fusionando con CM3 Persistent Modula 3 Es una extension de Modula 3 basada en PM3 Es el resultado de un trabajo de investigacion en estado beta Solo se ha instalado en Linux Solaris y Alpha OSF EzM3 una implementacion liviana y facilmente portable desarrollada junto a CVSup HM3 un sucesor del PM3 version 1 1 15 con el uso de hilos NPTL probado solo en LinuxPuesto que el unico aspecto de las estructuras de datos en C que se pierde en Modula 3 es el tipo union todas las implementaciones de Modula 3 dan buena compatibilidad binaria con las declaraciones de tipos de vectores y structs de C Bibliografia EditarGreg Nelson ed Systems Programming with Modula 3 Contiene interesantes articulos sobre construccion de software basados en systemas orientados a objetos y documentacion sobre las proposiciones que llevaron a las caracteristicas finales del lenguaje Samuel P Harbison Modula 3 Libro de texto simple y facil de usar Robert Sedgewick Algorithms in Modula 3 Laszlo Boszormenyi y Carsten Weich Programming in Modula 3 An Introduction in Programming with StyleVease tambien EditarModula 2Enlaces externos EditarModula 3 newsgroup Modula 3 Pagina de recursos de Modula 3 Definicion del lenguaje Modula 3 elego Software Solutions PM3 CM3 EzM3 enlace roto disponible en Internet Archive vease el historial la primera version y la ultima Bibliografia Programming in Modula 3 program examples Building Distributed OO Applications Modula 3 Objects at Work Object Oriented Data Abstraction in Modula 3 libro en linea Datos Q1928222Obtenido de https es wikipedia org w index php title Modula 3 amp oldid 133315120, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos