Irvine Dataflow ( Id ) es un lenguaje de programación paralela de propósito general , creado en la Universidad de California en Irvine en 1975 [ 1 ] por Arvind y KP Gostelow. [ 2 ] Arvind continuó trabajando con Id en el MIT hasta la década de 1990.
El subconjunto principal de Id es un lenguaje de programación puramente funcional con semántica no estricta . Sus características incluyen: funciones de orden superior , un sistema de tipos polimórfico con verificación estática de tipos al estilo Milner con sobrecarga, tipos definidos por el usuario y coincidencia de patrones, y operadores prefijos e infijos. Esto dio lugar al desarrollo de pH, un dialecto paralelo de Haskell .
Los programas Id son implícitamente paralelos y de grano fino .
La abstracción de la variable de sincronización MVar en Haskell se basa en las M-estructuras de Id. [ 3 ]
Ejemplos
Id admite tipos de datos algebraicos , similares a ML, Haskell o Miranda:
tipo booleano = Falso | Verdadero;
Los tipos se infieren por defecto, pero se pueden anotar con una typeofdeclaración. Las variables de tipo usan la sintaxis *0, *1, etc.
tipo de id = *0 -> *0; def id x = x;
Una función que utiliza una comprensión de matriz para calcular el primeroNúmeros de Fibonacci :
typeof fib_array = int -> (array int); def fib_array n = { A = { matriz (0,n) de | [0] = 0 | [1] = 1 | [i] = A[i-1] + A[i-2] || i <- 2 a n } En A };Nótese el uso de la evaluación no estricta en la definición recursiva del array A.
La estrategia de evaluación permisiva de Id permite estructuras de datos cíclicas por defecto. El siguiente código crea una lista cíclica, utilizando el operador cons :.
def ciclo x = { A = x : A In A };Sin embargo, para evitar la construcción no terminante de estructuras verdaderamente infinitas, los retrasos explícitos deben anotarse utilizando #:
def count_up_from x = x :# count_up_from (x + 1);
Implementaciones
- pHfluido
- El sistema pHluid fue una implementación de investigación del lenguaje de programación Id, con planes futuros para una interfaz para pH, un dialecto paralelo del lenguaje de programación Haskell, implementado en el Laboratorio de Investigación de Digital en Cambridge. Está diseñado para uso sin fines de lucro y está dirigido a hardware estándar de estaciones de trabajo Unix.
Referencias
- ↑ Sharp, JA (1992). Data Flow Computing: Theory and Practice . Intellect, Limited. p. 125. ISBN 9780893919214. Consultado el 2 de diciembre de 2014 .
- ↑ Arvind; Gostelow, Kim P.; Plouffe, Wil (1978). "El informe (preliminar) Id: un lenguaje de programación asíncrono y una máquina de computación (revisado)" . Informe técnico TR-114, Departamento de Información y Ciencias de la Computación, Universidad de California, Irvine .
- ↑ "Haskell concurrente". Peyton-Jones, Gordon y Finne. POPL 1996.
Enlaces externos
- Manual de referencia del lenguaje ID , Rishiyur S. Nikhil, 1991.
- "Un lenguaje de programación asíncrono para una gran máquina multiprocesador", Arvind et al., TR114a, Departamento de ISC, UC Irvine, diciembre de 1978.
- Lenguajes funcionales
- Temas básicos de lenguajes de programación