ภาษาโปรแกรม Gleam ได้รับความนิยมเพิ่มขึ้นเมื่อนักพัฒนาสำรวจประโยชน์ของ BEAM VM

ทีมชุมชน BigGo
ภาษาโปรแกรม Gleam ได้รับความนิยมเพิ่มขึ้นเมื่อนักพัฒนาสำรวจประโยชน์ของ BEAM VM

ภาษาโปรแกรม Gleam กำลังดึงดูดความสนใจจากนักพัฒนาที่กำลังมองหาทางเลือกแบบ statically-typed สำหรับเครื่องเสมือน BEAM การสนทนาในชุมชนล่าสุดเผยให้เห็นความสนใจที่เพิ่มขึ้นในภาษาฟังก์ชันนัลนี้ที่ผสมผสานไวยากรณ์สมัยใหม่เข้ากับความน่าเชื่อถือที่พิสูจน์แล้วของสภาพแวดล้อมรันไทม์ของ Erlang

เครื่องเสมือน BEAM ให้ประโยชน์ที่เป็นเอกลักษณ์

นักพัฒนาหลายคนในตอนแรกลังเลเกี่ยวกับการพึ่งพา BEAM VM ของ Gleam โดยชอบภาษาที่คอมไพล์เป็นโค้ดดั้งเดิมมากกว่า อย่างไรก็ตาม ชุมชนเน้นย้ำว่า BEAM มีประโยชน์ที่โดดเด่นซึ่งระบบปฏิบัติการไม่สามารถให้ได้ เครื่องเสมือนนี้ช่วยให้สามารถสร้างโปรเซสที่มีน้ำหนักเบาได้ โดยสามารถสร้างโปรเซสพร้อมกันได้หลายล้านโปรเซสโดยไม่มีการลดประสิทธิภาพ โปรเซสแต่ละตัวจะรักษา heap และ garbage collector ของตัวเองไว้ ป้องกันไม่ให้งานใดงานหนึ่งบล็อกทั้งระบบ

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

BEAM: Bogdan/Björn's Erlang Abstract Machine - เครื่องเสมือนที่รันโปรแกรม Erlang, Elixir และ Gleam

คุณสมบัติหลักของ BEAM VM :

  • การสร้างโปรเซสที่มีน้ำหนักเบา (โปรเซสพร้อมกันหลายล้านตัว)
  • แต่ละโปรเซสมี heap และ garbage collector เป็นของตัวเอง
  • การจัดตารางงานแบบยุติธรรมป้องกันการบล็อกโปรเซส
  • การเปลี่ยนโค้ดแบบ hot swap โดยไม่ต้องหยุดระบบ
  • ความทนทานต่อข้อผิดพลาดและการดูแลแบบในตัว

การออกแบบภาษาดึงการเปรียบเทียบกับ Rust และ Scala

ข้อเสนอแนะจากชุมชนแสดงให้เห็นว่า Gleam รู้สึกคล้ายกับ Rust มากกว่าภาษา BEAM อื่นๆ เช่น Elixir ระบบ static type และความสามารถในการ pattern matching สร้างประสบการณ์การพัฒนาที่หลายคนรู้สึกคุ้นเคยหากเคยทำงานกับภาษาโปรแกรมระบบสมัยใหม่ นักพัฒนาบางคนสังเกตเห็นความคล้ายคลึงกับ Scala โดยเฉพาะในวิธีที่ภาษาสร้างสมดุลระหว่างแนวคิดการเขียนโปรแกรมเชิงฟังก์ชันกับไวยากรณ์ที่ใช้งานได้จริง

แนวทางของภาษาในการจัดการข้อผิดพลาดโดยใช้ Result types และคีย์เวิร์ด use ได้รับการชื่นชมในการสร้างโค้ดที่สะอาดและอ่านง่ายขึ้น ตัวเลือกการออกแบบนี้ช่วยให้นักพัฒนาจัดการข้อผิดพลาดอย่างชัดเจนโดยไม่มีความยืดยาวที่มักเกี่ยวข้องกับรูปแบบการจัดการข้อผิดพลาดแบบดั้งเดิม

การเปรียบเทียบภาษาโปรแกรม:

  • Gleam เทียบกับ Rust: มีระบบ static typing และ pattern matching ที่คล้ายคลึงกัน
  • Gleam เทียบกับ Elixir: ใช้ BEAM VM ร่วมกันแต่มีแนวทาง syntax ที่แตกต่าง
  • Gleam เทียบกับ Scala: มีความสมดุลในการเขียนโปรแกรมเชิงฟังก์ชันที่เปรียบเทียบได้
  • แพลตฟอร์มเป้าหมาย: การคอมไพล์สำหรับ BEAM VM และ JavaScript

Parser Combinators เน้นจุดแข็งของการเขียนโปรแกรมเชิงฟังก์ชัน

การสนทนาเผยให้เห็นว่าทำไมภาษาฟังก์ชันนัลจึงเป็นเลิศในงานการแยกวิเคราะห์ Parser combinators ช่วยให้นักพัฒนาสามารถสร้าง parser ที่ซับซ้อนได้โดยการรวมคอมโพเนนต์เล็กๆ ที่นำมาใช้ซ้ำได้ ระบบนิเวศของ Gleam รวมถึงไลบรารีเช่น party และ parser_gleam ที่ใช้รูปแบบเหล่านี้ ทำให้การประมวลผลข้อความและการแยกวิเคราะห์ข้อมูลเข้าถึงได้ง่ายขึ้น

การ pattern matching บน algebraic data types ช่วยเพิ่มความสามารถในการแยกวิเคราะห์เพิ่มเติม คุณสมบัติเหล่านี้ช่วยให้นักพัฒนาสามารถแสดงตรรกะการแยกวิเคราะห์ที่ซับซ้อนในลักษณะที่ชัดเจนและเป็นการประกาศที่สะท้อนโครงสร้างของข้อมูลที่กำลังประมวลผลอย่างใกล้ชิด

ไลบรารี Parser Combinator ของ Gleam:

  • party - มีให้ใช้งานที่ hexdocs.pm/party/
  • parser_gleam - มีให้ใช้งานที่ hexdocs.pm/parser_gleam/

ความกังวลเรื่องความสุกงามและระบบนิเวศยังคงอยู่

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

ภาษานี้ยังคงพัฒนาต่อไป โดยมีการพัฒนาอย่างต่อเนื่องเพื่อแก้ไขช่องว่างเหล่านี้ เมื่อนักพัฒนาจำนวนมากขึ้นทดลองใช้ Gleam และมีส่วนร่วมในระบบนิเวศของมัน ความกังวลเรื่องความสุกงามเหล่านี้คาดว่าจะลดลงเมื่อเวลาผ่านไป

ความสนใจที่เพิ่มขึ้นใน Gleam สะท้อนแนวโน้มที่กว้างขึ้นไปสู่ภาษาที่ผสมผสานระบบ type สมัยใหม่เข้ากับสภาพแวดล้อมรันไทม์ที่พิสูจน์แล้ว สำหรับนักพัฒนาที่สร้างระบบที่ทำงานพร้อมกันและทนต่อข้อผิดพลาด Gleam เสนอทางเลือกที่น่าสนใจที่ใช้ประโยชน์จากการปรับปรุง BEAM VM หลายทศวรรษในขณะที่ให้คุณสมบัติภาษาร่วมสมัย

อ้างอิง: My First Impressions of Gleam