การดู : 0

12/04/2026 18:15น.

กว่าจะเป็นภาษา Go: เมื่อวิศวกร Google ทนรอคอมไพล์โค้ดไม่ไหว จนเกิดภาษาเปลี่ยนโลก

กว่าจะเป็นภาษา Go: เมื่อวิศวกร Google ทนรอคอมไพล์โค้ดไม่ไหว จนเกิดภาษาเปลี่ยนโลก

#ประวัติภาษา Go

#Go

#Golang

#Google

ในโลกของการพัฒนาซอฟต์แวร์ เรามักแสวงหาภาษาที่ "เร็วแรง" หรือ "เขียนง่าย" แต่สำหรับวิศวกรที่ Google ในช่วงปี 2007 พวกเขาพบว่าภาษาที่มีอยู่นั้นเริ่มกลายเป็น "โซ่ตรวน" มากกว่าเครื่องมือ โดยเฉพาะเมื่อต้องรับมือกับระบบขนาดมหึมา (Scale) ระดับโลกที่ซับซ้อนขึ้นทุกวัน

 

วันนี้ Superdev Academy จะพาไปดูเบื้องหลังการกำเนิดของ Go (หรือ Golang) ภาษาที่ถูกสร้างขึ้นเพื่อแก้ปัญหา "ยุคคลาวด์" โดยเฉพาะ และที่สำคัญ... มันถูกร่างขึ้นในระหว่างที่เหล่ายอดฝีมือกำลังรอคอมไพล์โค้ดนานจนความอดทนหมดลง!

 

 

1. 45 นาทีที่เปลี่ยนโลก: ความหงุดหงิดในออฟฟิศ Google (ปี 2007)

 

เรื่องราวเริ่มต้นขึ้นเมื่อ 3 วิศวกรระดับตำนานของ Google ได้แก่:

  • Robert Griesemer: ผู้เชี่ยวชาญด้าน Java Virtual Machine (JVM) และ Chrome V8
  • Rob Pike: หนึ่งในทีมสร้าง Unix และผู้คิดค้น UTF-8
  • Ken Thompson: บิดาแห่งภาษา B (ต้นกำเนิดของ C) และผู้ร่วมสร้าง Unix

 

Robert Griesemer.webp

 

Rob Pike.webp

 

Ken Thompson.webp

 

ในวันนั้น พวกเขากำลังรอคอมไพล์โปรเจกต์ขนาดใหญ่ที่เขียนด้วย C++ ซึ่งใช้เวลานานถึง 45 นาที เพียงเพื่อจะเปลี่ยนโค้ดไม่กี่บรรทัด ในระหว่างที่รอนั้นเอง พวกเขาจึงเริ่มระดมสมองว่า: "ทำไมเราต้องยอมทนกับความช้าและซับซ้อนแบบนี้?"

 

โจทย์ใหญ่ที่ต้องแก้:

  • Wait Times: การรอคอมไพล์นานเกินไปทำลายความคิดสร้างสรรค์ (Productivity)
  • Unused Features: ภาษา C++ มีฟีเจอร์เยอะเกินความจำเป็น (Bloated) จนคนในทีมเริ่มใช้ท่าพิสดารที่คนอื่นอ่านไม่ออก
  • Multi-core Age: โลกเปลี่ยนไปใช้ CPU หลายคอร์แล้ว แต่ภาษาเดิมๆ ยังจัดการเรื่องการทำงานพร้อมกัน (Concurrency) ได้ยากและสิ้นเปลืองทรัพยากร

 

2. ปรัชญา "น้อยแต่มาก" (The Zen of Go)

 

Go ถูกออกแบบมาด้วยแนวคิดที่สวนทางกับภาษาในยุคนั้น แทนที่จะเพิ่มฟีเจอร์ ทีมผู้สร้างกลับเลือกที่จะ "ตัด" ทุกอย่างที่ทำให้ชีวิตยากออกไป

  • No Classes, No Inheritance: Go ตัดระบบ Class ที่ซับซ้อนออก และใช้ Interfaces กับ Composition แทน ทำให้โค้ดมีความยืดหยุ่นและไม่ซ้อนกันเป็นชั้นๆ (Deep hierarchy) ที่เข้าใจยาก
  • Fast Compilation: Go ออกแบบระบบ Dependency ใหม่ ทำให้คอมไพเลอร์ไม่ต้องอ่านไฟล์ซ้ำซ้อน ผลลัพธ์คือการคอมไพล์โค้ดขนาดใหญ่ที่เคยใช้เวลาเป็นชั่วโมง เหลือเพียงไม่กี่วินาที
  • Single Binary: Go จะรวมทุกอย่าง (Dependencies) เข้ามาในไฟล์ Executable ตัวเดียว (Static Linking) ทำให้ตอนเอาไปใช้งาน (Deploy) แค่โยนไฟล์เดียวขึ้นเซิร์ฟเวอร์ก็จบ ไม่ต้องมานั่งลง Runtime ให้ปวดหัว

 

