Bir süredir web geliştiricisiyim ve son zamanlarda bazı işlevsel programlamayı öğrenmeye başladım. Diğerleri gibi, bu kavramların birçoğunu profesyonel çalışmalarıma uygulamakta bazı önemli sorunlar yaşadım. Benim için bunun birincil nedeni, FP'nin vatansız kalma hedefi arasında bir çelişki görmem, yaptığım çoğu web geliştirme çalışmasının, çok veri merkezli olan veritabanlarına büyük ölçüde bağlı olduğu gerçeğiyle oldukça çelişkili görünüyor.
Beni nesnelerin OOP tarafında çok daha üretken bir geliştirici yapan şey, .Net için MyGeneration d00dads, perl için Class :: DBI, Ruby için ActiveRecord, vb. Gibi nesne-ilişkisel haritacıların keşfi oldu. Bu, uzak durmama izin verdi. tüm gün ekleme ve seçme ifadeleri yazmaktan ve verilerle nesneler olarak kolayca çalışmaya odaklanmaktan. Tabii ki, güçlerine ihtiyaç duyulduğunda hala SQL sorguları yazabilirim, ancak aksi halde perde arkasında güzelce soyutlanmıştı.
Şimdi, işlevsel programlamaya dönersek, Bağlantılar gibi FP web çerçevelerinin çoğunda, bu örnekte olduğu gibi, çok sayıda standart sql kodu yazmayı gerektiriyor gibi görünüyor . Web kilitleri biraz daha iyi görünüyor, ancak verilerle çalışmak için bir çeşit OOP modeli kullanıyor gibi görünüyor ve yine de bu örnekte olduğu gibi veritabanınızdaki her tablo için kodun manuel olarak yazılmasını gerektiriyor . Sanırım bu eşleme işlevlerini yazmak için biraz kod üretme kullanıyorsunuz, ancak bu kesinlikle lisp gibi görünmüyor.
(Not Web Bloklarına veya Bağlantılara çok yakından bakmadım, nasıl kullanıldıklarını yanlış anlıyor olabilirim).
Öyleyse soru şu ki, web uygulamasının veritabanı erişim bölümleri (oldukça büyük olduğuna inanıyorum) veya bir sql veritabanıyla arayüz gerektiren diğer geliştirmeler için aşağıdaki yollardan birine zorlanmış görünüyoruz:
- Fonksiyonel Programlama Kullanmayın
- Verilere, çok sayıda SQL veya SQL benzeri kodu manuel olarak yazmayı içeren sinir bozucu, soyutlanmamış bir şekilde erişin ala Links
- İşlevsel Dilimizi sözde OOP paradigmasına zorlayın, böylece gerçek işlevsel programlamanın zarafetini ve kararlılığını ortadan kaldırın.
Açıkçası, bu seçeneklerden hiçbiri ideal görünmüyor. Bu sorunları aşmanın bir yolunu buldunuz mu? Burada gerçekten bir sorun mu var?
Not: Kişisel olarak en çok FP cephesindeki LISP'e aşinayım, bu nedenle herhangi bir örnek vermek ve birden fazla FP dili bilmek istiyorsanız, lisp muhtemelen tercih edilen dil olacaktır.
Not: Web geliştirmenin diğer yönlerine özgü sorunlar için bu soruya bakın .