เอิร์ลแลง(Erlang) ตอนที่ 1

posted on 02 Dec 2009 15:11 by roofimon in Erlang

ไม่ได้เขียน blog ที่นี่นานมากอยากเขียนเรื่องเอิร์ลแลงเก็บไว้อ่านเองไม่รู้จะไปเขียนที่ไหนก็เลยนึกถึงที่นี่ก่อน แต่!!!ไม่ได้เข้ามานาน แน่นอนลืมรหัสผ่านพยายามมั่วอยู่หนึ่งคืนก็ทนไม่ได้ ต้องกดสูตรลับ ผมก็ได้รหัสใหม่มาภายในสิบนาที

 ทำไมต้องเอิร์ลแลง(Erlang)ภาษาอื่นก็มีตั้งมากมายล้านแปดที่จะให้ไปอ่านเล่นไม่ว่าจะเป็น สกาล่า(Scala), รูบี้(Ruby), ไพธอน(Python) และอื่นๆอีกมากมายแต่สำหรับผมแล้วมีเหตุผลอยู่สองข้อ

 

  • ภาษานั้นต้องไม่ทำงานบนเจวีเอ็ม เพราะผมเบื่อมันมากกกกกก
  • ภาษานั้นต้องไปเป็นการเขียนโปรแกรมแบบเชิงวัตถุ(Object Oriented) เพราะอยากเปลี่ยนวิธีคิดบ้าง 

 

ดังนั้นหวยเลยออกที่เอิร์ลแลง ก่อนอื่นเรามาทำความรู้จักกับภาษาก่อนว่ามันคืออะไร

1.1 เอิร์ลแลงในเปลือกนัท

เอิร์แลงเองเป็นทั้งแพลทฟอร์มและเป็นภาษาสำหรับการใช้งานทั่วไป โดยที่ตัวมันเองถูกออกแบบมาให้สามารถรองรับการทำงานหลายๆงานพร้อมกัน(Concurrent), กระจายการทำงาน(Distribution) และทนต่อความผิดพลาด(Fault Tolerance)ดังนั้นเราจะเห็นการนำเอาภาษานี้ไปใช้งานในโดเมนของระบบการสื่อสารเยอะมากเช่นบริษัทอิริกสัน(Ericsson)เป็นบริษัทที่ใช้งานภาษาเอิร์ลแลงสำหรับการสร้างระบบสื่อสารขนาดใหญ่ของตัวเองเยอะมาก
 

1.2 อะไรคือโอทีพี(OTP)

โอทีพีเป็นคำย่อของมาตรฐานเทเลคอมแบบเปิด(Open Telecom Platform)  ตัวมันเองเป็นไลบารี่ขนาดใหญ่ที่ช่วยให้เราสามาถทำได้ตั้งแต่การคอมไพล์ Abstract Syntax Notation One (ASN.1) ไปจนถึงการเตรียมเวบเซิร์ฟเวอร์ ดังนั้นทุกโปรเจคที่ใช้เอิร์ลแลงส่วนใหญ่จะใช้ เอิร์ลแลง/โอทีพี ไปโดยธรรมชาติแล้วนั่นเอง

1.3 แอพพลิเคชั่นประเภทไหนที่ควรจะใช้เอิร์ลแลง

 

  • การประมวลผลแบบกระจาย, งานที่ต้องการความน่าเชื่อถือสูงมาก และการทำงานแบบซอฟท์เรียวไทม์
  • ระบบทางโทรคมเช่นการควบคุมสวิช, การแปลงโปรโตคอล
  • เซิร์ฟเวอร์สำหรับอินเทอร์เน็ทแอพพลิเคชั่น ยกตัวอย่างเช่น เอเจนท์สำหรับส่งเมล์ เซิร์ฟเวอร์ IMAP-4,HTTP เซิร์ฟเวอร์หรือ WAP สแต็ค.
  • แอพพลิเคชั่นของระบบโทรคม เช่น การควบคุมระบบเน็ทเวิร์คสำหรับโทรศัพท์เคลื่อที่ 
  • แอพพลิเคชั่นทั่วไปที่ต้องการความสามารถระดับซอฟท์เรียวไทม์

 

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

 

  • เอิร์ลแลงเตรียมกระบวนการการจัดการที่เรียบง่ายและทรงพลังสำหรับการจัดการเออร์เรอร์และข้อผิดพลาดต่างๆ 
  • การทำงานในเวลาเดียวกันและการส่งเมสเสจเป็นความสามารถพื้นฐานของตัวภาษาเอง ดังนั้นแอพพลิเคชั่นที่ถูกเขียนด้วยเอิร์ลแลงเองมักจะแตกโพรเซสขนาดเล็กออกมาเป็นจำนวนนับร้อยเพื่อทำงานอะไรบางอย่างให้สำเร็จและกระบวนการสลับลำดับของแมกนิจูดของโพเซสขึ้นไปหนึ่งหรือสองลำดับในเอิร์ลแลงนั้นไม่ได้เป็นเรื่องยากอย่างที่เราต้องทำกันในภาษาซี
  • การเขียนแอพพลิเคชั่นให้มีการประมวลผลกระจายไปหลายๆเครื่องสามารถทำได้อย่างง่ายดาย เพราะกระบวนการการะจายงานอันซับซ้อนนั้นถูกซ่อนไว้อย่างแนบเนียนในเอิร์ลแลง โดยที่โปรแกรมของเราไม่จำเป็นต้องรู้ตัวเองว่ามันกำลังประมวลผลแบบกระจายอยู่
  • โอทีพีไลบรารี่เองช่วยเราแก้ปัญหาพื้นฐานต่างๆในการทำงานบนระบบเน็ทเวิร์คและระบบโทรคมไว้แล้ว 

 

