Aprendizaje automático concurrente

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 .

Detalles

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 ] . 

Implementación

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:

Aplicación

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 .

Código de ejemplo

¡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

Notas

  1. 110.79  Archivos de distribución
  2. 1 2 3 4 Reppy, 2009 .
  3. 12 Reppy , Xiao, 2007 .
  4. Página de inicio de John Reppy . Consultado el 24 de julio de 2015. Archivado desde el original el 27 de julio de 2015.
  5. eXene: conjunto de herramientas del sistema X-Window multiproceso escrito en ConcurrentML . Fecha de acceso: 24 de julio de 2015. Archivado desde el original el 22 de febrero de 2012.

Literatura

  • John Reppy, Claudio V. Russo, Yingqi Xiao. ML concurrente paralelo . — Conferencia Internacional sobre Programación Funcional (ICFP), 2009.

Enlaces

Norman Ramsey. Programación Concurrente en ML  // Informe Técnico CS-TR-262-90. — Universidad de Princeton, 1990.