Technical Insight: Garbage Collection ที่ไม่ต้อง "หยุดโลก"

 

แม้ Go จะทำงานเร็วใกล้เคียงภาษา C แต่คุณไม่ต้องจัดการหน่วยความจำเอง Go มีระบบ Garbage Collection (GC) ที่ฉลาดมาก โดยถูกปรับจูนให้มีค่า Latency ต่ำที่สุด (Low Latency) เพื่อให้ระบบรันได้อย่างต่อเนื่องโดยไม่เกิดอาการ "กระตุก" หรือ Stop-the-world นานๆ เหมือนภาษาในยุคเก่า

 

3. อาวุธลับที่ทำมาเพื่อ "คลาวด์": Goroutines และ Channels

 

สิ่งที่ทำให้ Go กลายเป็น "รากฐาน" ของเทคโนโลยีในปัจจุบันคือความสามารถในการจัดการงานล้านอย่างพร้อมกัน

 

ทำไม Goroutines ถึงเหนือกว่า Threads ทั่วไป?

 

ในภาษาดั้งเดิม (เช่น Java หรือ C++) การสร้าง Thread หนึ่งตัวอาจใช้หน่วยความจำหลักหลาย MB ทำให้เซิร์ฟเวอร์หนึ่งเครื่องรัน Thread ได้จำกัด

  • Goroutines: ใช้หน่วยความจำเริ่มต้นเพียง 2 KB เท่านั้น! ทำให้เราสามารถรันงานพร้อมกัน (Concurrency) ได้เป็นแสนหรือล้านตัวในเครื่องเดียว
  • Channels: Go ใช้ปรัชญาว่า "Don't communicate by sharing memory; share memory by communicating" คือการให้แต่ละงานคุยกันผ่าน "ท่อส่งข้อมูล" (Channel) แทนการแย่งกันใช้หน่วยความจำ ซึ่งช่วยลดปัญหาบั๊กแปลกๆ (Race Condition) ได้มหาศาล

 

4. จากตัวตุ่นที่ถูกล้อ สู่รากฐานของ Cloud Native

 

Google เปิดตัวภาษา Go ในปี 2009 ในรูปแบบ Open Source แม้ในช่วงแรกมาสคอต Gopher (ตัวตุ่น) จะถูกล้อเลียน หรือภาษาถูกมองว่า "ง่ายเกินไป" จนไม่มีฟีเจอร์ล้ำๆ เหมือนภาษาอื่น

 

แต่ความ "เรียบง่าย" นั่นเองที่ทำให้มันกลายเป็นภาษาที่ปลอดภัยที่สุดสำหรับโปรเจกต์ขนาดใหญ่:

  • Docker: เครื่องมือปฏิวัติวงการไอที ถูกเขียนด้วย Go
  • Kubernetes: ระบบจัดการตู้คอนเทนเนอร์ระดับโลกของ Google ก็สร้างด้วย Go
  • Terraform & Prometheus: เครื่องมือสำคัญของสาย DevOps ล้วนเลือก Go เป็นแกนหลัก

 

5. มรดกและอิทธิพล: ภาษาที่คนอ่านโค้ดเข้าใจตรงกัน

 

เสน่ห์ที่แท้จริงของ Go ไม่ได้อยู่ที่ความล้ำสมัย แต่อยู่ที่ "ความเป็นมาตรฐาน"

 

ในภาษาอื่น โปรแกรมเมอร์ 10 คนอาจเขียนโค้ดแก้ปัญหาเดียวกันได้ 10 ท่า แต่ใน Go ตัวภาษามีวิธีเขียนที่ชัดเจน (Minimalist) ทำให้ไม่ว่าใครจะมาเขียน โค้ดที่ได้จะหน้าตาคล้ายกัน อ่านง่าย และดูแลรักษาง่าย (Maintainability) นี่คือเหตุผลที่บริษัทอย่าง Uber, Twitch และสถาบันการเงินทั่วโลก เลือกใช้ Go เป็นหัวใจของ Microservices

 


 

สรุป: ทำไมชาว Superdev ต้องลอง Go?

 

การเรียนรู้ Go จะเปลี่ยนวิธีคิดเรื่องการออกแบบระบบของคุณ จากการคิดแบบ Object-oriented ที่ซับซ้อน มาเป็นการคิดแบบ "ท่อส่งข้อมูล" (Pipes and Channels) ที่เรียบง่ายแต่ทรงพลัง

 

หากคุณต้องการสร้างซอฟต์แวร์ที่ "Scalable, Reliable, and Fast" โดยที่ไม่ต้องนั่งรอคอมไพล์โค้ดจนจิบกาแฟหมดไปหลายแก้ว... Go คือคำตอบที่ใช่ที่สุดในชั่วโมงนี้ครับ!