Aprendizaje automático concurrente | |
---|---|
Semántica | mensajería síncrona |
clase de idioma | funcional , competitivo |
tipo de ejecución | incrustado |
Autor | Juan H Reppy |
Liberar |
|
sistema de tipos | Hindley-Milner |
sido influenciado | ML estándar |
influenciado |
extensiones competitivas para [2] OCaml , Haskell , Scheme , Java |
Licencia | abierto |
Sitio web | cml.cs.uchicago.edu |
Plataforma | ML estándar |
sistema operativo | multiplataforma |
El aprendizaje automático concurrente (CML) es un lenguaje de programación competitivo tipado estáticamente de orden superior que está integrado en el lenguaje de propósito general Standard ML [3] [2] .
Implementado como biblioteca. Incluido en la distribución estándar de los compiladores SML/NJ y MLton . Con cambios mínimos, se planea incluir CML en el estándar del futuro lenguaje ML sucesor .
CML implementa el modelo de paso de mensajes síncronos extendiendo SML con canales escritos y abstracciones síncronas de primera clase llamadas eventos . Este mecanismo permite encapsular protocolos de comunicación y sincronización complejos como objetos de primera clase , fomentando la ocultación de los canales de comunicación reales bajo tipos de datos abstractos y, por lo tanto, mejorando la modularidad . [3] [2]
CML se desarrolló en un momento en que los procesadores con paralelismo de hardware eran un lujo, por lo que sus primeras implementaciones se centraron en la ejecución físicamente secuencial. Posteriormente, se desarrolló "Parallel Concurrent ML" [2] , que se ejecuta en procesadores modernos de manera más eficiente.
La creación y desarrollo de CML se debe principalmente a John Reppy [ 4 ] .
El ML concurrente se destaca entre la mayoría de los lenguajes integrados porque no tiene una sola implementación, sino dos fundamentalmente diferentes. Esto se debe a las diferencias entre las implementaciones de ML estándar en su propósito previsto y las estrategias de compilación utilizadas:
eXeneUna biblioteca [5] está escrita en CML que implementa un modelo reactivo paralelo de la interfaz gráfica de usuario bajo el sistema X Window .
¡Hola mundo! ' para la consola. Esto genera un hilo que crea un tubo de cadena . Este subproceso primero genera otro subproceso que imprime en la consola la primera línea recibida en el canal y luego envía la cadena "¡ Hola, mundo! " a ese canal generado. ".
estructura Hola = estructura abierta CML divertido hola () = let val c : string chan = canal () en spawn ( fn () => TextIO . print ( recv c ) ); enviar ( c , "hola, mundo! \n " ); salir () fin diversión principal ( nombre , argv ) = RunCML . doit ( fn () => ignorar ( spawn hola ), NINGUNO ) fin
Lenguajes de programación | |
---|---|
|