[สรุปเจาะลึก] ประวัติภาษา Go (Golang) จากความหงุดหงิดใน Office Google สู่ภาษาที่เป็นรากฐานของโลก Cloud

สวัสดีครับชาว Pantip พอดีผมได้มีโอกาสไปดูคลิปเล่าประวัติภาษา Go (Golang) มา แล้วรู้สึกว่าเนื้อหามันเข้มข้นมาก มีหลายจุดที่เราคนเขียนโปรแกรมบางทีก็มองข้ามไป เลยอยากจะมาสรุปประเด็นน่าสนใจแบบละเอียดให้อ่านกันครับว่า ทำไมภาษาที่ดู "เรียบง่าย" แบบนี้ ถึงกลายเป็นขาใหญ่ในโลก Backend ได้

1. จุดกำเนิดจาก "ความว่างเพราะรอ Compile" ย้อนกลับไปปี 2007 ปัญหาใหญ่ของ Google คือ Codebase ที่ใหญ่มาก จนการ Build โปรเจคครั้งหนึ่งต้องรอนานถึง 45 นาที! ระหว่างที่รอนี่แหละครับที่เหล่า "เทพ" 3 คน คือ Rob Pike, Ken Thompson (บิดาแห่ง Unix) และ Robert Griesemer มานั่งจับเข่าคุยกันว่า "เราควรมีภาษาใหม่ที่เร็วกว่านี้"

2. ปรัชญา Less is More (ตัดเพื่อโต) ทีมออกแบบ Go ใจเด็ดมากครับ เขาเลือกที่จะตัดสิ่งที่ภาษาอื่นมองว่า "ต้องมี" ทิ้งไปเกือบหมด เช่น:
ไม่มี Inheritance (การสืบทอด)
ไม่มี Method Overloading
ไม่มี Class แบบเดิมๆ เป้าหมายคือต้องการภาษาที่ "Simple" ที่สุด เพื่อให้ Compile ได้เร็วเหมือน Python แต่รันได้แรงเหมือน C++ และที่สำคัญคือต้องจัดการเรื่อง Concurrency (การทำงานพร้อมกันหลายอย่าง) ได้ง่าย ซึ่งเป็นหัวใจของยุค Multi-core

3. จุดเปลี่ยนสำคัญ: ยุคแห่ง Docker และ Kubernetes รู้ไหมครับว่า Docker ในเวอร์ชัน Prototype จริงๆ เขียนด้วย Python! แต่สุดท้ายผู้สร้างตัดสินใจเปลี่ยนมาใช้ Go เพราะมันสามารถ Compile ออกมาเป็น Static Binary (ไฟล์เดียวจบ รันได้เลยไม่ต้องลง Dependency เพิ่ม) ซึ่งมันตอบโจทย์โลกของ Container ที่สุด จนทำให้ Go กลายเป็นภาษามาตรฐานของ CNCF ในเวลาต่อมา

4. สงคราม Dependency และดราม่า Generic กว่าจะมาถึงวันนี้ Go ก็ผ่านช่วงมืดมนมาเหมือนกันครับ:
Go Modules: เกิดขึ้นมาเพื่อจบปัญหาการจัดการเวอร์ชันของ Library ที่เคยเละเทะมาก่อนปี 2018
Generics: เป็นดราม่าที่คนเรียกร้องมาเป็น 10 ปี แต่ทีมสร้างเพิ่งจะยอมใส่มาให้ในเวอร์ชัน 1.18 เมื่อไม่กี่ปีมานี้ เพราะต้องหาวิธีที่ใส่มาแล้ว "ไม่ทำให้ประสิทธิภาพลดลง"

สรุปส่งท้าย: เสน่ห์ของ Go ไม่ใช่ความซับซ้อน แต่คือความ "พอดี" ที่แก้ปัญหาได้ตรงจุด ทั้งเรื่อง Microservices, Blockchain หรือ Cloud Infrastructure ถ้าใครอยากเป็น Developer สาย Production จริงๆ ภาษานี้คือใบเบิกทางที่คุ้มค่าแก่การลงทุนเวลามากครับ



ที่มาข้อมูล: ผมสรุปเนื้อหามาจากคลิป "เปิดประวัติภาษา Go ใน 7 นาที" ของช่อง Superdev Academy ครับ ลองไปตามดูตัวเต็มกันได้ที่นี่ครับ:

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