5 คะแนน โดย GN⁺ 2024-04-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Vala เป็นภาษาโปรแกรมที่มีเป้าหมายเพื่อมอบความสามารถของภาษาโปรแกรมสมัยใหม่ให้แก่นักพัฒนา GNOME
  • เมื่อเทียบกับแอปพลิเคชันและไลบรารีที่เขียนด้วย C จะไม่เพิ่มข้อกำหนดด้านรันไทม์เพิ่มเติมและไม่ใช้ ABI ที่แตกต่างกัน
  • ฟีเจอร์ภาษาสมัยใหม่ที่รองรับ: อินเทอร์เฟซ, พร็อพเพอร์ตี, ซิกแนล, Foreach, แลมบ์ดาเอกซ์เพรสชัน, การอนุมานชนิดข้อมูลสำหรับตัวแปรโลคัล, เจเนอริก, ชนิดแบบ Non-null, การจัดการหน่วยความจำ, การจัดการข้อยกเว้น
  • สามารถเขียนโค้ดได้สะดวกด้วยการใช้แอบสแตรกชันระดับสูงในแนวทางเชิงวัตถุ และผสานรวมอย่างลึกซึ้งกับเทคโนโลยีของ GNOME เช่น GObject, GTK
  • คอมไพล์โค้ดเป็นไบนารีเนทีฟที่รวดเร็วมาก สามารถนำโค้ด C เดิมกลับมาใช้ในโปรแกรม Vala หรือสร้างโค้ด C จาก Vala ได้

ความเข้ากันได้กับไลบรารี C เดิม

  • Vala ถูกออกแบบมาให้เข้าถึงไลบรารี C เดิมได้โดยไม่ต้องมีรันไทม์ไบน์ดิง โดยเฉพาะไลบรารีที่อิงกับ GObject
  • หากมีเพียงไฟล์ API ที่มีการประกาศคลาสและเมธอดด้วยไวยากรณ์ของ Vala ก็สามารถใช้ไลบรารีนั้นร่วมกับ Vala ได้
  • ปัจจุบัน Vala มาพร้อมกับไบน์ดิงสำหรับ GLib และ GTK+

คอมไพเลอร์ Vala valac

  • valac เป็นคอมไพเลอร์แบบ self-hosting ที่แปลงซอร์สโค้ด Vala ให้เป็นซอร์สโค้ด C และไฟล์เฮดเดอร์
  • ใช้ระบบชนิดข้อมูลของ GObject เพื่อสร้างคลาสและอินเทอร์เฟซที่ประกาศไว้ในซอร์สโค้ด Vala
  • ไวยากรณ์ของ Vala คล้ายกับ C# แต่มีการปรับให้เข้ากับระบบชนิดข้อมูลของ GObject ได้ดียิ่งขึ้น

