2 คะแนน โดย GN⁺ 2023-11-11 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

การเปลี่ยนมาใช้ Elixir

  • ที่งานใหม่มีการใช้ Elixir เป็นภาษาแบ็กเอนด์หลัก
  • แม้จะไม่เคยมีประสบการณ์กับ Elixir หรือ Erlang มาก่อน แต่เรียนรู้ได้ไม่ยากเพราะไวยากรณ์คล้าย Ruby
  • หลีกเลี่ยงปัญหาการจัดการสถานะของภาษาเชิงวัตถุ และได้รับประโยชน์จาก immutability กับการเขียนโปรแกรมเชิงฟังก์ชัน

ข้อดีของ Elixir

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

ไวยากรณ์และนิพจน์

  • ชอบไวยากรณ์ pipeline ของ Elixir แต่ชอบตัวดำเนินการ 'threading' ของ Clojure มากกว่า
  • ผ่านนิพจน์ with สามารถแยกฟังก์ชันที่ซับซ้อนออกเป็นเส้นทางกรณีสำเร็จและส่วนจัดการข้อผิดพลาดได้

การจัดการข้อยกเว้น

  • ใน Ruby การใช้ข้อยกเว้นเป็นส่วนหนึ่งของ control flow เป็นเรื่องปกติ
  • ใน Elixir มักใช้ Result / Either monad มากกว่าข้อยกเว้น โดยใช้ ok และ error เป็นค่าที่ส่งกลับ

ความเห็นของ GN⁺

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

1 ความคิดเห็น

 
GN⁺ 2023-11-11
ความคิดเห็นบน Hacker News
  • ความสนใจต่อภาษา Elixir เพิ่มขึ้นในช่วงไม่กี่สัปดาห์ที่ผ่านมา ผ่านวิดีโอบน YouTube

    • ชอบแนวคิดของ Elixir ที่รับมาจาก Erlang แต่ประสบการณ์การใช้งานจริงค่อนข้างแปลกอยู่บ้าง
    • มองในแง่บวกต่อ isolated processes และการส่งข้อความ (Actors) ในฐานะอนาคตของการเขียนโปรแกรมแบบกระจาย
    • ชอบความสามารถด้าน pattern matching แต่ก็มองด้วยความสงสัยต่อ "เวทมนตร์" อย่าง LiveView และ LiveBook ของ Elixir
    • รู้สึกไม่คุ้นเคยกับคำศัพท์และแนวคิดเฉพาะของ Elixir เช่น GenServers
    • ตระหนักถึงความเสี่ยงของชุมชนขนาดเล็ก แต่ก็ชื่นชมความสำเร็จของชุมชนนั้น
    • แสดงความคาดหวังต่อการมีระบบ type system
  • เน้นว่าข้อดีหลักของ Elixir/Erlang คือความง่ายในการทำงานเบื้องหลัง

    • จากประสบการณ์ในที่ทำงานก่อนหน้า พบว่าการใช้ Task ของ Elixir ทำให้เซิร์ฟเวอร์ยังจัดการคำขอ HTTP ได้โดยไม่ล่ม
  • เน้นย้ำความทรงพลังของภาษา ผ่านการบรรยาย "The Soul of Erlang and Elixir" ของ Sasa Juric

  • แชร์ประสบการณ์การใช้ Erlang มาตั้งแต่ปี 1991

    • แม้จะเคยใช้ภาษาอื่นมาด้วย แต่ Erlang เป็นภาษาที่ใช้งานแล้วสนุกที่สุด
    • วางแผนจะใช้ Erlang ต่อไปจนกว่าจะเกษียณ
  • แสดงความพึงพอใจว่าการเรียนรู้และใช้งาน Elixir เป็นเรื่องสนุก รวมถึงความเรียบง่ายและความสามารถของ BEAM/OTP

  • ย้ำว่าข้อดีของ Elixir คือให้ความสนุกแบบ Ruby แต่ตัดข้อเสียของการเขียนโปรแกรมเชิงวัตถุออกไปด้วยคุณสมบัติแบบ immutable และ functional

    • หวังว่าจะมีการเพิ่ม type system เพื่อช่วยให้เข้าใจ codebase ขนาดใหญ่ได้ดีขึ้น
  • ชี้ให้เห็นความเข้าใจผิดเกี่ยวกับการใช้ exceptions เป็น control flow ใน Ruby

  • ในฐานะผู้ใช้ F# แสดงความรู้สึกว่า Elixir ชวนสับสน

    • ฟังก์ชันไม่มี signature ที่ให้ข้อมูลชนิดข้อมูล จึงทำให้ใช้งานในไลบรารีขนาดใหญ่ได้ยาก
    • ตั้งคำถามว่าจุดขายหลักของ Elixir คืออะไร
  • จากประสบการณ์การใช้ Elixir ชี้ว่ามันเรียนรู้ง่าย และมีข้อดีด้าน pattern matching กับ immutable data

    • เคยพบว่ามันโดดเด่นมากในการสร้างระบบ CQRS
    • ชื่นชมเสถียรภาพของ BEAM และวิธีจัดการข้อผิดพลาดของ GenServer
  • เตือนให้ระวังมุมมองเชิงบวกเกินไปในช่วงแรกต่อเทคโนโลยีใหม่

    • แนะนำให้แชร์ประสบการณ์หลังจากได้ใช้งานจริงเป็นเวลานานแล้ว