ıllı Internet y Tecnologías de la Información (2018)

internet, Hosting, dominios, seo, antivirus, banco de imágenes, páginas web, tiendas online

[Enciclopedia Online Gratuita] Diccionario de Internet y Tecnologías de la Información y la Comunicación (TIC):

ıllı Maude (lenguaje de programación) wiki: info, historia y vídeos

videos internet

salud  Maude (lenguaje de programación) 


Maude aguanta de una forma sistemática y eficaz la reflexión lógica. Esto le deja ser un lenguaje exageradamente potente y extensible, al unísono que lo hace capaz de aguantar un álgebra de operaciones de composición de módulos extensible. Ciertas de sus aplicaciones más interesantes son las de metalenguaje, en las que Maude es utilizado para crear ambientes ejecutables para diferentes lógicas, demostraciones de teoremas, lenguajes y modelos de computación.Este lenguaje puede modelar prácticamente todo, cualquier cosa que se pueda describir a través de el lenguaje humano, se puede expresar con instrucciones Maude. Puede ser exageradamente abstracto. Su diseño deja tanta flexibilidad que la sintaxis puede parecer de entrada poco entendible.Sin embargo, y pese a sus muchas ventajas, Maude no deja de ser un lenguaje declarativo, y como tal asimismo tiene sus inconvenientes.Con lenguaje declarativo nos referimos a todos aquellos lenguajes de programación que fundamentan su forma de marchar en el pensamiento humano, esto es, en las Matemáticas, en vez de en el comportamiento del ordenador. Por eso Maude se base primordialmente en el álgebra y en la especificación de ecuaciones. Puesto que bien, como el resto lenguajes de esta clase, son formidablemente muy elegantes y claros en el momento de efectuar cualquier especificación, aparte de aguantar técnicas de desarrollo muy avanzadas (como ya hemos comentado) y existir aplicaciones variadas y de enorme interés. Por otra parte y como contraposición a lo precedente, las implementaciones en lenguajes declarativos acostumbran a ser ineficientes, y es precisamente por esto que no están muy extendidas en la actualidad de cara al desarrollo de aplicaciones.


Llamamos Core Maude al intérprete de Maude incorporado en C++ y que provee toda la funcionalidad básica del lenguaje.


Sintaxis básica


Los elementos sintácticos básicos son los identificadores, utilizados para poner nombre a módulos, tipos y operadores. Las unidades básicas de especificación y programación son los módulos.Existen 3 géneros de módulos: los módulos funcionales, los módulos de sistema y los orientados a objetos.Lo primero que una especificación precisa es declarar los modelos (llamados sorts) de los datos definidos y las pertinentes operaciones. Los sorts están parcialmente relacionados a través de relaciones de subtipo (subsort) definiéndose un orden parcial. Esto quiere decir que es posible establecer una correspondencia entre 2 tipos que a priori semejan diferentes. Por servirnos de un ejemplo, pongámonos en el caso de estar definiendo un módulo que representará una lista de enteros. Para tal caso, dispondríamos de una estructura como la siguiente:

fmod LISTA-ENTEROS is protecting INT . ***con esta línea señalamos el empleo del modulo de Enteros sorts ListaEntNV ListaEnt . subsort ListaEntNV < ListaEnt . ***resto de especificación endfm

Como podemos observar hemos definido tanto el tipo ListaEntNV como ListaEnt.Posteriormente los hemos relacionado con el símbolo “<”. Esto implica que ListaEntNV será un subtipo de ListaEnt, esto es, va a tomar un subconjunto de los valores que puede adquirir este.


Este caso concretamente es muy utilizado puesto que representa que ListaEntNV es una lista que ha de estar compuesta por por lo menos un factor.


La lógica en la que se fundamenta Maude es la lógica ecuacional de pertenencia. En esta lógica las clases se reúnen en clases de equivalencia llamados kinds. Para este propósito, 2 tipos se consideran equivalentes si pertenecen al mismo componente conexo. En Maude los modelos están definidos por el usuario al tiempo que los "kinds" son implícitamente asociados con componentes conexos de tipos y son considerados como "supertipos de fallo". Esto puede verse algo más claro en el próximo ejemplo:

op _ - _ : Nat Nat ? Nat .


A priori, esta operación no semeja que presente ningún inconveniente. Mas, ¿qué pasaría si el segundo operando fuera mayor que el primero?:

4-7=¿?

El resultado no estaría definido puesto que estamos utilizando una operación entre el sort Nat, que no aceptaría valores negativos. Una posible solución sería delimitar la operación como un valor del kind Nat, es decir:

op _-_ : Nat Nat ? .

Con esto estamos detallando que bajo cierta situación (en un caso así que el segundo operando sea mayor que el primero) se devolverá un valor del kind, representado por corchetes.


A esto se le conoce como ampliación de recorrido. Otra forma de asegurarnos que nuestra operación va a devolvernos un valor del tipo válido es a través de la llamada reducción de dominio, consistente en hacer que el término que pueda proponernos inconvenientes cumpla una determinada condición. A esta clase de operaciones se les llama parciales.


Maude está compuesto primordialmente por términos, operaciones y ecuaciones que describen el comportamiento de dichas operaciones, siendo los términos variables o bien aplicaciones de un operador a dichas variables. Las variables se declaran restringiéndose a un determinado dominio de un tipo o bien “kind”.


Módulos funcionales


Los módulos funcionales definen géneros de dato y operaciones sobre ellos en forma de teorías ecuacionales. Las clases de datos consisten en elementos que pueden ser nombrados por términos base. 2 términos indican exactamente el mismo elemento si y solo si pertenecen a exactamente la misma clase de equivalencia; esto viene determinado por las ecuaciones.


