Haskell vs Erlang untuk layanan web

30

Saya ingin memulai proyek eksperimental menggunakan bahasa fungsional dan saya mencoba untuk memutuskan antara Erlang dan Haskell, dan keduanya memiliki beberapa poin yang sangat saya sukai.

Saya suka sistem dan kemurnian tipe Haskell yang kuat. Saya merasa itu akan membuatnya lebih mudah untuk menulis kode yang benar-benar andal. Dan saya pikir kekuatan Haskell akan membuat beberapa hal yang ingin saya lakukan menjadi lebih mudah.

Di sisi minus saya merasa bahwa beberapa Kerangka untuk melakukan hal-hal web di Haskell seperti Yesod tidak semaju suku cadang Erlang mereka.

Saya lebih suka pendekatan Erlang untuk thread dan toleransi kesalahan. Saya merasa bahwa skalabilitas Erlang bisa menjadi nilai tambah utama.

Yang mengarah ke pertanyaan saya, apa pengalaman orang dalam menerapkan aplikasi web backend di Haskell dan Erlang. Apakah ada paket untuk Haskell untuk menyediakan beberapa utas dan aktor ringan yang dimiliki seseorang di Erlang?

Zachary K
sumber
4
Jika Anda tidak menentukan persyaratan, tidak mungkin untuk mengatakannya. Hanya melempar koin atau sesuatu seperti itu.
Vitor Py
1
Saya tidak punya bukti kesimpulan ini, tetapi penggunaan Erlang di Facebook menunjukkan kepada saya bahwa itu kuat dan dapat diandalkan.
Matius Baca
1
@Matthew: Facebook menggunakan Erlang untuk sistem obrolannya, mungkin karena kualitas paralelnya yang besar.
Robert Harvey
3
Yessss, gunakan Lisssssssp .
Mark C
8
Di majalah Commodore 64 yang lama, mereka memiliki artikel tentang bahasa palsu. Yang terbaik adalah "Lithp", yang persis seperti lisp, kecuali bahwa karakter 's' dikecualikan. Itu memaksa semua pengembang 'lithp' untuk menggantikan 'th' untuk 's'. :)
Berin Loritsch

Jawaban:

17

Satu-satunya pertanyaan yang saya miliki adalah apa yang dilakukan layanan web Anda? Jika layanan web benar-benar masalah fungsional, maka Haskell akan lebih cocok.

Erlang belum tentu merupakan bahasa fungsional. Ini adalah bahasa prosedural dengan model eksekusi yang sangat kuat untuk sistem paralel masif. Itu dirancang untuk industri telekomunikasi, dan itu pasti akan sangat cocok untuk menanggapi permintaan layanan web.

Lihat halaman ini * untuk ikhtisar perbedaan antara pemrograman prosedural dan fungsional. (Permintaan maaf sebelumnya untuk hitam jelek di halaman cyan).

Jika layanan web Anda melakukan cukup banyak pola yang cocok dan menerapkan aturan, maka Haskel adalah pilihan Anda. Jika Anda hanya ingin infrastruktur terukur yang tidak terlalu berbeda dari bahasa yang Anda mungkin sudah tahu, pilih Erlang.

(* tautan melalui mesin Wayback. File asli telah dihapus)

Berin Loritsch
sumber
Ini akan menjadi sesuatu yang sangat mirip jejaring sosial. Pada titik ini ada kemungkinan 90% akan dilakukan di haskell.
Zachary K
12
Erlang adalah bahasa fungsional, bukan bahasa prosedural. Ini memiliki dukungan besar untuk pencocokan pola dan pencocokan pola unik per bit yang sangat membantu ketika melakukan layanan jaringan.
Jonas
@Berin seperti selalu masalah dengan tautan eksternal, sekarang sudah mati.
thecoshman
@thecoshman, Appologies saya ... Setelah 3 tahun saya bahkan tidak bisa mengingat isi dari apa yang dulu ada di halaman.
Berin Loritsch
Jangan khawatir sama sekali: D ¬ hanya tidak pernah membiarkan hal itu terjadi lagi. (sebelum orang-orang ketakutan, saya bercanda)
thecoshman
11

Di antara keduanya yang Anda sebutkan, pasti Haskell adalah akademis, sementara Erlang digunakan dalam proyek skalabilitas tinggi kehidupan nyata. Jadi dari dua untuk layanan web saya akan memilih Erlang.

Tapi saya katakan Anda memiliki pilihan ketiga: Scala , sebuah bahasa yang sangat dipengaruhi oleh Haskell dan Erlang. Ini digunakan untuk membangun layanan web terbaik seperti Twitter atau Foursquare. Bahkan ada Lift , kerangka kerja web yang terinspirasi oleh Rails dan Django, meskipun dengan sedikit berbeda, pendekatan yang lebih fungsional. Foursquare menggunakan Lift.

vartec
sumber
2
Setuju dengan jawaban Anda, kecuali untuk kalimat terakhir. Lift sangat berbeda dari Rails. Rail bersifat modular, Lift bersifat monolitik. Rails adalah kerangka kerja MVC, Lift tidak. Rails berorientasi objek, Lift lebih fungsional.
dbyrne
@dbyrne: ok, diedit
vartec
3
Masalah dengan Scala untuk layanan web adalah bahwa server aplikasi Java yang paling populer benar-benar buruk dibandingkan dengan server yang ditulis dalam bahasa Erlang dan Haskell.
Jonas
1
@Jonas: ada misalnya vert.x vertx.io
vartec
Angkat bukan lagi kerangka kerja de-facto untuk Scala. Sekarang Play , yang sepenuhnya MVC dan stateless. Saya setuju dengan jawabannya. Scala adalah pilihan yang lebih baik untuk dunia nyata. Lebih mudah mendapatkan pengembang Scala daripada Erlang dan Haskell.
Jus12
7

Biasanya saya katakan: "pelajari hal-hal sejauh mungkin dari zona nyaman Anda, itu akan membuat Anda menjadi programmer yang lebih baik bahkan jika Anda tidak pernah menggunakannya dalam praktik".

Dalam hal ini, itu mungkin bisa berarti Haskell; tetapi Erlang tidak hanya menjadi hampir dapat diterima secara sosial; tetapi poin utama (proses yang ringan, pengiriman pesan, skalabilitas yang sangat besar) datang pada banyak platform 'praktis' lainnya, sehingga pelajaran yang dipetik memiliki penerapan yang besar dan langsung pada pekerjaan yang lebih 'nyata'.

saran saya: jika itu untuk bersenang-senang, lakukan Haskell. jika itu untuk pelatihan, pergi Erlang.

Javier
sumber
untuk proyek jenis pekerjaan. Saya pikir itu mungkin Erlang tapi saya bisa melakukan haskell.
Zachary K