เอิร์ลแลงมีตัวรันไทม์เอ็นไวรอนเมนท์ของเอิร์ลแลง(เหมือนกับเวอร์ชวลแมชีนของจาวา)  นั่นหมายความว่าโค้ดเอิร์ลแลงของเราสามารถถูกนำไปรันได้ทุกๆที่ที่มีตัวรันไทม์อยู่ 

 

1.4 ใครใช้งานเอิร์ลแลงอยู่บ้าง

คนที่ใช้งานเอิร์ลแลงมากที่สุดก็คืออิริกสัน โดยระบบที่ใหญ่ที่สุดของอิริคสันที่ใช้เอิร์ลแลงคือ AXD301 ATM Switch โดยปริมาณที่โค้ดของเอิร์ลแลงที่ใช้สำหรับโปรเจคนี้คือ 850 kloc และ 1Mloc ของ C/C++

บริษัทอื่นๆที่ใช้งานเอิร์ลแลง

 

  • Bluetail/Alteon/Nortel (distributed, fault tolerant email system, SSL accelerator) 
  • Cellpoint (Location-based Mobile Services) 
  • Corelatus (SS7 monitoring). 
  • dqdp.net (in Latvian) (Web Services). 
  • Facebook (Facebook chat backend) 
  • Finnish Meteorological Institute (Data acquisition and real-time monitoring) 
  • IDT corp. (Real-time least-cost routing expert systems) 
  • Kreditor (Electronic payment systems) 
  • Mobilearts (GSM and UMTS services) 
  • Netkit Solutions (Network Equipment Monitoring and Operations Support Systems) 
  • Process-one (Jabber Messaging) 
  • Schlund + Partner (Messaging and Interactive Voice Response services) 
  • Quviq (Software Test Tool) 
  • RabbitMQ (AMQP Enterprise Messaging) 
  • T-Mobile (previously one2one) (advanced call control services) 
  • Telia (a telecomms operator) 
  • Vail Systems (Interactive Voice Response systems) 
  • Wavenet (SS7 and IVR applications) 

 

 

 

 

 

 

Comment

Comment:

Tweet

<a href="http://gjtopdlqdxmfvya.com">vczrxakltaztasr</a> http://ohxmvaaoxgzzzhv.com [url=http://flexpvbjzxoeabj.com]wpgmnvkyfvbasew[/url]

#6 By nlrqzapmuu (94.102.52.87) on 2010-06-14 13:20

เขียนได้เยี่ยมครับ :D

#5 By @b_architect (58.137.159.11) on 2009-12-04 08:36

ขอบคุณครับ...ได้เรียนรู้ภาษาใหม่อีกภาษาครับ.

เพิ่มเติม...ไป คือ ไม่ หรือเปล่าครับ.
ภาษานั้นต้อง--->ไป<---เป็นการเขียนโปรแกรมแบบเชิงวัตถุ(Object Oriented) เพราะอยากเปลี่ยนวิธีคิดบ้าง

#4 By @mnk2551 (58.8.35.36) on 2009-12-03 15:15

รอติดตามอ่านครับ

#3 By somkiat on 2009-12-02 22:31

ชัดเจนครับ ...
ขอเสริมด้วย references เหล่านี้
ชอบสัมภาษณ์นี้ครับ ของ John Hughes (Erlang Factory) โดยเฉพาะคำตอบข้อ 2 .. อิ อิ จี๊ด ๆ > http://www.infoq.com/interviews/Erlang-Haskell-John-Hughes

Erlang at Facebook > http://www.erlang-factory.com/upload/presentations/31/EugeneLetuchy-ErlangatFacebook.pdf

#2 By Prakart (124.121.10.42) on 2009-12-02 21:34

กะทัดรัด ได้ใจความมากครับ

#1 By punneng (119.42.68.6) on 2009-12-02 19:07