Web hizmetleri için Haskell vs Erlang


30

Fonksiyonel bir dil kullanarak deneysel bir projeye başlamak istiyorum ve Erlang ve Haskell arasındaki karar vermeye çalışıyorum ve her ikisinin de gerçekten sevdiğim bazı noktaları var.

Haskell'in güçlü tip sistemini ve saflığını seviyorum. Gerçekten güvenilir kod yazmayı kolaylaştıracağına dair bir his var. Ve Haskell'in gücünün, yapmak istediklerimin bir kısmını daha kolaylaştıracağını düşünüyorum.

Eksi tarafında, Yesod gibi Haskell'de web işleri yapmak için bazı Çerçevelerin Erlang tezgah parçaları kadar gelişmiş olmadığı hissine kapılıyorum.

Erlang'ın dişlilere ve hata toleransına yaklaşımını seviyorum. Erlang'ın ölçeklenebilirliğinin büyük bir artı olabileceğini hissediyorum.

Bu benim soruma yol açıyor, insanların Haskell ve Erlang'daki web uygulamalarını uygulamada deneyimlerinin neler olduğu. Haskell'in Erlang'da sahip olduğu bazı hafif iplikleri ve oyuncuları sağlayacak paketler var mı?


4
Gereksinimleri belirtmezseniz, söylemesi imkansızdır. Sadece bir bozuk para ya da onun gibi bir şey atmak.
Vitor Py

1
Bu sonuca dair bir kanıtım yok, ancak Facebook'un Erlang'ı kullanması bana bunun hem güçlü hem de güvenilir olduğunu gösteriyor.
Matthew

1
@Matthew: Facebook, muhtemelen büyük ölçüde paralel nitelikleri için, sohbet sistemi için Erlang'ı kullanıyor.
Robert Harvey,

3
Yessss, kullanmak Lisssssssp .
Mark C

8
Eski bir Commodore 64 dergisinde sahte dillerle ilgili bir makaleleri vardı. En iyisi, 's' karakterinin hariç tutulması dışında, tam olarak lisp'a benzeyen "Lithp" idi. Bu, tüm 'lithp' geliştiricilerini 's' yerine 'th' yerine zorladı. :)
Berin Loritsch 15:11

Yanıtlar:


17

Sahip olduğum tek soru web servisiniz ne yapıyor? Eğer web servisi gerçekten işlevsel bir problemse, Haskell daha uygun olacaktır.

Erlang mutlaka işlevsel bir dil değildir. Kitlesel paralel sistemler için çok güçlü bir yürütme modeline sahip bir prosedür dilidir. Telekom sektörü için tasarlandı ve kesinlikle web servis taleplerine cevap vermek için mükemmel bir seçim olacaktı.

Prosedürel ve fonksiyonel programlama arasındaki farklara genel bir bakış için bu sayfaya * bakınız . (Camgöbeği sayfasındaki çirkin siyah için şimdiden özür dilerim).

Eğer web servisiniz kurallara uygun miktarda kalıp eşleştiriyorsa ve kurallar uyguluyorsanız, Haskel sizin tercihinizdir. Muhtemelen zaten bildiğiniz dillerden çok farklı olmayan ölçeklenebilir bir altyapı istiyorsanız, Erlang'ı seçin.

(* Wayback makine üzerinden bağlantı. Orijinal dosya kaldırıldı)


Sosyal ağa çok benzeyen bir şey olacak. Bu noktada, haskell'de% 90 şansı olacak.
Zachary K

12
Erlang işlevsel bir dildir, yordamsal bir dil değildir. Desen eşleştirme için harika bir desteğe sahiptir ve ağ hizmetleri yaparken çok yararlı olan bit başına benzersiz desen eşleştirmedir.
Jonas

@Berin her zaman olduğu gibi dış bağlantılarla ilgili bir sorun, artık öldü.
thecoshman

@ thecoshman, Ekolojilerim ... 3 yıl sonra, sayfada eskiden olanların içeriğini bile hatırlayamıyorum.
Berin Loritsch

Endişelenmeyin: D ¬_¬ bir daha asla olmasına izin vermeyin. (insanlar çıldırmadan önce şaka yapıyorum)
thecoshman

11

Bahsettiğiniz ikisi arasında kesinlikle Haskell akademik, Erlang gerçek hayattaki yüksek ölçeklenebilirlik projelerinde kullanılıyor. Böylece web servisleri için ikisi Erlang'ı seçerdim.

Ancak üçüncü seçeneğiniz olduğunu söyleyebilirim: Hem Haskell hem de Erlang tarafından yoğun olarak etkilenen bir dil olan Scala . Twitter veya Foursquare gibi birinci sınıf web servisleri oluşturmak için kullanılır. Rails ve Django'dan esinlenilmiş bir web çerçevesi olan Lift bile var , ancak biraz daha farklı, daha işlevsel bir yaklaşım olsa da. Foursquare Lift kullanıyor.


2
Son cümle hariç, cevabınızı kabul edin. Asansör Rails'ten çok farklı. Raylar modüler, Kaldırma monolitiktir. Raylar bir MVC çerçevesidir, Kaldırma değildir. Raylar nesne yönelimli, Asansör daha işlevsel.
dbyrne

@ dbyrne: tamam, düzenlenmiş
vartec

3
Scala'nın web servisleri için problemi, en popüler Java uygulama sunucularının Erlang ve Haskell'de yazılmış sunuculara kıyasla gerçekten kötü ölçeklendirmesidir.
Jonas

1
@Jonas: örneğin vert.x vertx.io var
vartec 12

Lift artık Scala için fiili bir çerçeve değil. Şimdi tamamen MVC ve vatansız olan Play . Cevabı kabul ediyorum. Scala, gerçek dünya için daha iyi bir seçimdir. Scala geliştiricileri edinmek için Erlang ve Haskell'den daha kolaydır.
Jus 12

7

Genellikle derim ki: "rahatınızdaki bölgeden mümkün olduğu kadar çok şey öğrenin, pratikte hiç kullanmasanız bile sizi daha iyi bir programcı yapar".

Bu durumda, bu muhtemelen Haskell anlamına gelebilir; ancak Erlang yalnızca haline gelmiyor neredeyse sosyal açıdan kabul edilebilir; fakat asıl noktalar (ışık süreçleri, mesaj geçme, büyük ölçeklenebilirlik) diğer birçok 'pratik' platformda geliyor, bu nedenle alınan dersler daha 'gerçek' çalışmalarda büyük ve acil uygulanabilirliğe sahip.

tavsiyem: eğer eğlence içinse, Haskell yap. eğer eğitim içinse Erlang'a git.


bir iş türü projesi için. Muhtemelen Erlang olacağını düşünüyorum ama haskell yapabilir.
Zachary K
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.