Bir süredir işlevsel programlama dillerinin ve özelliklerinin artan görünürlüğünü izliyorum. Onlara baktım ve itirazın nedenini görmedim.
Daha sonra yakın zamanda Codemash'ta Kevin Smith'in " Erlang'ın Temelleri" sunumuna katıldım .
Sunumdan keyif aldım ve işlevsel programlamanın birçok özelliğinin iş parçacığı / eşzamanlılık sorunlarından kaçınmayı çok daha kolaylaştırdığını öğrendim. Durum ve değişkenlik eksikliğinin birden fazla iş parçacığının aynı verileri değiştirmesini imkansız hale getirdiğini anlıyorum, ancak Kevin dedi (doğru anladıysam) tüm iletişim mesajlar aracılığıyla gerçekleşir ve mesajlar eşzamanlı olarak işlenir (yine eşzamanlılık sorunlarından kaçınarak).
Ancak Erlang'ın oldukça ölçeklenebilir uygulamalarda kullanıldığını okudum (Ericsson'un onu ilk başta yaratmasının nedeni). Her şey eşzamanlı olarak işlenmiş bir mesaj olarak işlenirse, saniyede binlerce isteği işlemek nasıl verimli olabilir? Eşzamansız işlemeye doğru ilerlememizin nedeni bu değil mi - böylece aynı anda birden fazla işlem parçacığı çalıştırmanın avantajlarından yararlanıp ölçeklenebilirlik elde edebilir miyiz? Görünüşe göre bu mimari, daha güvenli olmakla birlikte, ölçeklenebilirlik açısından geriye doğru bir adımdır. Neyi kaçırıyorum?
Erlang'ın yaratıcılarının eşzamanlılık sorunlarını önlemek için kasıtlı olarak iş parçacığı oluşturmayı desteklemekten kaçındığını anlıyorum, ancak ölçeklenebilirliği sağlamak için çoklu iş parçacığı oluşturmanın gerekli olduğunu düşündüm.
İşlevsel programlama dilleri, doğası gereği iş parçacığı açısından güvenli, ancak yine de ölçeklenebilir mi?