stringtranslate.com

occam (lenguaje de programación)

occam es un lenguaje de programación concurrente que se basa en el álgebra de procesos de procesos secuenciales de comunicación (CSP), [1] y comparte muchas de sus características. Lleva el nombre del filósofo Guillermo de Ockham , que da nombre a la navaja de Occam .

occam es un lenguaje procesal imperativo (como Pascal ). Fue desarrollado por David May y otros en Inmos (marca registrada INMOS), asesorados por Tony Hoare , como lenguaje de programación nativo para sus microprocesadores transputer , pero hay implementaciones disponibles para otras plataformas. La versión más conocida es occam 2; Su manual de programación fue escrito por Steven Ericsson-Zenith y otros en Inmos .

Descripción general

En los siguientes ejemplos, la sangría y el formato son fundamentales para analizar el código: las expresiones terminan al final de la línea, las listas de expresiones deben estar en el mismo nivel de sangría. Esta característica, denominada regla de fuera de juego , también se encuentra en otros lenguajes como Haskell y Python .

La comunicación entre procesos funciona a través de canales nombrados . Un proceso envía datos a un canal !mientras que otro ingresa datos con ?. La entrada y salida no pueden continuar hasta que el otro extremo esté listo para aceptar u ofrecer datos. (En el caso de que no proceda, a menudo se dice que el proceso se bloquea en el canal. Sin embargo, el programa no girará ni sondeará; por lo tanto, términos como esperar , colgar o ceder también pueden transmitir el comportamiento; también en el contexto de que no bloquear la ejecución de otros procesos independientes). Ejemplos (c es una variable):

teclado ? C
pantalla ! C

SEQintroduce una lista de expresiones que se evalúan secuencialmente. Esto no está implícito como lo está en la mayoría de los otros lenguajes de programación. Ejemplo:

SEQ x := x + 1 y := x * x

PARcomienza una lista de expresiones que pueden evaluarse simultáneamente. Ejemplo:

PAR pag() q()

ALTEspecifica una lista de comandos protegidos . Las guardias son una combinación de una condición booleana y una expresión de entrada, ambas opcionales. Cada guardia cuya condición es verdadera y el canal de entrada está listo es exitosa. Se selecciona una de las alternativas exitosas para su ejecución. Ejemplo:

ALTA cuenta1 <100 y c1? datos SEQ cuenta1:= cuenta1 + 1 fusionado! datos cuenta2 <100 y c2? datos SEQ cuenta2:= cuenta2 + 1 fusionado! datos estado ? pedido SEQ afuera ! contar1 afuera ! contar2

Esto leerá datos de los canales c1 o c2 (el que esté listo) y los pasará a un canal fusionado. Si countN llega a 100, las lecturas del canal correspondiente se desactivarán. Una solicitud en el canal de estado se responde enviando los recuentos a out.

Revisiones de idioma

1983 "occam" de INMOS Limited

cámara 1

occam 1 [2] (lanzado en 1983) fue una versión preliminar del lenguaje tomado del trabajo de David May sobre EPL y CSP de Tony Hoare. Esto solo admitía el tipo de datos VAR, que era un tipo integral correspondiente a la longitud de la palabra nativa de la arquitectura de destino, y matrices de una sola dimensión.

occam 2

occam 2 [3] es una extensión producida por Inmos Ltd en 1987 que agrega soporte de punto flotante , funciones, matrices multidimensionales y más tipos de datos, como tamaños variables de números enteros (INT16, INT32) y bytes.

Con esta revisión, occam se convirtió en un lenguaje capaz de expresar programas útiles, mientras que occam 1 era más adecuado para examinar algoritmos y explorar el nuevo lenguaje (sin embargo, el compilador de occam 1 fue escrito en occam 1, [4] por lo que existe una prueba de existencia que se podrían escribir programas útiles y de tamaño razonable en occam 1, a pesar de sus limitaciones).

occam 2.1

occam 2.1 [1] fue el último de la serie de desarrollos del lenguaje occam aportados por Inmos. Definido en 1994, fue influenciado por una propuesta anterior para un lenguaje occam 3 (también conocido como "occam91" durante su desarrollo inicial) creado por Geoff Barrett en Inmos a principios de los años 1990. Se distribuyó un manual de referencia revisado que describe occam 3 para comentarios de la comunidad, [5] pero el lenguaje nunca se implementó completamente en un compilador.

occam 2.1 introdujo varias características nuevas en occam 2, que incluyen:

Para obtener una lista completa de los cambios, consulte el Apéndice P del Manual de referencia de Inmos occam 2.1.

occam-π

occam-π [6] es el nombre común para la variante de occam implementada por versiones posteriores del compilador de occam Kent Retargetable ( KRoC ). La adición del símbolo π (pi) al nombre de occam es una alusión a KRoC occam que incluye varias ideas inspiradas en el cálculo π . Contiene varias extensiones importantes para el compilador occam 2.1, por ejemplo:

Ver también

Referencias

  1. ^ Manual de referencia de ab occam 2.1 (PDF) . SGS-Thomson Microelectronics Ltd. 1995-05-12.Documento inmos 72 occ 45 03
  2. ^ Manual de programación de occam . Prentice Hall. 1984.ISBN 0-13-629296-8.
  3. ^ Ericsson-Zenith, Steven (1988). Manual de referencia de occam 2 . Prentice Hall. ISBN 0-13-629312-3.
  4. ^ Cocinero, Barry M; Pelar, RMA (11 de abril de 1999). "Occam en matrices de puertas programables en campo". En Cook, Barry M. (ed.). Arquitecturas, Lenguajes y Técnicas para Sistemas Concurrentes . 22ª Reunión Técnica del Grupo Mundial de Usuarios de Occam y Transputer. Keele, Reino Unido: IOS Press. pag. 219.ISBN 90-5199-480-X. Consultado el 28 de noviembre de 2016 .
  5. ^ Barrett, Geoff; Ericsson-Zenith, Steven (31 de marzo de 1992). "Manual de referencia de occam 3" (PDF) . Inmos . Consultado el 24 de marzo de 2008 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  6. ^ Barnes, Fred; Welch, Peter (14 de enero de 2006). "occam-pi: combinación de lo mejor de CSP y el cálculo pi" . Consultado el 24 de noviembre de 2006 .

Otras lecturas

enlaces externos