4 คะแนน โดย GN⁺ 2024-05-01 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แนะนำภาษาโปรแกรม Borgo

  • ต้องการภาษาสำหรับเขียนแอปพลิเคชันที่แสดงออกได้ดีกว่า Go แต่ไม่ซับซ้อนเท่า Rust
    • Go เรียบง่ายและตรงไปตรงมา แต่บ่อยครั้งก็อยากให้มีความปลอดภัยด้านประเภทข้อมูลมากกว่านี้
    • Rust ใช้งานได้ดี (อย่างน้อยสำหรับโค้ดเธรดเดียว) แต่มีขอบเขตกว้างและซับซ้อนเกินไป และบางครั้งก็ชวนให้ปวดหัว
  • Borgo เป็นภาษาใหม่ที่ทรานสไพล์เป็น Go และเข้ากันได้อย่างสมบูรณ์กับแพ็กเกจ Go ที่มีอยู่เดิม
  • ไวยากรณ์ของ Borgo คล้าย Rust โดยสามารถใส่เซมิโคลอนได้ตามต้องการ

ฟีเจอร์หลัก

  • ชนิดข้อมูลเชิงพีชคณิตและการจับคู่แพตเทิร์น
  • ใช้ Option แทน nil
  • ใช้ Result แทนการคืนค่าหลายค่า
  • การจัดการข้อผิดพลาดด้วยตัวดำเนินการ ?

รันบนเครื่องโลคัล

  • Borgo เขียนด้วย Rust จึงต้องใช้ cargo
  • หากต้องการคอมไพล์ไฟล์ .brg ทั้งหมดในโฟลเดอร์ปัจจุบัน:
    • $ cargo run -- build
  • คอมไพเลอร์จะสร้างไฟล์ .go และสามารถรันไฟล์เหล่านั้นได้ตามปกติ

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

  • Rust เป็นภาษาที่ทรงพลัง แต่มีเส้นโค้งการเรียนรู้ที่ชันและอุปสรรคในการนำมาใช้ค่อนข้างสูง ส่วน Borgo ดูเป็นความพยายามที่น่าสนใจในการนำข้อดีของ Rust มาใช้ในอีโคซิสเต็มของ Go อย่างไรก็ตาม เนื่องจากยังอยู่ในระยะเริ่มต้น จึงคาดว่าอีโคซิสเต็มยังไม่พร้อมมากนัก
  • การปรับปรุงการใช้ nil และการจัดการข้อผิดพลาดด้วย Option และ Result รวมถึงการทำให้การจัดการข้อผิดพลาดง่ายขึ้นด้วยตัวดำเนินการ ? น่าจะแก้จุดที่นักพัฒนา Go มักรู้สึกไม่สะดวกได้
  • การที่ยังสามารถใช้ไลบรารี Go เดิมได้ตามเดิมถือเป็นข้อดีอย่างมาก แต่ในเมื่อยืมไวยากรณ์แบบ Rust มา นักพัฒนา Go อาจต้องใช้เวลาปรับตัว
  • เนื่องจากเป็นแนวทางแบบ transpile จึงมีความเป็นไปได้ว่าจะเสียเปรียบเมื่อเทียบกับโค้ด Go แบบเนทีฟในเรื่องการดีบักหรือประสิทธิภาพขณะรันไทม์ จึงอาจยังเร็วเกินไปสำหรับการนำไปใช้กับโค้ดโปรดักชันขนาดใหญ่
  • เช่นเดียวกับที่ Kotlin ค่อย ๆ เพิ่มส่วนแบ่งในอีโคซิสเต็ม JVM หาก Borgo ต้องการเป็นทางออกของฝั่ง Go ก็ยังต้องปรับปรุงอย่างต่อเนื่องในหลายด้าน เช่น คุณภาพโค้ด ประสิทธิภาพการพัฒนา และเส้นโค้งการเรียนรู้ หากพัฒนาต่อไปได้ดี ก็มีโอกาสจะกลายเป็นทางเลือกที่น่าสนใจในโลกของ Go

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

 
GN⁺ 2024-05-01
ความคิดเห็นจาก Hacker News

สรุป:

  • มีเสียงตอบรับเชิงบวกต่อภาษา Borgo ซึ่งมาเติมเต็มสิ่งที่ขาดในภาษา Go
    • เพิ่มฟีเจอร์ที่เคยรู้สึกว่าน่าเสียดายใน Go เช่น Enum และชนิด Optional
    • มีฟีเจอร์ส่วนใหญ่ที่นักพัฒนา Go อยากได้รวมอยู่
  • การตัดสินใจด้านการออกแบบบางส่วนของ Borgo ให้ความรู้สึกคล้าย Rust มากกว่าจุดเด่นของ Go
    • เช่น การนิยามเมธอดด้วย impl, ไวยากรณ์ของ channel และ goroutine, ฟังก์ชัน built-in zeroValue()
    • ถึงอย่างนั้นก็ดูเหมือนว่าจะยัง prefer การพัฒนาด้วย Borgo มากกว่า Go
  • มีการแนะนำโปรเจกต์อื่นที่เคยพยายามทำสิ่งคล้ายกัน
    • เคยมีความพยายามสร้างภาษาที่ transpile เป็น Go อย่าง braid, have, oden
  • ดูเหมือนว่าจะนำข้อดีของ Rust ในด้าน type system และ error handling มาใช้ ยกเว้น Borrow Checker ซึ่งเป็นหนึ่งในจุดเด่นของ Rust
  • มีความเห็นว่าอยากได้ภาษาที่มีทั้งข้อดีของ dynamic typing และ static typing
    • คือช่วงเริ่มพัฒนาจะได้ใช้ข้อดีของ dynamic typing แบบ Python และหลังจากนั้นค่อยเปลี่ยนไปเป็น static typing แบบค่อยเป็นค่อยไปได้
  • ให้ความรู้สึกเหมือนนำข้อดีของ runtime และ ecosystem เครื่องมือของ Go มารวมกับ type safety แบบ Enum ของ Rust
  • การนำคีย์เวิร์ด pub/private มาใช้แทนวิธีของ Go ที่แยกการมองเห็นฟิลด์ของ struct ด้วยตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ก็เป็นจุดที่ได้รับการมองในแง่บวก
  • ดูเหมือนจะหาจุดสมดุลระหว่าง type safety และความซับซ้อนได้คล้ายกับภาษา Gleam แต่คอมไพล์เป็น Go แทน Erlang หรือ JS ซึ่งเป็นข้อได้เปรียบด้านประสิทธิภาพ
    • แต่อาจยังน่าสงสัยว่าข้อความ compile error จะเป็นมิตรเท่า Rust หรือ Gleam หรือไม่