2 คะแนน โดย GN⁺ 2024-05-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Gio เป็นไลบรารีสำหรับเขียน GUI แบบ immediate mode ข้ามแพลตฟอร์มด้วยภาษา Go
  • แพลตฟอร์มที่รองรับ: Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD, WebAssembly
  • การพึ่งพา: Gio ต้องการเพียงไลบรารีของแพลตฟอร์มสำหรับการจัดการหน้าต่าง การรับอินพุต และการวาดด้วย GPU

ทำไมต้อง Gio?

  • การพัฒนา GUI ที่มีประสิทธิภาพและยืดหยุ่น: Gio ช่วยให้สร้าง GUI ที่มีประสิทธิภาพและยืดหยุ่นได้บนทุกแพลตฟอร์มหลัก
  • เทคโนโลยีกราฟิก 2D สมัยใหม่: ผสานความยืดหยุ่นของแนวคิดกราฟิกแบบ immediate mode เข้ากับเทคโนโลยีกราฟิก 2D สมัยใหม่ เพื่อมอบรากฐานที่สม่ำเสมอสำหรับการพัฒนาแอปพลิเคชัน
  • ตัวเรนเดอร์เวกเตอร์ที่มีประสิทธิภาพ: มีตัวเรนเดอร์เวกเตอร์ประสิทธิภาพสูงที่อิมพลีเมนต์โครงการ Pathfinder โดยอิงบน OpenGL ES และ Direct3D 11
  • การเรนเดอร์ข้อความและรูปร่าง: รองรับแอนิเมชันอย่างมีประสิทธิภาพ การวาดแบบแปลงรูป และความเป็นอิสระจากความละเอียดพิกเซล โดยใช้เพียงเส้นโครงร่างแทนการอบข้อความและรูปร่างอื่น ๆ เป็นภาพเท็กซ์เจอร์

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

  • ประโยชน์ของ Gio: Gio ช่วยให้พัฒนา GUI ที่มอบประสบการณ์ผู้ใช้ที่สม่ำเสมอได้อย่างง่ายดายบนหลายแพลตฟอร์ม
  • ข้อดีทางเทคนิค: ใช้ประโยชน์จากเทคโนโลยีกราฟิกสมัยใหม่เพื่อมอบทั้งประสิทธิภาพและความยืดหยุ่น
  • เส้นโค้งการเรียนรู้: หากเป็นนักพัฒนาที่รู้ภาษา Go อยู่แล้วจะเริ่มต้นได้ไม่ยาก แต่อาจต้องใช้เวลาในการคุ้นเคยกับแนวคิดกราฟิกแบบใหม่
  • ผลิตภัณฑ์คู่แข่ง: เมื่อเทียบกับไลบรารี GUI ข้ามแพลตฟอร์มอื่น ๆ แล้ว Gio โดดเด่นด้านการผสานรวมกับภาษา Go
  • ข้อพิจารณาก่อนนำไปใช้: ความสามารถของ Gio อาจมากเกินไปหรือไม่เพียงพอตามความซับซ้อนของโปรเจกต์ จึงควรพิจารณาว่าตรงกับความต้องการของโครงการหรือไม่

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

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

สรุปความคิดเห็นจาก Hacker News

  • การเรนเดอร์ทุกอย่างด้วยแคนวาสอาจก่อให้เกิดปัญหาด้านการเข้าถึงและให้ความรู้สึกไม่เป็นเนทีฟ

    • การเรนเดอร์ด้วย <canvas> แบบเดียวกับเวอร์ชันเว็บของ Flutter อาจทำให้เกิดปัญหาด้านการเข้าถึงและให้ความรู้สึกไม่เป็นเนทีฟ
  • คำถามเกี่ยวกับวิธีพัฒนาแอปข้ามแพลตฟอร์มสมัยใหม่

    • มีคำถามว่าวิธีที่ดีที่สุดในปัจจุบันสำหรับการสร้างแอปมือถือและเว็บแบบข้ามแพลตฟอร์มคืออะไร ทั้งในแบบที่รวมทั้ง business logic และ UI หรือรวมเฉพาะ business logic
  • ข้อจำกัดของการทำ business logic ด้วย TypeScript

    • เคยพยายามทำ business logic ด้วย TypeScript แต่พบว่าประสิทธิภาพการรัน JavaScript บน iOS ไม่ดีนัก
  • ประสบการณ์พัฒนาแอปด้วย Go และ Fyne

    • มีการแชร์ประสบการณ์ว่าเคยพัฒนาแอปขนาดเล็กด้วย Go และ Fyne แต่ยังขาดฟีเจอร์จำนวนมากและความขัดเกลาแบบที่ Flutter มีให้
  • ปัญหาการเรนเดอร์ของเดโม WASM

    • พบปัญหาว่าเดโม WASM แสดงผลเป็นเพียงสี่เหลี่ยมสีดำในเบราว์เซอร์ Chrome บนพีซี Windows 10
  • คำถามเกี่ยวกับดีไซน์แบบ "zero allocation" ของ Gio

    • ผู้เริ่มต้น Go คนหนึ่งตั้งคำถามว่าเอกสารที่อธิบายดีไซน์แบบ "zero allocation" ของ Gio เข้าใจได้ยาก จึงสงสัยว่าการ allocation เกิดขึ้นเพราะอะไร มีการจัดสรรอะไร และประหยัดได้อย่างไร
  • ปัญหาด้านดีไซน์ของ GUI ข้ามแพลตฟอร์ม

    • มีการชี้ว่าหลาย ๆ GUI ข้ามแพลตฟอร์มดูเหมือนงานออกแบบที่ล้าสมัย
  • ความยากในการเขียนแอปพลิเคชันที่ซับซ้อน

    • มีการแชร์ประสบการณ์ว่าเขียนแอปพลิเคชันที่ซับซ้อนได้ยาก เพราะขาดคอมโพเนนต์พื้นฐานอย่างวิดีโอ แผนที่ และ rich text อีกทั้ง API เปลี่ยนบ่อยและไม่สามารถตั้งค่าธีมได้
  • ข้อจำกัดของ immediate mode graphics

    • immediate mode graphics มีปัญหาเมื่อต้องจัดการสถานะที่ซับซ้อน จนต้องลงมือสร้าง retained mode graphics เอง
  • ข้อจำกัดของตัวเรนเดอร์ที่ใช้ Piet GPU

    • แนวคิดของตัวเรนเดอร์ที่ใช้ Piet GPU ซึ่งรับจุดควบคุมของเส้นโค้งเบเซียร์เป็นอินพุตแล้วทำการเทสเซลเลตทุกอย่างนั้นดูน่าสนใจ แต่ในทางปฏิบัติกลับวาดวงกลมจริง ๆ ได้ยาก
  • WASM ยังไม่พร้อมสำหรับงาน production

    • WASM ยังเป็นเพียงการพิสูจน์แนวคิดเท่านั้น และยังต้องใช้เวลาวิศวกรรมอีกหลายปีกว่าจะพร้อมสำหรับ production
  • ปัญหาการเรนเดอร์ข้อความ CJK ของ Fyne

    • มีการชี้ว่า Fyne ไม่สามารถเรนเดอร์ข้อความ CJK ได้ ทำให้ใช้งาน Fyne ไม่ได้หากต้องรองรับเนื้อหาที่ผู้ใช้สร้างขึ้นหรือการแปลภาษา
  • การรองรับ Unicode ที่ไม่เพียงพอ

    • มีปัญหาว่าไม่รองรับ Unicode