Tôi đang cố gắng hình dung một số hệ thống vật lý tự động đơn giản (chẳng hạn như con lắc, cánh tay robot, v.v.) trong Haskell. Thường thì những hệ thống đó có thể được mô tả bằng các phương trình như
df/dt = c*f(t) + u(t)
nơi u(t)
đại diện cho một số loại 'điều khiển thông minh'. Những hệ thống đó trông rất phù hợp trong mô hình Lập trình phản ứng chức năng.
Vì vậy, tôi lấy cuốn sách "Trường phái biểu hiện Haskell" của Paul Hudak và nhận thấy rằng ngôn ngữ cụ thể của miền "FAL" (dành cho Ngôn ngữ hoạt hình chức năng) được trình bày ở đó thực sự hoạt động khá dễ chịu đối với các hệ thống đồ chơi đơn giản của tôi (mặc dù một số chức năng, đáng chú ý là integrate
, dường như hơi lười biếng để sử dụng hiệu quả, nhưng có thể sửa chữa dễ dàng).
Câu hỏi của tôi là, đâu là giải pháp thay thế hoàn thiện hơn, cập nhật, được duy trì tốt, được điều chỉnh hiệu suất cho các ứng dụng tiên tiến hơn hoặc thậm chí thực tế ngày nay?
Trang wiki này liệt kê một số tùy chọn cho Haskell, nhưng tôi không rõ về các khía cạnh sau:
Trạng thái "phản ứng", dự án của Conal Eliott, (theo tôi hiểu), một trong những người phát minh ra mô hình lập trình này, trông hơi cũ. Tôi thích mã của anh ấy, nhưng có lẽ tôi nên thử các lựa chọn thay thế cập nhật hơn? Sự khác biệt chính giữa chúng là gì, về cú pháp / hiệu suất / thời gian chạy-ổn định?
Trích dẫn từ một cuộc khảo sát vào năm 2011, Phần 6, " ... Việc triển khai FRP vẫn không đủ hiệu quả hoặc không đủ khả năng dự đoán về hiệu suất để được sử dụng hiệu quả trong các miền yêu cầu đảm bảo độ trễ ... ". Mặc dù cuộc khảo sát gợi ý một số cách tối ưu hóa thú vị có thể xảy ra, với thực tế là FRP đã tồn tại hơn 15 năm, tôi có ấn tượng rằng vấn đề hiệu suất này có thể là một thứ gì đó rất hoặc thậm chí vốn dĩ rất khó giải quyết ít nhất là trong vòng vài năm. Điều này có đúng không?
Cùng một tác giả của cuộc khảo sát nói về "rò rỉ thời gian" trong blog của mình . Có phải vấn đề là duy nhất đối với FRP hay vấn đề mà chúng ta thường gặp phải khi lập trình bằng một ngôn ngữ thuần túy, không nghiêm ngặt? Bạn đã bao giờ thấy quá khó để ổn định một hệ thống dựa trên FRP theo thời gian, nếu không đủ hiệu quả?
Đây vẫn là một dự án cấp độ nghiên cứu? Những người như kỹ sư nhà máy, kỹ sư người máy, kỹ sư tài chính, v.v. có thực sự sử dụng chúng (bằng ngôn ngữ khác phù hợp với nhu cầu của họ) không?
Mặc dù cá nhân tôi thích triển khai Haskell hơn, nhưng tôi sẵn sàng đón nhận các đề xuất khác. Ví dụ, sẽ đặc biệt thú vị nếu triển khai Erlang --- sau đó sẽ rất dễ dàng để có một quy trình máy chủ thông minh, thích ứng, tự học!