La semántica de un módulo funcional es su álgebra inicial. En los módulos funcionales, una aplicación repetida de ecuaciones como reglas de simplificación ocasionalmente alcanza un término al que no se le pueden aplicar más ecuaciones, y el resultado, llamado forma preceptiva, es exactamente el mismo con independencia del orden en el que se hayan aplicado las reglas.


Para reducir un término hasta su forma preceptiva se emplea la instrucción:

red TérminoAReducir.

Un módulo funcional se declara utilizando las próximas palabras claves:

fmod <NombreDelMódulo> is <DeclaracionesYDefiniciones> endfm

En Maude, la definición de una operación (como ya vimos en el ejemplo precedente) comienza por la palabra reservada op, seguida del nombre de la operación, 2 puntos, la lista de género de los factores separados por espacios en blanco, el símbolo ->, el tipo del resultado y un punto.Todas y cada una de las operaciones deben devolver un valor y solo uno, mas no es preciso que tenga factores.Los operadores incesantes se definen como aquellos que no tienen ningún razonamiento.


También deja la sobrecarga de operaciones, o sea, se pueden delimitar múltiples operaciones con exactamente el mismo nombre, mas con una lista diferente de factores.


Además los operadores pueden tener atributos que proveen información auxiliar sobre el operador: semántica, sintáctica, etcétera Se declaran entre tras el tipo devuelto y ya antes del punto de fin de línea. Los más esenciales son:

• assoc (asociatividad). • comm (conmutatividad). • idem (idempotencia). • id: <Término> (identidad, con el pertinente término para el factor de identidad). • iter (iterador, deja acotar operadores unarios con un carácter de iterador). • ctor (constructor, a partir de ellos conseguimos todos y cada uno de los valores del tipo).

La propiedad de conmutatividad es en un caso así realmente útil en tanto que muy frecuentemente nos ahorra acotar ciertas ecuaciones. Esto es:

fmod NAT is sort Nat . op cero : ? Nat .op suc : Nat ? Nat .op sum : Nat Nat ? Nat .vars A B :Nat . eq : sum (cero, A)=A . eq : sum (suc(A),B)=suc (sum(A, B)) . endf

Esta podría ser una posible especificación de los Naturales. Si no hubiésemos detallado entre corchetes que la operación sum es conmutativa, habría que incluir más ecuaciones para describir el comportamiento de dicha operación.


Módulos de sistema


Un módulo de sistema en Maude detalla una teoría de reescritura. Una teoría de reescritura tienen tipos, kinds y operadores, y puede tener 3 géneros de definiciones: ecuaciones, axiomas de pertenencia y reglas.


Un módulo de sistema se declara utilizando las próximas palabras claves:

mod <NombreDelMódulo> is <DeclaracionesYDefiniciones> endm

Importación de módulos


Cada módulo de sistemas o bien funcional puede importar otros módulos como submódulos.Esto consiste esencialmente en “avisar” al programa de que vamos a utilizar unos tipos o bien operaciones definidas en otro lugar. En Maude puede ser importado de 3 formas diferentes:



  • Protecting: importar un módulo en modo protecting quiere decir que no se le agrega basura (delimitar nuevos términos irreductibles a las clases definidos en el módulo importado) y confusión (añadir reglas de reducción que hacen que términos que eran diferentes ahora no lo sean) cuando es importado.
  • Extending: deja la adición de basura mas no de confusión.
  • Including: deja la adición de basura o bien de confusión.

La orden de importación la vamos a escribir justo bajo la declaración del nombre del módulo que estamos definiendo, esto es, de la sentencia fmod is, y la vamos a cerrar como siempre y en todo momento por un espacio en blanco seguido por un punto.


Corrección de una especificación


Para que la especificación de una operación sea sintácticamente adecuada debe cumplir 3 condiciones:



  1. tiene que ser confluente (si hay múltiples reducciones posibles se tiene que llegar siempre y en toda circunstancia al mismo término preceptivo),
  2. completa (todo término básico no preceptivo se debe poder reducir), y
  3. libre de reducciones infinitas (no deben existir secuencias de reducciones de longitud infinita).

La corrección semántica requiere una correspondencia entre el funcionamiento de las operaciones detalladas y las propiedades del álgebra modelo deseada.


Operaciones generadoras


Las funciones generadoras se marcan con el atributo Un término es preceptivo si solo incluye operaciones generadoras. Si todos y cada uno de los términos preceptivos representan elementos diferentes, el conjunto de generadores es libre. Si el conjunto de generadores no es libre precisamos ecuaciones impurificadoras, que establecen la equivalencia de términos preceptivas.


Especificación de los naturales en Maude:

fmod NATURAL is sort Natural . *** generadores op 0 : -> Natural . op suc : Natural -> Natural . *** constructores op _+_ : Natural Natural -> Natural . op _*_ : Natural Natural -> Natural . *** variables vars M N : Natural . *** ecuaciones eq suc (M) + suc (N) = suc (suc(M + N)) . eq 0 * N = 0 . eq suc (M) * N = (M * N) + N . endfm

Especificación de los números complejos en Maude:

fmod COMPLEJOS is including INT . sort complejo . *** generadores op <_;_> : Int Int -> Complejo . *** constructores op _+_ : Complejo Complejo -> Complejo . op _-_ : Complejo Complejo -> Complejo . *** variables vars A B C D : Int . *** ecuaciones eq < A ; B > + < C ; D > = < A + B ; C + D > . eq < A ; B > - < C ; D > = < A - B ; C - D > . endfm


  ELIGE TU TEMA DE INTERÉS: 


autoayuda.es   Internet y Tecnologias 

Está aquí: Inicio > [ INTERNET ] > ıllı Maude (lenguaje de programación) wiki: info, historia y vídeos

Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Ver políticas