Lập trình chức năng cho phần mềm nhúng [đã đóng]


15

Tôi đã thảo luận về F # và Lập trình chức năng với một người bạn tối qua và anh ấy đã đưa ra một câu hỏi thú vị cho tôi. Làm thế nào bạn sẽ làm phần mềm nhúng trong chức năng? Ý tôi là điều này có vẻ giống như một sự phù hợp khá tự nhiên về mặt mã không trạng thái nhưng được nhúng cũng đòi hỏi phải rất tiết kiệm với bộ nhớ và tôi không chắc câu chuyện về chức năng liên quan đến vấn đề đó.

Bất kỳ đề xuất về ngôn ngữ hoặc gói để nhúng với chức năng?


Liên kết này có thể giúp bạn ftp.cs.york.ac.uk/pub/malcolm/thesis.html . Tải về tập tin postcript và đọc nó.
Ubermensch

@Ubermensch cảm ơn nhưng tôi gặp lỗi khi tôi cố truy cập vào liên kết đó.
Onorio Catenacci

3
Xin hãy xem câu hỏi SO này . Nó dường như được thực hiện rất chặt chẽ với những gì bạn đã hỏi. Và trang này liên quan đến việc lập trình Arduino với Haskell.Atom
Bhargav Bhat

@OnorioCatenacci Liên kết này là tệp mô tả
Ubermensch

Câu trả lời:


2

Forth là một lựa chọn tuyệt vời cho lập trình hệ thống nhúng. Là một ngôn ngữ ngăn xếp, nó có thể được phân tích về mặt thành phần chức năng ( lập trình nối ). Tôi thấy không có lý do tại sao một ngôn ngữ như vậy với nhiều khía cạnh chức năng hơn cũng không thể được thực hiện một cách hiệu quả, nhưng vẫn chưa có điều đó (theo hiểu biết của tôi) tồn tại.


1
Lập trình liên kết là một mô hình rất khác với lập trình Hàm, nhưng có một chức năng ( funforth ) thực hiện một số khía cạnh đơn giản hóa của ngôn ngữ chức năng Haskell .
Đánh dấu gian hàng

@MarkBooth: Không quá khác biệt; lập trình concatenative (khá nhiều theo định nghĩa) sử dụng rất nhiều các tổ hợp bậc cao hơn, và nhiều khái niệm chức năng dịch trực tiếp thành mã nối.
Jon Purdy

3

Một lựa chọn là Erlang . Từ trang wikipedia :

Erlang là một ngôn ngữ lập trình và hệ thống thời gian chạy được thu gom rác đa mục đích chung. Tập hợp con tuần tự của Erlang là một ngôn ngữ chức năng, với sự đánh giá chặt chẽ, bài tập đơn và gõ động. Đối với đồng thời, nó theo mô hình Actor. Nó được thiết kế bởi Ericsson để hỗ trợ các ứng dụng phân tán, chịu lỗi, thời gian thực mềm, không dừng. Nó hỗ trợ trao đổi nóng, để mã có thể được thay đổi mà không cần dừng hệ thống.

Mặc dù các luồng được coi là một chủ đề phức tạp và dễ bị lỗi trong hầu hết các ngôn ngữ, Erlang cung cấp các tính năng ở cấp độ ngôn ngữ để tạo và quản lý các quy trình với mục đích đơn giản hóa lập trình đồng thời. Mặc dù tất cả đồng thời là rõ ràng trong Erlang, các quy trình giao tiếp bằng cách sử dụng thông báo truyền thay vì các biến được chia sẻ, loại bỏ sự cần thiết của khóa.

Phiên bản đầu tiên được phát triển bởi Joe Armstrong vào năm 1986. 2 Ban đầu nó là ngôn ngữ độc quyền trong Ericsson, nhưng được phát hành dưới dạng nguồn mở vào năm 1998.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.