Pemrograman Fungsional Untuk Perangkat Lunak Tertanam [ditutup]

15

Saya mendiskusikan Pemrograman F # dan Fungsional dengan seorang teman tadi malam dan dia mengajukan pertanyaan menarik kepada saya. Bagaimana Anda melakukan perangkat lunak tertanam dalam fungsional? Maksud saya ini sepertinya cukup alami dalam hal kode stateless tetapi tertanam juga mensyaratkan sangat hemat dengan memori dan saya tidak yakin dengan cerita fungsional dalam hal itu.

Adakah saran tentang bahasa atau paket untuk disematkan dengan fungsional?

Onorio Catenacci
sumber
Tautan ini dapat membantu Anda ftp.cs.york.ac.uk/pub/malcolm/thesis.html . Unduh file postscript dan bacalah.
Ubermensch
@Ubermensch terima kasih, tetapi saya mendapat pesan kesalahan saat mencoba mengakses tautan itu.
Onorio Catenacci
3
Silakan lihat pertanyaan SO ini . Tampaknya sangat dekat dengan apa yang Anda minta. Dan halaman ini membahas pemrograman Arduino dengan Haskell.Atom
Bhargav Bhat
@OnorioCatenacci Tautan ini adalah file postscript aktual ftp.cs.york.ac.uk/pub/malcolm/thesis.ps.Z
Ubermensch

Jawaban:

2

Keempat adalah pilihan yang sangat baik untuk pemrograman sistem embedded. Menjadi bahasa stack, dapat dianalisis dalam hal komposisi fungsi ( pemrograman concatenative ). Saya tidak melihat alasan mengapa bahasa seperti itu dengan aspek-aspek yang lebih fungsional tidak dapat juga diimplementasikan secara efisien, tetapi sampai sekarang belum ada (pengetahuan saya).

Jon Purdy
sumber
1
Pemrograman concatenative adalah paradigma yang sangat berbeda dengan pemrograman Fungsional, tetapi ada fungsional sebagainya ( funforth ) yang mengimplementasikan beberapa aspek yang disederhanakan dari bahasa bahasa fungsional Haskell .
Mark Booth
@ MarkBooth: Tidak terlalu berbeda; pemrograman concatenative (cukup banyak menurut definisi) banyak menggunakan combinator tingkat tinggi, dan banyak konsep fungsional menerjemahkan langsung ke dalam kode concatenative.
Jon Purdy
3

Salah satu opsi adalah Erlang . Dari halaman wikipedia :

Erlang adalah bahasa pemrograman runtime dan sistem runtime untuk tujuan umum bersamaan. Subset berurutan dari Erlang adalah bahasa fungsional, dengan evaluasi yang ketat, tugas tunggal, dan pengetikan dinamis. Untuk konkurensi mengikuti model Aktor. Itu dirancang oleh Ericsson untuk mendukung aplikasi terdistribusi, toleran terhadap kesalahan, soft-real-time, non-stop. Ini mendukung hot swapping, sehingga kode dapat diubah tanpa menghentikan sistem.

Sementara utas dianggap sebagai topik yang rumit dan rawan kesalahan dalam kebanyakan bahasa, Erlang menyediakan fitur tingkat bahasa untuk membuat dan mengelola proses dengan tujuan menyederhanakan pemrograman bersamaan. Meskipun semua konkurensi eksplisit di Erlang, proses berkomunikasi menggunakan passing pesan alih-alih variabel yang dibagi, yang menghilangkan kebutuhan akan kunci.

Versi pertama dikembangkan oleh Joe Armstrong pada tahun 1986. 2 Ini awalnya merupakan bahasa eksklusif dalam Ericsson, tetapi dirilis sebagai sumber terbuka pada tahun 1998.

Mark Booth
sumber