Haskell vs Erlang สำหรับบริการบนเว็บ


30

ฉันกำลังมองหาที่จะเริ่มต้นโครงการทดลองโดยใช้ภาษาที่ใช้งานได้และพยายามที่จะตัดสินใจว่า Erlang และ Haskell เป็นคนบ้าและทั้งสองมีบางประเด็นที่ฉันชอบ

ฉันชอบระบบที่แข็งแกร่งและความบริสุทธิ์ของ Haskell ฉันรู้สึกว่ามันจะง่ายต่อการเขียนรหัสที่เชื่อถือได้จริงๆ และฉันคิดว่าพลังของ Haskell จะทำให้บางสิ่งที่ฉันต้องการทำได้ง่ายขึ้นมาก

ในด้านลบฉันได้รับความรู้สึกว่าบางส่วนของ Frameworks สำหรับการทำสิ่งต่างๆบนเว็บใน Haskell เช่น Yesod นั้นไม่ได้ก้าวหน้าไปกว่าชิ้นส่วน Erlang ของพวกเขา

ฉันชอบวิธีการของ Erlang สำหรับเธรดและการยอมรับข้อผิดพลาด ฉันรู้สึกว่า scalability ของ Erlang อาจเป็นข้อดีหลัก ๆ ได้

ซึ่งนำไปสู่คำถามของฉันสิ่งที่ผู้คนได้รับจากการใช้แบ็กเอนด์เว็บแอปพลิเคชันใน Haskell และ Erlang มีแพ็คเกจสำหรับ Haskell เพื่อจัดหาเธรดและนักแสดงบางส่วนที่มีอยู่ใน Erlang หรือไม่?


4
หากคุณไม่ได้ระบุข้อกำหนดมันเป็นไปไม่ได้ที่จะบอก เพียงแค่โยนเหรียญหรืออะไรทำนองนั้น
Vitor Py

1
ฉันไม่ได้พิสูจน์ข้อสรุปนี้ แต่การใช้ Erlang ของ Facebook บ่งบอกว่ามันมีประสิทธิภาพและเชื่อถือได้
Matthew อ่าน

1
@ Matthew: Facebook ใช้ Erlang สำหรับระบบแชทซึ่งสันนิษฐานว่ามีคุณภาพขนานกันอย่างหนาแน่น
Robert Harvey

3
yessss ใช้Lisssssssp
Mark C

8
ในนิตยสาร Commodore 64 ฉบับเก่าพวกเขามีบทความเกี่ยวกับภาษาปลอม หนึ่งที่ดีที่สุดคือ "Lithp" ซึ่งเป็นเหมือนเสียงกระเพื่อมยกเว้นว่าตัวละครของ 'ได้รับการยกเว้น นั่นทำให้นักพัฒนา 'lithp' ทั้งหมดเปลี่ยน 'th' แทน 's' :)
Berin Loritsch

คำตอบ:


17

คำถามเดียวที่ฉันมีคือบริการเว็บของคุณกำลังทำอะไรอยู่? หากบริการบนเว็บเป็นปัญหาการทำงานอย่างแท้จริง Haskell จะเหมาะสมกว่า

Erlang ไม่จำเป็นต้องเป็นภาษาที่ใช้งานได้ มันเป็นภาษาเชิงปฏิบัติที่มีรูปแบบการดำเนินการที่แข็งแกร่งมากสำหรับระบบขนานขนาดใหญ่ มันถูกออกแบบมาสำหรับอุตสาหกรรมโทรคมนาคมและแน่นอนว่าจะเหมาะอย่างยิ่งสำหรับการตอบสนองต่อคำขอบริการเว็บ

ดูหน้านี้ * สำหรับภาพรวมของความแตกต่างระหว่างขั้นตอนการเขียนโปรแกรมและการทำงาน (ขออภัยล่วงหน้าสำหรับคนผิวดำที่น่าเกลียดในหน้าสีฟ้า)

หากบริการเว็บของคุณทำการจับคู่รูปแบบและกฎการใช้จำนวนที่เหมาะสม Haskel คือทางเลือกของคุณ หากคุณต้องการโครงสร้างพื้นฐานที่ปรับขนาดได้ซึ่งไม่แตกต่างจากภาษาที่คุณอาจเคยรู้จักเลือก Erlang

(ลิงค์ * ผ่านเครื่อง Wayback ลบไฟล์ต้นฉบับ)


มันจะเป็นสิ่งที่ดูเหมือนกับเครือข่ายโซเชียล ณ จุดนี้มีโอกาส 90% ที่จะทำในฮาเซล
Zachary K

