เวลาที่เราจะเขียนโปรแกรมลงไมโครคอนโทรลเลอร์ (Microcontrollers) ถ้าเป็นคนรุ่นเก๋าหน่อยก็มักจะนึกถึงภาษา C ถ้าเป็นสายอินดี้ตามเทรนด์ก็ต้อง Rust หรือถ้าอยากให้งานเสร็จไวๆ แล้วมีทรัพยากรบอร์ดเหลือเฟือ ก็คงจัด Python ไปเลย... แล้วภาษา Go (Golang) ล่ะ?
ข่าวดีคือตอนนี้เรามีทางเลือกนั้นแล้วครับ! ด้วยโปรเจกต์ TinyGo ที่ทำให้คุณสามารถใช้ภาษา Go เขียนโค้ดคุมฮาร์ดแวร์ได้ ล่าสุดพวกเขาอัปเดตใหม่จนสามารถรองรับบอร์ดพัฒนา (Dev boards) ได้มากกว่า 100 รุ่น แถมยังรองรับ WebAssembly (webASM) อีกด้วยนะ!
รองรับบอร์ดเพียบ! ตั้งแต่ Arduino ยัน Game Boy
ย้อนกลับไปตอนที่เราเคยพูดถึง TinyGo เมื่อปี 2019 ตอนนั้นพวกเขายังเพิ่งตั้งไข่ และโฟกัสเป้าหมายไปที่บอร์ด Arduino กับ BBC micro:bit เป็นหลัก
แต่มาวันนี้ รายชื่อบอร์ดที่รองรับนั้นยาวเหยียด ครอบคลุมตั้งแต่บอร์ดยอดฮิตตระกูล Adafruit, ESP32 ไปจนถึงเครื่องเกมคลาสสิกอย่าง Nintendo Game Boy Advance! เรียกว่าตอนนี้คุณสามารถ "เขียน Go เพื่อเล่นโกะบนเครื่องพกพา" ได้แล้วล่ะครับ 😆
(แอบกระซิบ: สำหรับเพื่อนๆ คนไหนที่คันไม้คันมือ อยากหาบอร์ดอย่าง ESP32, Arduino หรืออยากได้ เส้นพลาสติก 3D Print เกรดพรีเมียม เอาไปปริ้นท์เคสใส่บอร์ดให้เท่ไม่ซ้ำใคร แวะไปช้อปปิ้งอุปกรณ์สายคราฟต์คุณภาพดีได้ที่ Globalbyte เลยครับ ของครบจบในที่เดียว!)
ข้อจำกัดที่ต้องรู้ก่อนใช้งาน (อาจเป็น Dealkiller ของหลายคน)
แม้จะดูน่าสนุก แต่จุดอ่อนที่ใหญ่ที่สุดของ TinyGo ตอนนี้ ซึ่งอาจจะเป็น "จุดตาย (Dealkiller)" สำหรับหลายๆ แอปพลิเคชันเลยก็คือ มันยังขาดการรองรับระบบเชื่อมต่อไร้สาย (Wireless connectivity) ที่สมบูรณ์แบบครับ
อย่างเช่นการเคลมว่าตัวระบบรองรับชิป ESP8266 แต่ดันไม่ยอมให้เราใช้ Wi-Fi ได้เนี่ย... ฟังดูย้อนแย้งสุดๆ เพราะเหตุผลหลัก (Raison d'être) ที่คนเลือกใช้ชิปตัวนี้ก็เพื่อต่อ Wi-Fi นี่แหละ! แต่อย่างน้อยที่สุด มันก็ยังเอามาใช้งานเป็นไมโครคอนโทรลเลอร์ธรรมดาๆ ทั่วไปได้อยู่ครับ
ข่าวดีอีกเรื่องคือ ตอนนี้พวกเขาได้เพิ่มระบบ Garbage Collection (การคืนพื้นที่หน่วยความจำอัตโนมัติ) เข้ามาให้แล้ว ซึ่งเป็นจุดขายที่คนรักภาษา Go น่าจะถูกใจสิ่งนี้ แต่ทางผู้พัฒนาก็ยอมรับตามตรงว่า มันยังทำงานช้ากว่าภาษา Go ตัวเต็มบนคอมพิวเตอร์ และจะยังไม่สามารถใช้งานได้บนชิป AVR หรือใน WebAssembly ครับ
นอกจากนี้ TinyGo ก็ยังไม่ใช่ภาษา Go ที่สมบูรณ์ 100% คุณอาจจะยังไม่สามารถ Compile แพ็กเกจ Standard library ทั้งหมดที่คุณคุ้นเคยได้ แต่ถ้าเทียบกับปี 2019 ก็ต้องบอกว่าพวกเขามีพัฒนาการขึ้นมาก และมีแพ็กเกจรองรับเยอะขึ้นอย่างเห็นได้ชัดครับ!
ทางเลือกอื่นๆ สำหรับสายอินดี้
ถึงจะมีข้อจำกัดอยู่บ้าง แต่เชื่อเถอะว่าการอัปเดตครั้งนี้ต้องทำให้เหล่าสาวก Go (Go fanatics) ยิ้มแก้มปริแน่นอนครับ
แต่สำหรับใครที่มองหาทางเลือกอื่น คุณอาจจะชอบความคลาสสิกของ การเขียนโปรแกรมลง Arduino ด้วยภาษา FORTH หรืออาจจะอยากรัวปุ่มวงเล็บแบบมาราธอนกับ การเขียน LISP บนชิป AVR แบบ Bare Metal ก็เก๋าไปอีกแบบครับ ยิ่งมีภาษาให้เลือกเยอะ วงการเมกเกอร์ก็ยิ่งสนุกครับ!
อ้างอิงข้อมูลจาก: Globalbyteshop Blog
ต้นฉบับข่าวสารโดย: Hackaday | Original Link
*คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยและบริบทบางส่วนอาจถูกปรับแต่งเพื่อให้เข้าใจง่ายและสนุกขึ้น โปรดตรวจสอบรายละเอียดเชิงเทคนิคและข้อจำกัดของซอฟต์แวร์ได้ที่
ต้นฉบับภาษาอังกฤษ หรือเว็บไซต์หลักของ TinyGo