Programmazione funzionale per software incorporato [chiuso]


15

Stavo discutendo F # e la programmazione funzionale con un amico ieri sera e mi ha fatto una domanda interessante. Come faresti il ​​software incorporato in funzionale? Voglio dire, questo sembra un adattamento abbastanza naturale in termini di codice senza stato, ma incorporato implica anche essere molto frugale con la memoria e non sono sicuro della storia per funzionale al riguardo.

Qualche suggerimento su lingue o pacchetti da incorporare con funzionale?


Questo link potrebbe aiutarti ftp.cs.york.ac.uk/pub/malcolm/thesis.html . Scarica il file Postscript e leggilo.
Ubermensch,

@Ubermensch grazie ma ricevo un errore quando provo ad accedere a quel link.
Onorio Catenacci,

3
Si prega di dare un'occhiata a questa domanda SO . Sembra essere molto fedele a ciò che hai chiesto. E questa pagina che tratta della programmazione dell'Arduino con Haskell.Atom
Bhargav Bhat

@OnorioCatenacci Questo link è il file effettivo PostScript ftp.cs.york.ac.uk/pub/malcolm/thesis.ps.Z
Ubermensch

Risposte:


2

Forth è una scelta eccellente per la programmazione di sistemi embedded. Essendo un linguaggio stack, può essere analizzato in termini di composizione delle funzioni ( programmazione concatenativa ). Non vedo alcun motivo per cui un tale linguaggio con aspetti più funzionali non possa essere implementato in modo efficiente, ma al momento non esiste nulla del genere (per quanto ne sappia).


1
La programmazione concatenativa è un paradigma molto diverso dalla programmazione funzionale, ma esiste un quarto funzionale ( funforth ) che implementa alcuni aspetti semplificati del linguaggio del linguaggio funzionale Haskell .
Mark Booth,

@MarkBooth: non così diverso; la programmazione concatenativa (praticamente per definizione) fa un uso pesante di combinatori di ordine superiore e molti concetti funzionali si traducono direttamente in codice concatenativo.
Jon Purdy,

3

Un'opzione è Erlang . Dalla pagina di Wikipedia :

Erlang è un sistema di runtime e linguaggio di programmazione simultaneo, immondizia, per scopi generici. Il sottoinsieme sequenziale di Erlang è un linguaggio funzionale, con valutazione rigorosa, assegnazione singola e digitazione dinamica. Per la concorrenza segue il modello Actor. È stato progettato da Ericsson per supportare applicazioni distribuite, tolleranti ai guasti, soft-real-time e non-stop. Supporta lo scambio a caldo, in modo che il codice possa essere modificato senza arrestare un sistema.

Mentre i thread sono considerati un argomento complicato e soggetto a errori nella maggior parte delle lingue, Erlang offre funzionalità a livello di lingua per la creazione e la gestione dei processi con l'obiettivo di semplificare la programmazione concorrente. Sebbene tutta la concorrenza sia esplicita in Erlang, i processi comunicano utilizzando il passaggio di messaggi anziché le variabili condivise, il che elimina la necessità di blocchi.

La prima versione è stata sviluppata da Joe Armstrong nel 1986. 2 Originariamente era un linguaggio proprietario all'interno di Ericsson, ma è stato rilasciato come open source nel 1998.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.