Saya mencoba untuk memvisualisasikan beberapa sistem fisik otomatis sederhana (seperti pendulum, lengan robot, dll.) Di Haskell. Seringkali sistem tersebut dapat dijelaskan dengan persamaan seperti
df/dt = c*f(t) + u(t)
di mana u(t)
mewakili semacam 'kontrol cerdas'. Sistem tersebut terlihat sangat cocok dengan paradigma Pemrograman Reaktif Fungsional.
Jadi saya mengambil buku "Sekolah Ekspresi Haskell" oleh Paul Hudak, dan menemukan bahwa bahasa khusus domain "FAL" (untuk Bahasa Animasi Fungsional) yang disajikan di sana sebenarnya bekerja cukup menyenangkan untuk sistem mainan sederhana saya (meskipun beberapa fungsi, terutama integrate
, sepertinya terlalu malas untuk penggunaan yang efisien, tetapi mudah diperbaiki).
Pertanyaan saya adalah, apa alternatif yang lebih matang, terkini, terpelihara dengan baik, kinerja yang disesuaikan untuk aplikasi yang lebih maju, atau bahkan praktis saat ini?
Halaman wiki ini mencantumkan beberapa opsi untuk Haskell, tetapi saya tidak jelas tentang hal-hal berikut:
Status “reactive”, proyek dari Conal Eliott yang (seperti yang saya pahami) salah satu penemu paradigma pemrograman ini, terlihat agak basi. Saya suka kodenya, tetapi mungkin saya harus mencoba alternatif lain yang lebih mutakhir? Apa perbedaan utama di antara mereka, dalam hal sintaks / kinerja / stabilitas runtime?
Mengutip dari survei tahun 2011, Bagian 6, " ... Implementasi FRP masih belum cukup efisien atau kinerjanya cukup dapat diprediksi untuk digunakan secara efektif di domain yang memerlukan jaminan latensi ... ". Meskipun survei menunjukkan beberapa kemungkinan pengoptimalan yang menarik, mengingat fakta bahwa FRP telah ada selama lebih dari 15 tahun, saya mendapat kesan bahwa masalah kinerja ini mungkin sesuatu yang sangat atau bahkan secara inheren sulit dipecahkan setidaknya dalam beberapa tahun. Apakah ini benar?
Penulis survei yang sama berbicara tentang "kebocoran waktu" di blognya . Apakah masalahnya unik pada FRP, atau sesuatu yang biasanya kita alami saat membuat program dalam bahasa yang murni dan tidak ketat? Pernahkah Anda merasa terlalu sulit untuk menstabilkan sistem berbasis FRP dari waktu ke waktu, jika kinerjanya tidak cukup?
Apakah ini masih proyek tingkat penelitian? Apakah orang-orang seperti insinyur pabrik, insinyur robotika, insinyur keuangan, dll. Benar-benar menggunakannya (dalam bahasa apa pun yang sesuai dengan kebutuhan mereka)?
Meskipun saya pribadi lebih suka penerapan Haskell, saya terbuka untuk saran lain. Misalnya, akan sangat menyenangkan untuk memiliki implementasi Erlang --- maka akan sangat mudah untuk memiliki proses server yang cerdas, adaptif, dan belajar mandiri!