12
Erlangเป็นภาษาที่ใช้งานได้ไม่ใช่ภาษาที่ใช้ในกระบวนการ มีการสนับสนุนที่ดีสำหรับการจับคู่รูปแบบและการจับคู่รูปแบบที่ไม่ซ้ำกันต่อบิตซึ่งมีประโยชน์มากเมื่อใช้บริการเครือข่าย
Jonas

@Berin เป็นปัญหาเสมอกับลิงก์ภายนอกตอนนี้มันตายแล้ว
thecoshman

@thecoshman แอปของฉัน ... หลังจาก 3 ปีฉันไม่สามารถจำเนื้อหาของสิ่งที่เคยเป็นในหน้า
Berin Loritsch

ไม่ต้องกังวลเลย: D ¬_¬ไม่เคยปล่อยให้มันเกิดขึ้นอีก (ก่อนที่ผู้คนจะประหลาดใจฉันกำลังล้อเล่น)
thecoshman

11

ระหว่างสองคุณพูดถึงแน่นอน Haskell เป็นนักวิชาการในขณะที่ Erlang ใช้ในโครงการที่มีความยืดหยุ่นสูงในชีวิตจริง ดังนั้นทั้งสองสำหรับบริการเว็บฉันเลือก Erlang

แต่ฉันจะบอกว่าคุณมีตัวเลือกที่สาม: Scalaภาษาที่ได้รับอิทธิพลอย่างมากจากทั้ง Haskell และ Erlang มันถูกใช้เพื่อสร้างบริการบนเว็บที่ยอดเยี่ยมเช่น Twitter หรือ Foursquare มีแม้กระทั่งLiftกรอบเว็บที่ได้รับแรงบันดาลใจจาก Rails และ Django แม้ว่าจะมีวิธีที่แตกต่างและใช้งานได้มากกว่า Foursquare ใช้งานลิฟต์


2
เห็นด้วยกับคำตอบของคุณยกเว้นประโยคสุดท้าย การยกนั้นแตกต่างจากรางอย่างมาก Rails เป็นแบบแยกส่วน Lift เป็นเสาหิน Rails เป็นเฟรมเวิร์ก MVC แต่ Lift ไม่ใช่ รางเป็นวัตถุเชิงยกมีฟังก์ชั่นมากขึ้น
dbyrne

@dbyrne: ok แก้ไข
vartec

3
ปัญหาของ Scala สำหรับบริการบนเว็บคือเซิร์ฟเวอร์แอปพลิเคชัน Java ที่ได้รับความนิยมมากที่สุดนั้นแย่มากเมื่อเทียบกับเซิร์ฟเวอร์ที่เขียนใน Erlang และ Haskell
Jonas

1
@Jonas: มีตัวอย่าง vert.x vertx.io
vartec

การยกไม่มีกรอบ de-facto สำหรับ Scala อีกต่อไป ตอนนี้คือPlayซึ่งเป็น MVC เต็มรูปแบบและไร้สัญชาติ ฉันเห็นด้วยกับคำตอบ สกาล่าเป็นตัวเลือกที่ดีกว่าสำหรับโลกแห่งความจริง ง่ายกว่าที่จะได้รับนักพัฒนาสกาล่ากว่า Erlang และ Haskell
Jus12

7

ฉันมักจะพูดว่า: "เรียนรู้สิ่งต่าง ๆ เท่าที่จะเป็นไปได้จากความสะดวกสบายของคุณมันจะทำให้คุณเป็นโปรแกรมเมอร์ที่ดีขึ้นแม้ว่าคุณจะไม่เคยใช้มันในทางปฏิบัติ"

ในกรณีนี้นั่นอาจหมายถึง Haskell แต่ Erlang ไม่ได้เป็นเพียงกลายเป็นเกือบที่ยอมรับของสังคม; แต่ประเด็นหลัก (กระบวนการเล็ก ๆ น้อย ๆ การส่งข้อความความสามารถในการปรับขยายขนาดใหญ่) กำลังมาในแพลตฟอร์ม 'ปฏิบัติ' อื่น ๆ อีกมากมายดังนั้นบทเรียนที่ได้เรียนรู้จะมีการใช้งานที่ใหญ่และรวดเร็วในการทำงานจริงมากขึ้น

คำแนะนำของฉัน: ถ้ามันเพื่อความสนุกทำ Haskell หากเป็นการฝึกอบรมให้ไปที่ Erlang


มันสำหรับโครงการประเภทงาน ฉันคิดว่ามันอาจจะเป็น Erlang แต่ฉันอาจทำกลอนได้
Zachary K
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.