Saya telah menjadi pengembang web selama beberapa waktu sekarang, dan baru-baru ini mulai mempelajari beberapa pemrograman fungsional. Seperti orang lain, saya mengalami kesulitan yang signifikan dalam menerapkan banyak konsep ini pada pekerjaan profesional saya. Bagi saya, alasan utama untuk ini adalah saya melihat konflik antara tujuan FP untuk tetap tanpa kewarganegaraan tampaknya cukup bertentangan dengan fakta bahwa sebagian besar pekerjaan pengembangan web yang saya lakukan sangat terkait dengan database, yang sangat berpusat pada data.
Satu hal yang membuat saya menjadi pengembang yang jauh lebih produktif di sisi OOP adalah penemuan pemeta objek-relasional seperti MyGeneration d00dads untuk .Net, Class :: DBI untuk perl, ActiveRecord untuk ruby, dll. Hal ini memungkinkan saya untuk menjauh dari menulis pernyataan sisipkan dan pilih sepanjang hari, dan untuk fokus pada bekerja dengan data dengan mudah sebagai objek. Tentu saja, saya masih bisa menulis kueri SQL saat kekuatannya dibutuhkan, tetapi jika tidak, kueri tersebut diabstraksi dengan baik di belakang layar.
Sekarang, beralih ke pemrograman fungsional, sepertinya dengan banyak kerangka kerja web FP seperti Tautan memerlukan banyak penulisan kode sql boilerplate, seperti dalam contoh ini . Weblocks tampaknya sedikit lebih baik, tetapi tampaknya menggunakan semacam model OOP untuk bekerja dengan data, dan masih membutuhkan kode yang harus ditulis secara manual untuk setiap tabel dalam database Anda seperti dalam contoh ini . Saya kira Anda menggunakan beberapa pembuatan kode untuk menulis fungsi pemetaan ini, tetapi tampaknya jelas tidak seperti cadel.
(Perhatikan bahwa saya belum melihat Weblocks atau Link dengan sangat dekat, saya mungkin hanya salah paham bagaimana penggunaannya).
Jadi pertanyaannya adalah, untuk bagian akses database (yang saya yakini cukup besar) dari aplikasi web, atau pengembangan lain yang membutuhkan antarmuka dengan database sql, kita tampaknya dipaksa turun dari salah satu jalur berikut:
- Jangan Gunakan Pemrograman Fungsional
- Mengakses Data dengan cara yang menjengkelkan dan tidak abstrak yang melibatkan penulisan banyak kode SQL atau SQL ala Links secara manual
- Paksa Bahasa fungsional kita menjadi paradigma pseudo-OOP, sehingga menghilangkan beberapa keanggunan dan stabilitas pemrograman fungsional yang sebenarnya.
Jelas, tidak ada dari opsi ini yang tampak ideal. Sudah menemukan cara untuk menghindari masalah ini? Apakah benar-benar ada masalah di sini?
Catatan: Saya pribadi paling akrab dengan LISP di bagian depan FP, jadi jika Anda ingin memberikan contoh apa pun dan mengetahui beberapa bahasa FP, cadel mungkin akan menjadi bahasa pilihan yang disukai
NB: Untuk Masalah khusus untuk aspek lain dari pengembangan web, lihat pertanyaan ini .