การใช้งานคลาสและเมธอดที่เขียนด้วย Vala จาก C

  • เพียงติดตั้งไฟล์เฮดเดอร์ที่สร้างจากไลบรารี Vala ก็สามารถเข้าถึง API แบบ GObject ของไลบรารี Vala จากแอปพลิเคชัน C ได้ตามวิธีปกติ
  • เนื่องจาก Vala parser ถูกเขียนเป็นไลบรารี และสามารถใช้ข้อมูลทั้งหมดในช่วงคอมไพล์ตอนสร้างไบน์ดิงได้ จึงน่าจะเขียนตัวสร้างไบน์ดิงเพื่อเข้าถึงไลบรารี Vala จากแอปพลิเคชันที่เขียนด้วย C# เป็นต้นได้ไม่ยาก

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

  • Vala มีข้อดีคือเป็นภาษาเชิงวัตถุที่มีไวยากรณ์คล้าย C และผสานรวมกับเทคโนโลยี GNOME ได้ดี โดยเฉพาะเหมาะกับการพัฒนาแอปพลิเคชัน GUI ที่เชื่อมต่อกับ GTK, Granite เป็นต้นได้ง่าย
  • Vala เป็นภาษาที่ออกแบบมาเฉพาะสำหรับการพัฒนาสภาพแวดล้อมเดสก์ท็อป GNOME จึงดูไม่น่าจะมีการใช้งานกว้างขวางมากนักในด้านอื่น
  • Vala ที่มีไวยากรณ์คล้าย C# น่าจะช่วยให้นักพัฒนาที่คุ้นเคยกับ C# เข้ามามีส่วนร่วมในการพัฒนา GNOME ได้ง่ายขึ้น
  • เป้าหมายของ Vala ที่ต้องการให้ความสำคัญกับความเข้ากันได้กับไลบรารี C เดิม พร้อมรองรับฟีเจอร์ภาษาสมัยใหม่ เป็นแนวคิดที่สดใหม่ แต่ก็อาจทำให้ความเป็นเอกลักษณ์ของภาษานั้นลดลง
  • หากดูจากโปรเจกต์ Vala จะพบว่าส่วนใหญ่เป็นแอปเดสก์ท็อปสำหรับ GNOME หรือ elementary OS แต่ก็เป็นภาษาที่สามารถนำไปใช้กับการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์ได้เช่นกัน เพียงแต่ระบบนิเวศในด้านนั้นยังไม่มากนัก
  • ยังไม่ชัดเจนว่า Vala จะถูกใช้อย่างแพร่หลายเพียงใด แต่ในระบบนิเวศ GNOME การใช้ Vala แทน C ก็น่าคาดหวังเรื่องการเพิ่มผลิตภาพได้
  • ยังมีภาษาอีกตัวชื่อ Genie ที่มีไวยากรณ์คล้าย Vala และสามารถใช้เทคโนโลยี GNOME ได้เช่นกัน โดยมีจุดเด่นคือใช้การเยื้องแบบ Python เพื่อแยกบล็อกโค้ด จึงอาจพิจารณาเป็นทางเลือกแทน Vala ได้

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

 
GN⁺ 2024-04-09
ความคิดเห็นจาก Hacker News
  • มีการตั้งข้อสงสัยว่า Vala ช่วงหลังมีการพัฒนาอย่างคึกคักหรือไม่ ตามโพสต์บล็อกของนักพัฒนา GNOME คนหนึ่งระบุว่า Vala ถูกดูแลโดยนักพัฒนาเพียงคนเดียว และไม่แนะนำสำหรับการพัฒนาใหม่
  • ผู้แสดงความคิดเห็นคนหนึ่งบอกว่าเพิ่งเขียนแอปด้วย Vala ไม่นานนี้และเป็นประสบการณ์ที่สนุก เขาต้องการแอปที่ทำงานได้ดีทั้งบนเดสก์ท็อปลินุกซ์และ PinePhone จึงพบว่า Vala เหมาะมาก ทั้งสนุกกว่า Python มากและยังมีประสิทธิภาพดีกว่า
  • Vala มีภาษาเครือญาติชื่อ Genie ทั้งสองภาษาโดยพื้นฐานแล้วเหมือนกัน แต่ Vala ใช้ไวยากรณ์คล้าย C# ส่วน Genie ใช้การย่อหน้าแบบมีความหมายเหมือน Python ทั้งคู่ถูกคอมไพล์ด้วยคอมไพเลอร์เดียวกัน (valac)
  • Vala ดูคล้าย Swift มากในเชิงไวยากรณ์ นอกจากเรื่องไวยากรณ์แล้ว Vala ยังคล้าย Swift ตรงที่มีการนับจำนวนการอ้างอิงระดับ first-class, มี C language binding และคอมไพล์เป็นไบนารีได้โดยตรงโดยไม่ต้องมีรันไทม์ภายนอก
  • มีการตั้งคำถามว่า Vala มี ABI ที่เสถียร หรือมีความเข้ากันได้กับภาษาระดับสูงอื่นอย่าง C++ หรือ ObjC หรือไม่ ซึ่งเป็นโจทย์ยากที่ Swift ก็กำลังพยายามแก้
  • ยากที่จะเห็นว่า Vala เป็นภาษาที่มีประสิทธิผลหรือทรงพลังกว่า Java หรือ C# แบบชัดเจน (หรือมากพอสมควร) จุดเด่นของ Vala หรือปัญหาที่มันพยายามแก้ยังไม่ชัดเจน
  • มีความเห็นว่าจุดแข็งอย่างหนึ่งของ Vala คือไลบรารีเนทีฟจำนวนมากที่เข้าถึงได้เพราะเข้ากันได้กับ GObject และยังมีเว็บไซต์เอกสารที่ยอดเยี่ยมซึ่งรวมทุกอย่างไว้ในที่เดียว (valadoc.org) ช่วยให้การพัฒนาง่ายขึ้น
  • มีการกล่าวว่าแอป "เนทีฟ" ส่วนใหญ่ของ elementary OS เขียนด้วย Vala
  • ผู้แสดงความคิดเห็นคนหนึ่งที่ชอบ Geary ได้หันมาศึกษา Vala เพราะเหตุนี้ และพบว่า Vala เป็นภาษาที่สง่างามและเหมาะสำหรับสร้างโปรแกรมที่ใช้งานได้จริงบน GNOME แต่ก็ไม่ได้ติดตาม Vala มาแล้ว 7 ปีหลังสุด
  • การใช้ Rust สำหรับการพัฒนา GNOME กำลังได้รับความนิยมมากขึ้นเรื่อย ๆ (gtk-rs.org)