¡Vamos!

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 11 de diciembre de 2021; las comprobaciones requieren 5 ediciones .
¡Vamos!
clase de idioma multiproceso
Apareció en 2003
Autor Frances McCabeKeith Clark
sido influenciado prólogo [1]
Licencia GPLv2
Plataforma Sistema operativo similar a Unix

¡Vamos!  es un lenguaje de programación de subprocesos múltiples desarrollado por Keith Clark y Francis McCabe en 2003. Multiparadigma , enfocado en programación segura y aplicaciones distribuidas (usando arquitectura de agente), con tipado fuerte . Hay soporte para definiciones de funciones y procedimientos, así como relaciones entre ellos. Los subprocesos ejecutan procedimientos, llaman a funciones y solicitan las conexiones necesarias según sea necesario. Los subprocesos de diferentes agentes interactúan entre sí mediante mensajes asíncronos. Los hilos de un mismo agente pueden establecer vínculos dinámicos entre sí, formando una especie de memoria compartida.

Debido a su naturaleza multiparadigma, el lenguaje tiene soporte para programación lógica y funcional , hay soporte para estilos de programación imperativa y orientada a objetos , y el modelado ontológico es totalmente compatible , similar al sistema de tipo utilizado para la Web Semántica , debido a qué clases de OWL se pueden representar como sistemas de tipo[ aclarar ] [2] .

Debido al lanzamiento del lenguaje de programación propio de Google, Go , Go! se convirtió en víctima de un conflicto de nombres, y este conflicto no se ha resuelto hasta ahora [1] .

Ejemplo

El siguiente ejemplo ilustra el tipo 'ontológico' y el estilo de declaración adoptado en Go!.

Género ::= masculino | femenino _ persona < ˜ { diaDelNacimiento : []=> dia . edad : []=> entero . género : []=> Género . nombre : []=> cadena . inicio : []=> cadena . vive : [ cadena ]{}}. persona : [ cadena , día , Sexo , cadena ] $ = persona . persona ( Nm , Nacido , Sx , Hm ) ..{ dayOfBirth ()=> Nacido . edad () => años entre ( ahora (), nacido ). género ()=> Sx . nombre ()=> Nm . casa ()=> hm . vive ( Pl ) : - Pl = hogar (). yearsBetween : [ entero , día ]=> entero . años entre (...) => .. }. newPerson : [ cadena , día , Sexo , cadena ]=> persona . nuevaPersona ( Nm , Nacido , Sx , Hm )=> $persona ( Nm , Nacido , Sx , Hm ).

La regla ::= define un nuevo tipo algebraico  , un tipo de datos que consta únicamente de constructores de datos .

La regla <˜ define el tipo de interfaz: dice exactamente qué propiedades caracterizan a una persona en este caso y también impone restricciones típicas (restricciones) sobre estas propiedades. Esto corrige que age (edad) es una propiedad de función con valores enteros, y el parámetro 'vive con' (vidas) es una relación unaria para cadenas, y el parámetro 'Cumpleaños' (dayOfBirth) es una propiedad de función que indica el día de la objeto.

Una regla como $= dice que también hay una marca como teoría (suposición) que indica a una persona específica; la propia teoría define las características de un tipo de persona (es decir, una especie de implementación de la interfaz de persona), expresadas en cuatro parámetros dados con tipos: cadena, día, género y cadena.

Notas

  1. 1 2 El nombre 'Go' de Google trae acusaciones de 'maldad' - InformationWeek . Consultado el 11 de noviembre de 2009. Archivado desde el original el 22 de julio de 2010.
  2. Clark y McCabe, Inteligencia aplicada, 2006

Enlaces

Disputa resuelta. Google mantiene el nombre Go.