ฉันดู akka เมื่อเร็ว ๆ นี้และมันค่อนข้างน่าประทับใจ ดูเหมือนว่ามันมีคุณสมบัติที่น่ากลัวที่สุดของ erlang - ความโปร่งใสของสถานที่ลำดับชั้นการกำกับดูแลและอื่น ๆ มีคุณสมบัติใดบ้างที่ erlang ไม่มีหรือไม่?
ฉันดู akka เมื่อเร็ว ๆ นี้และมันค่อนข้างน่าประทับใจ ดูเหมือนว่ามันมีคุณสมบัติที่น่ากลัวที่สุดของ erlang - ความโปร่งใสของสถานที่ลำดับชั้นการกำกับดูแลและอื่น ๆ มีคุณสมบัติใดบ้างที่ erlang ไม่มีหรือไม่?
คำตอบ:
ข้อจำกัดความรับผิดชอบ: ฉันเป็น PO ของ Akka
นั่นคือคนที่มาจากด้านบนของหัวของฉัน
ในทางกลับกันการใช้ Akka หมายความว่าคุณสามารถใช้ Scala, Java, Groovy หรือ JRuby เพื่อเขียนแอปพลิเคชันของคุณได้
ในกระบวนการ Erlang รับประกันว่าจะมีการสลับการลดลงประมาณ 1,000 ครั้ง ในกรอบงานที่ไร้เดียงสาเช่นตัวแทน Scala / Akka เป็นเจ้าของตัวกำหนดตารางเวลาจนกว่าจะเสร็จสิ้นการทำงานในการรับ รุกฆาต. จบเกม. Hasta la vista :) ผู้คนอย่าเสียเวลากับเทคโนโลยีหลอก ฉันตกใจที่ผู้ชายที่นี่เปรียบเทียบ Scala กับ Erlang
นอกจากนี้ยังมีอื่น ๆ อีกมากมายที่เรียกว่า "คุณลักษณะนักฆ่า" แต่นี่คือคำแนะนำของฉันอย่าคิดในแง่ของคุณสมบัติคิดเกี่ยวกับสำนวนที่เปิดใช้งานภาษาเฉพาะ Scala ขโมย "คุณสมบัติที่ดีที่สุด" Erlang ช่วยให้ / ใช้สำนวนที่ถูกต้องเพื่อสร้างระบบได้อย่างน่าเชื่อถือด้วยภาษาระดับสูงที่ขับเคลื่อนจากสำนวนที่ถูกต้องเหล่านั้น เมื่อคุณเรียนรู้ Erlang คุณกำลังสร้างความคิดของคุณขึ้นมาใหม่วิธีคิดเกี่ยวกับระบบที่เชื่อถือได้แบบกระจาย Erlang จะสอนคุณและอัพเกรดคุณ Scala เป็นอีกหนึ่งภาษาที่มีความจำเป็น (โอ้ขอโทษคำพูดหลายคำตลก) ที่พยายามขโมยคุณลักษณะที่ดีจากภาษาอื่น
แทบไม่มีใครพูดถึงการแยกกระบวนการ หากไม่มีการรับประกันว่า "เธรดของคุณไม่สามารถยุ่งกับขยะของฉันได้" ระบบแบบกระจายจะยากกว่ามาก (พวกมันยากพอกับกระบวนการของ Erlang)
AFAIK (ซึ่งอยู่ไม่ไกลจากประสบการณ์ตรงที่ จำกัด ของฉันกับ JVM) มีเพียง Erlang เท่านั้นที่ได้รับการแยกกระบวนการ "ถูกต้อง" ใน JVM Mr. Google สามารถให้คำแนะนำว่าจะหางานวิจัยของ Fox และ Candea (?) ได้จากที่ใดเกี่ยวกับระบบการวิจัยที่ใช้เทคนิค "ไมโครรีบูต" ("การคำนวณเชิงการกู้คืน") ผู้พัฒนา Erlang อ่านงานวิจัยดังกล่าวและกล่าวว่า:
สำหรับฉันการแลกเปลี่ยนรหัสร้อนในคลัสเตอร์ Erlang ทั้งหมดโดยไม่มีเวลาหยุดทำงาน (ตัวอย่างเช่น :) make:all([netload]
เป็นหนึ่งในคุณสมบัติของ Erlang killer
แต่ลองย้อนกลับคำถามของคุณ: akka มีอะไรที่ Erlang ไม่มี? แน่นอนว่าคุณสามารถเพิ่มส่วนขยายและไลบรารี (scala, akka, spring, osgi, ... ) ลงใน Java ได้หลายสิบรายการเพื่อพยายามเข้าใกล้ Erlang แต่ประเด็นอยู่ตรงไหน? โดยสรุปแล้วส่วนขยายเหล่านี้มีความซับซ้อนมากกว่าการเรียนรู้ภาษา Erlang แบบธรรมดาซึ่งปัจจุบันได้พิสูจน์มานานกว่า 2 ทศวรรษแล้วว่าสามารถทำงานได้โดยมีความสามารถในการปรับขนาดสูงสุดโดยไม่มีเวลาหยุด
อาจเป็นไปได้ว่า Erlang จะดีกว่าสำหรับระบบกระจายขนาดใหญ่ (ตามคำตอบของ vjache) แต่สำหรับเซิร์ฟเวอร์ปกติเมื่อคุณต้องการใช้ซีพียูหลายตัวเต็มประสิทธิภาพ Akka จึงเป็นตัวเลือกที่ดี - ให้นามธรรมประสิทธิภาพและการทำงานร่วมกับระบบนิเวศ Java ที่ดี