ฉันเฝ้าดูการมองเห็นที่เพิ่มขึ้นของภาษาการเขียนโปรแกรมที่ใช้งานได้และคุณสมบัติมาระยะหนึ่งแล้ว ฉันตรวจสอบพวกเขาและไม่เห็นเหตุผลของการอุทธรณ์
จากนั้นเมื่อเร็ว ๆ นี้ผมได้เข้าร่วมเควินสมิ ธ "พื้นฐานของ Erlang" นำเสนอต่อที่Codemash
ฉันสนุกกับการนำเสนอและได้เรียนรู้ว่าคุณลักษณะมากมายของการเขียนโปรแกรมเชิงฟังก์ชันช่วยให้หลีกเลี่ยงปัญหาเธรด / การทำงานพร้อมกันได้ง่ายขึ้นมาก ฉันเข้าใจว่าการขาดสถานะและความไม่แน่นอนทำให้หลายเธรดเปลี่ยนแปลงข้อมูลเดียวกันไม่ได้ แต่เควินกล่าวว่า (ถ้าฉันเข้าใจถูกต้อง) การสื่อสารทั้งหมดเกิดขึ้นผ่านข้อความและข้อความจะถูกประมวลผลพร้อมกัน (อีกครั้งเพื่อหลีกเลี่ยงปัญหาการเกิดพร้อมกัน)
แต่ฉันได้อ่านพบว่า Erlang ใช้ในแอปพลิเคชันที่ปรับขนาดได้สูง (เหตุผลทั้งหมดที่ Ericsson สร้างขึ้นตั้งแต่แรก) จะมีประสิทธิภาพในการจัดการคำขอหลายพันรายการต่อวินาทีได้อย่างไรหากจัดการทุกอย่างเป็นข้อความที่ประมวลผลแบบซิงโครนัส นั่นไม่ใช่เหตุผลที่เราเริ่มก้าวไปสู่การประมวลผลแบบอะซิงโครนัสดังนั้นเราจึงสามารถใช้ประโยชน์จากการรันเธรดการดำเนินการหลายชุดพร้อมกันและบรรลุความสามารถในการปรับขนาด ดูเหมือนว่าสถาปัตยกรรมนี้จะปลอดภัยกว่า แต่เป็นการถอยหลังในแง่ของความสามารถในการปรับขนาดได้ ฉันขาดอะไรไป?
ฉันเข้าใจว่าผู้สร้าง Erlang ตั้งใจที่จะหลีกเลี่ยงการสนับสนุนเธรดเพื่อหลีกเลี่ยงปัญหาการทำงานพร้อมกัน แต่ฉันคิดว่าการทำงานแบบมัลติเธรดเป็นสิ่งที่จำเป็นเพื่อให้สามารถปรับขนาดได้
ภาษาโปรแกรมที่ใช้งานได้จะปลอดภัยต่อเธรดโดยเนื้อแท้ได้อย่างไร แต่ก็ยังคงปรับขนาดได้