จาก post นี้ใน facebook
เรื่องเกี่ยวกับการนำภาษา Go มาใช้ในการพัฒนาระบบงาน
สิ่งที่สำคัญคือ มีเหตุผลอะไรที่ถึงนำภาษา Go มาใช้งาน
ในส่วนของ API service และ Backend

ดังนั้นมาสรุปเหตุผลไว้นิดหน่อย
จากมุมมองที่ใช้มาบ้างเล็กน้อย
อาจจะไม่ถูกแต่คิดว่า มันดีกว่าเดิมอย่างแน่นอน
มาเริ่มกันเลย

1. เป็นภาษาที่เรียบง่าย ไม่ต้องการอะไรเยอะ

ตั้งแต่ความต้องการ และ รูปแบบของภาษา
รวมทั้งตัวภาษาเองมีชุดของ library ที่พร้อม
ไม่จำเป็นต้องใช้ library จากข้างนอกเลย

ตัวอย่างเช่นการพัฒนา API service
ตัวภาษาก็มี library เกี่ยวกับ http, json, template ให้ทั้งหมด

ที่สำคัญเอกสารครบที่ Go Document

2. สิ่งที่ชอบมาก ๆ คือ ผลจากการ compile และ build ได้ไฟล์ binary เดียวเท่านั้น

โดยไฟล์ binary ที่ได้จะถูกสร้างตามสถาปัตยกรรมและ OS ที่ใช้งาน
รวมทั้ง app และ library ต่าง ๆ เข้าด้วยกัน
ทำให้ง่ายต่อการติดตั้งอย่างมาก
ทำให้เราได้รับ feedback กลับมาอย่างรวดเร็วอีกด้วย

บ่อยครั้งอาจจะคิดว่า มันง่ายเกินไปหรือไม่ ?
ทำอะไรผิดหรือเปล่า ?

3. ส่วนตัวชอบเรื่อง Static Type System

เหมาะมากกับการพัฒนาที่มีขนาดใหญ่
ที่สำคัญตัว compiler ยังทำการตรวจสอบ issue ต่าง ๆ ให้ในขณะ runtime อีกด้วย
ซึ่งถ้ามี issue จะ compile ไม่ผ่านก็เลยทีเดียว

ตัวอย่างที่สนุกคือ
มีการ import library ที่ไม่ถูกใช้งาน !!
มีตัวแปรที่ไม่ถูกใช้งาน !!

4. มีชุดเครื่องมือที่จำเป็นต่อนักพัฒนา

ตัวอย่างเช่น

  • go clean สำหรับลบไฟล์ที่ compiler สร้างขึ้นมา
  • go fmt สำหรับจัดการรูปแบบของ code
  • go get สำหรับจัดการเรื่อง library/dependency
  • go test สำหรับการทดสอบ
  • go doc สำหรับการสร้างเอกสาร

ลองดูเพิ่มเติมด้วยคำสั่ง $go tool

5. เรื่องประสิทธิภาพการทำงานที่ดีขึ้นมาก ๆ

แต่สิ่งที่สำคัญกว่าคือ การใช้ resource ต่าง ๆ น้อยลง ทั้ง CPU และ Memory
เมื่อเทียบกับระบบเดิมที่พัฒนาด้วยภาษาอื่น ๆ เช่น Java และ Python
น่าจะมาจากเรื่องของ concurrency model และ CPU scalability ที่ตัว compiler จัดให้

ตรงนี้มาจากระบบที่ทำเท่านั้น อาจจะแตกต่างกันไปในแต่ละระบบ

6. มี IDE และ Text Editor สนับสนุนมากมาย

เอาที่สบายใจเลยตั้งแต่ vi ยัง IDE ที่ดูดีอย่าง JetBrans IDEA, Webstorm เป็นต้น

สุดท้ายคือ เขียนชุดการทดสอบได้ง่าย

ถ้าไปดู code ของภาษา Go จะพบว่า
ในทุก ๆ ไฟล์มีชุดการทดสอบทั้งหมด
ซึ่งเป็นแหล่งการเรียนรู้ที่ดีมาก ๆ

ปล. ถ้าง่ายง่ายเลย แต่ถ้ายากยากเลย !!

ถามว่าในอนาคตจะมีอะไรที่ดีกว่าไหม ?
ตอบได้เลยว่ามีสิ ประเด็นคือ เราทำการศึกษาสิ่งใหม่ ๆ หรือไม่ ?
จากนั้นก็ต้องพิจารณาดูความพร้อมในมุมต่าง ๆ อีกด้วย
เช่น การดูแลรักษาและพัฒนาต่อไป ?
ดังนั้นเลือกเครื่องมือให้ถูกกับงาน และ คนด้วยครับ

ภาษาดี แต่คนสร้างแย่ มันก็ไม่ดีนะ

ขอให้สนุกกับการเขียน code ครับ

คำถามปิดท้าย
ทำไมถึงไม่ใช้ภาษา Go ?

Tags: