Articulo de referencia

Atom (lenguaje de programación)

Atom es un lenguaje específico de dominio (DSL) en Haskell , para el diseño de software embebido en tiempo real . Historia Originalmente concebido como un lenguaje de descripció...

Atom es un lenguaje específico de dominio (DSL) en Haskell , para el diseño de software embebido en tiempo real .

Historia

Originalmente concebido como un lenguaje de descripción de hardware (HDL) de alto nivel , Atom se creó a principios de 2007 y se lanzó como software libre y de código abierto (FOSS) en abril de ese mismo año. [ 1 ] Inspirado en TRS [ 2 ] y Bluespec , Atom compilaba descripciones de circuitos, basadas en operaciones atómicas protegidas o reescritura de términos condicionales , en netlists de Verilog para simulación y síntesis lógica . Como compilador de hardware, el objetivo principal de Atom es maximizar el número de operaciones o reglas que pueden ejecutarse en un ciclo de reloj determinado sin violar la semántica de la operación atómica. Al emplear las propiedades de reglas sin conflictos y componibles secuencialmente, [ 2 ] Atom redujo la maximización de la concurrencia de ejecución a una optimización de conjunto de arcos de retroalimentación de un grafo de dependencia de datos de reglas. Este proceso fue similar al algoritmo original de James Hoe . [ 2 ]

Cuando el autor de Atom cambió de profesión a finales de 2007, pasando del diseño lógico a la ingeniería de software para sistemas embebidos , Atom se rediseñó, pasando de ser un HDL a un lenguaje específico de dominio orientado a aplicaciones embebidas de computación en tiempo real estricto . Como resultado, el objetivo principal del compilador de Atom cambió de maximizar la concurrencia de reglas a equilibrar la carga de procesamiento y minimizar la latencia en el peor de los casos . En septiembre de 2008, Atom se presentó en la conferencia de Usuarios Comerciales de Programación Funcional (CUFP). [ 3 ] En abril de 2009, en su nueva versión, se lanzó como software libre. [ 4 ]

Descripción general

Atom es un lenguaje de programación concurrente diseñado para aplicaciones embebidas. Atom ofrece planificación de tareas en tiempo de compilación y genera código con tiempo de ejecución y uso de memoria deterministas , lo que simplifica el análisis del tiempo de ejecución en el peor de los casos para aplicaciones que requieren un rendimiento en tiempo real estricto. El modelo de concurrencia de Atom se basa en acciones atómicas protegidas , lo que elimina la necesidad y los problemas asociados al uso de bloqueos mutex .

Al eliminar la planificación de tareas en tiempo de ejecución y el bloqueo de exclusión mutua, dos servicios que tradicionalmente proporciona un sistema operativo en tiempo real (RTOS), Atom puede eliminar la necesidad y la sobrecarga de un RTOS en aplicaciones integradas.

Límites

Para garantizar un tiempo de ejecución y un consumo de memoria deterministas, Atom impone varias restricciones a la computación. En primer lugar, los diseños de Atom siempre son de estado finito : todas las variables son globales y se declaran en tiempo de compilación, y no se permite la asignación dinámica de memoria . En segundo lugar, Atom no proporciona funciones ni bucles. En su lugar, las actualizaciones de las variables de estado son funciones de lógica combinacional pura del estado actual.

Referencias

  1. ANN: Atom: Otro HDL de Haskell (Informe).
  2. 1 2 3 Hoe, James C.; Arvind (noviembre de 2000). Síntesis de descripciones de hardware centradas en la operación (PDF) . Conferencia internacional sobre diseño asistido por computadora (ICCAD).
  3. "Control de vehículos híbridos con Haskell" . Archivado del original el 4 de julio de 2008. Consultado el 5 de diciembre de 2009 .
  4. ANN: átomo-0.0.2
  • Sitio web oficial
  • Atom en GitHub