Masalah sebenarnya adalah negara.
Bahasa fungsional tidak memiliki status global. Sebagian besar masalah industri memerlukan keadaan pada skala besar (bagaimana Anda mewakili buku besar atau set transaksi) bahkan jika beberapa fungsi dalam skala kecil tidak benar-benar memerlukannya (memproses buku besar).
Tapi kami menjalankan kode pada mesin arsitektur Von-Neuman yang secara inheren state-full. Jadi kita belum benar-benar menyingkirkan negara, bahasa fungsional hanya menyembunyikan kompleksitas negara dari pengembang. Ini berarti bahwa bahasa / kompiler harus berurusan dengan keadaan di belakang layar dan mengelolanya.
Jadi meskipun bahasa fungsional tidak memiliki status global, informasi statusnya dilewatkan sebagai parameter dan hasil.
Jadi pertanyaannya kemudian, dapatkah bahasa menangani negara secara efisien di belakang pengertian? Apalagi ketika ukuran data jauh melebihi ukuran arsitektur.
Melihatnya dari Sisi Hardware
OS telah banyak membantu dalam beberapa tahun terakhir dalam memvisualisasikan ruang alamat sehingga aplikasi tidak perlu khawatir tentang hal itu. Tetapi aplikasi yang tidak khawatir jatuh ke dalam perangkap meronta-ronta perangkat keras ketika tekanan memori menjadi intens (perangkat keras meronta-ronta akan memperlambat proses Anda untuk merangkak).
Karena programmer tidak mengendalikan langsung keadaan dalam bahasa fungsional, mereka harus bergantung pada kompiler untuk menangani ini dan saya belum melihat bahasa fungsional yang menangani ini dengan baik.
Di sisi sebaliknya, programmer state-full memiliki kontrol langsung atas keadaan dan dengan demikian dapat mengompensasi kondisi memori rendah. Meskipun saya belum melihat banyak programmer yang sebenarnya cukup pintar untuk melakukannya.
Dilihat dari sisi industri:
Industri memiliki banyak programer penuh negara yang tidak efisien.
Tetapi mudah untuk mengukur peningkatan dalam program-program ini seiring waktu. Anda melempar tim pengembang pada masalah mereka dapat meningkatkan kode dengan meningkatkan cara program menangani keadaan.
Untuk program fungsional perbaikan lebih sulit untuk diukur karena Anda perlu meningkatkan alat yang akan meningkatkan program (kami hanya melihat bagaimana aplikasi menangani keadaan yang mendasarinya secara efisien di sini, bukan perbaikan keseluruhan program).
Jadi untuk industri, saya pikir ini berkaitan dengan kemampuan untuk mengukur peningkatan dalam kode.
Dari perspektif perekrutan
Ada banyak programmer stat-full yang tersedia untuk disewa. Pemrogram fungsional sulit ditemukan. Jadi model penawaran dan permintaan dasar Anda akan muncul jika industri beralih ke pemrograman gaya fungsional dan itu bukan sesuatu yang mereka inginkan terjadi (programmer cukup mahal seperti itu).