Son zamanlarda akka'ya bakıyorum ve oldukça etkileyici. Görünüşe göre erlang'ın katil özelliklerinin çoğuna sahip - konum şeffaflığı, denetim hiyerarşileri ve daha fazlası. Erlang'da akka'nın sahip olmadığı özellikler var mı?
Son zamanlarda akka'ya bakıyorum ve oldukça etkileyici. Görünüşe göre erlang'ın katil özelliklerinin çoğuna sahip - konum şeffaflığı, denetim hiyerarşileri ve daha fazlası. Erlang'da akka'nın sahip olmadığı özellikler var mı?
Yanıtlar:
Sorumluluk reddi: Ben Akka'nın PO'suyum
Bunlar kafamın tepesinden olanlar.
Öte yandan Akka'yı kullanmak, uygulamalarınızı yazmak için Scala, Java, Groovy veya JRuby'yi kullanabileceğiniz anlamına gelir.
Erlang'da proseslerin yaklaşık olarak her 1000 indirgemede değiştirilmesi garanti edilmektedir. Scala / Akka ajanı gibi saf bir çerçevede alımda işi bitirene kadar bir zamanlayıcıya sahiptir. Şah Mat. Oyun bitti. Hasta la vista :) İnsanlar, sözde teknisyenler ile zamanınızı boşa harcamayın. Buradaki adamların Scala'yı Erlang ile karşılaştırması beni şok etti.
Ayrıca "öldürücü özellikler" denen başka pek çok özellik var, ama burada tavsiyem, özellikler açısından düşünmeyin, belirli bir dili etkinleştiren deyimleri düşünün. Scala "en iyi özellikleri" çalıyor, Erlang, doğru deyimlerle çalışan yüksek seviyeli bir dil ile sistemleri güvenilir bir şekilde kurmanız için doğru deyimlerle size olanak sağlıyor / uyguluyor. Erlang'ı öğrendiğinizde, zihninizi yeniden inşa ediyorsunuz, dağıtılmış güvenilir sistem hakkındaki düşünme tarzınızı, Erlang size öğretir ve sizi yükseltir. Scala, diğer dillerden iyi özellikleri çalmaya çalışan bir başka zorunlu dildir (pardon, çok yönlü, komik kelime).
Neredeyse hiç kimse süreç izolasyonundan bahsetmiyor. "İş parçacığınız benim önemsiz şeyimle uğraşamaz" garantileri olmadan, dağıtılmış sistemler hakkında mantık yürütmek çok daha zordur. (Zaten yeterince zor olduğunu ile Erlang'ı süreçler.)
AFAIK (çok uzak değil, JVM ile sınırlı doğrudan deneyimlerime göre), sadece Erlang JVM'de süreç izolasyonunu "doğru" alıyor. Sayın Google, Fox ve Candea'nın (?) "Mikro yeniden başlatma" tekniği ("kurtarma odaklı bilgi işlem") kullanan araştırma sistemleri hakkında yaptığı araştırmaları nerede bulacağına dair bazı ipuçları verebilir. Bir Erlang geliştiricisi bu araştırmayı okur ve birkaç şey söyler:
Benim için, kesinti olmadan tüm bir Erlang kümesinde sıcak kod değişimi (örneğin make:all([netload]
:) Erlang öldürücü özelliklerinden biridir.
Ama sorunuzu tersine çevirelim: akka'da Erlang'da olmayan ne var? Elbette Erlang'a yaklaşmak için Java'ya onlarca uzantı ve kitaplık (scala, akka, spring, osgi, ...) ekleyebilirsiniz. Ama mesele nerede? Özetle, tüm bu uzantılar, sıfır kesinti süresiyle en iyi ölçeklenebilirliği sunan işi 2 yıldan fazla bir süredir kanıtlamış olan basit Erlang dilini öğrenmekten çok daha karmaşıktır.