Programación funcional para software embebido [cerrado]

15

Anoche estaba discutiendo F # y Programación Funcional con un amigo y me hizo una pregunta interesante. ¿Cómo haría el software embebido en funcional? Quiero decir que esto parece un ajuste bastante natural en términos de código sin estado, pero incrustar también implica ser muy frugal con la memoria y no estoy seguro de la historia funcional en ese sentido.

¿Alguna sugerencia sobre idiomas o paquetes para embebido con funcional?

Onorio Catenacci
fuente
Este enlace podría ayudarlo a ftp.cs.york.ac.uk/pub/malcolm/thesis.html . Descargue el archivo postscript y léalo.
Ubermensch
@Ubermensch gracias pero recibo un error cuando intento acceder a ese enlace.
Onorio Catenacci
3
Por favor, eche un vistazo a esta pregunta SO . Parece estar muy relacionado con lo que has pedido. Y esta página trata sobre la programación del Arduino con Haskell
Bhargav Bhat
@OnorioCatenacci Este enlace es el archivo postscript actual ftp.cs.york.ac.uk/pub/malcolm/thesis.ps.Z
Ubermensch

Respuestas:

2

Forth es una excelente opción para la programación de sistemas integrados. Al ser un lenguaje de pila, se puede analizar en términos de composición de funciones ( programación concatenativa ). No veo ninguna razón por la cual dicho lenguaje con aspectos más funcionales no pueda implementarse de manera eficiente, pero aún no existe tal cosa (que yo sepa).

Jon Purdy
fuente
1
La programación concatenativa es un paradigma muy diferente a la programación funcional, pero existe un funcional adelante ( funforth ) que implementa algunos aspectos simplificados del lenguaje de lenguaje funcional Haskell .
Mark Booth
@ MarkBooth: No es tan diferente; La programación concatenativa (más o menos por definición) hace un uso intensivo de los combinadores de orden superior, y muchos conceptos funcionales se traducen directamente en código concatenativo.
Jon Purdy
3

Una opción es Erlang . Desde la página de wikipedia :

Erlang es un lenguaje de programación concurrente de propósito general, recolectado de basura y un sistema de tiempo de ejecución. El subconjunto secuencial de Erlang es un lenguaje funcional, con evaluación estricta, asignación única y escritura dinámica. Por concurrencia sigue el modelo de actor. Fue diseñado por Ericsson para admitir aplicaciones distribuidas, tolerantes a fallas, en tiempo real suave y sin interrupciones. Es compatible con el intercambio en caliente, por lo que el código se puede cambiar sin detener un sistema.

Si bien los subprocesos se consideran un tema complicado y propenso a errores en la mayoría de los idiomas, Erlang proporciona características de nivel de lenguaje para crear y administrar procesos con el objetivo de simplificar la programación concurrente. Aunque toda la concurrencia es explícita en Erlang, los procesos se comunican mediante el paso de mensajes en lugar de variables compartidas, lo que elimina la necesidad de bloqueos.

La primera versión fue desarrollada por Joe Armstrong en 1986. 2 Originalmente era un lenguaje propietario dentro de Ericsson, pero se lanzó como código abierto en 1998.

Mark Booth
fuente