รู้จักกับภาษา Go ว่าทำไม Google ถึงต้องสร้างภาษา Go ขึ้นมา? วันนี้ Skooldio จะพาเรามาหาคำตอบกัน
บริษัท Google ในปี 2007
ย้อนกลับไปในสมัยก่อนปี 2007 ในยุคสมัยที่ภาษาหลักที่นิยมในการทำระบบนั้นเป็น C++ , Java, Python ซึ่งที่ Google เองก็มี Server ที่พัฒนาด้วยโค้ดนับล้านบรรทัด ซึ่งส่วนใหญ่ก็เป็นโค้ดภาษา C++ และรองลงมาเป็น Java กับ Python ด้วยเช่นกัน ประกอบกับนักพัฒนาที่ Google นับพันที่ต้องคอยพัฒนาโค้ดเหล่านี้ โค้ดที่ถูกรันบนเครื่อง Server จำนวนมหาศาลนับไม่ถ้วน
ปัญหาความช้าในการพัฒนา Software
หนึ่งในต้นตอหลักของปัญหาความช้าของการพัฒนา Software ที่ Google นั้นก็คือระยะเวลาที่ใช้ในการ Compile Code และ Build Dependenciesต่างๆ ของ Program ซึ่งทั้งภาษา C++ และ Java (ซึ่งเป็นโค้ดส่วนใหญ่ของ Google) นั้นใช้เวลานานมากในการ Compile และ Build จึงทำให้ความเร็วในการพัฒนา Software ที่ Google นั้นช้าลงไปมาก เพราะต้องมีการรอการ Compile และ Build อันยาวนาน
ปัญหา Productivity และ Maintainability
อีกปัญหาที่สำคัญไม่แพ้กันก็คือเรื่อง Productivity ของนักพัฒนาซอฟต์แวร์ ที่ต้องมีการทำงานร่วมกันเป็นทีมบน Code Base ตัวเดียวกัน ซึ่งถึงแม้ว่าแต่ละคนจะใช้ภาษา C++ หรือ Java ในการพัฒนาเหมือนกัน แต่ว่าแต่ละคนนั้นก็มีวิธีการเขียนหรือวิธีการใช้ภาษาที่แตกต่างกัน ทำให้โค้ดสามารถอ่านและเข้าใจได้ยาก ซึ่งก็มีปัญหาเรื่องของการทำ Documentation ระบบด้วยเช่นกัน
Demand ที่เพิ่มขึ้นของ Software และข้อจำกัดของ CPU
จากแนวโน้มที่เกิดขึ้นในวงการ Software ที่เริ่มมีการเติบโต และมีการใช้งานอย่างแพร่หลายมากขึ้นเรื่อยๆ ซึ่งทำให้ตัว Software นั้นจำเป็นต้องมีความสามารถ มี Feature ที่มากขึ้น ซึ่งก็ตามมาด้วยขนาดของตัว Software เองต้องขยายใหญ่ขึ้นตาม แต่ทว่า ความเร็วของ CPU นั้นถึงขีดกำจัดและไม่ได้ขยายขึ้นตามความต้องการที่มากขึ้นนั้น หรือถ้าให้พูดให้ชัด ๆ ก็คือ CPU นั้นไม่ได้เร็วขึ้นแล้ว แต่ว่ามีจำนวนมากขึ้นแทน (ความถี่ GHz ไม่เพิ่ม แต่เพิ่มจำนวน Processor & Core แทน) ซึ่งถ้าหากไม่ได้มีการนำ Core ต่างๆ เหล่านี้มาใช้อย่างมีประสิทธิภาพ ความเร็วของ Software นั้นก็จะช้าลงอย่างเห็นได้ชัด
การจัดการ Distributed Systems ที่ซับซ้อน
ซึ่งก็ยังไม่นับรวมเรื่องของการจัดการระบบ Distributed Systems ที่ต้องมีระบบในการจัดการและประสานการทำงานระหว่างเครื่อง server จำนวนมากให้สามารถทำงานร่วมกันได้ดี และมีประสิทธิภาพ ซึ่งถือเป็นโจทย์ทางด้านเทคโนโลยีที่ไม่ใช่เรื่องง่ายๆ เลยในการพัฒนา ยิ่งโดยเฉพาะกับความสามารถของภาษาที่มีอยู่อย่าง C++ หรือ Java
.
ดังนั้น มันจึงถึงเวลาที่ต้องมีอะไรสักอย่างที่เข้ามาเป็นตอบโจทย์ปัญหาเหล่านี้ที่ Google
.
และสิ่งนั้นก็คือภาษา Go นั่นเอง
จุดกำเนิดภาษา Go
ภาษา Go ถูกสร้างขึ้นมาในปี 2007 และ ถูกออกแบบมาเพื่อตอบโจทย์ปัญหาทางด้านความเร็ว ด้านความง่ายการพัฒนาและด้านการทำงานของซอฟต์แวร์ และตัวภาษาเองนั้นก็มีความเรียบง่ายทำให้สามารถเรียนรู้ได้เร็ว และโค้ดอ่านได้ง่าย เข้าใจง่าย โดยเน้นความ simplicity ของภาษาเป็นหนึ่งในหัวใจหลักของการออกแบบ Go
ความสามารถหลักของภาษา Go
- เป็น Static Type Compiled Language ทำให้มี Type Safety ในการเขียนโปรแกรม
- สามารถ Compile & Build ได้อย่างรวดเร็ว เพราะภาษาออกแบบมาโดย Optimize ในเรื่องนี้โดยเฉพาะ
- มี Performance ที่สูง สามารถทำงานได้เร็วกว่าหรือใกล้เคียงกับภาษา Java เลยทีเดียว
- ทำ Concurrency ได้ดี ด้วย Goroutines และ Channel ที่สามารถทำ Multi Threading ได้ง่ายๆ
- ภาษามีความ Simple เรียนรู้ได้ง่าย อ่านง่าย เข้าใจง่าย Maintain ง่าย เพิ่ม Productivity ของ Developer
บริษัทต่างๆ และการใช้ภาษา Go
ซึ่งภาษา Go นั้นก็ถูกนำเอามาใช้ในการพัฒนาระบบหลังบ้านของ Google อย่างแพร่หลาย และใช้ในโปรเจคดังๆ อย่าง Youtube และ Kubernetes
.
และไม่ใช่เพียงแค่ Google เท่านั้นที่ใช้ภาษา Go แต่บริษัทชื่อดังต่างๆ ระดับโลกก็ยังหันมาใช้ Go ด้วยเช่นกันอย่างเช่นบริษัท Netflix, Twitch, Twitter, Medium หรือแม้กระทั่งเครื่องมือชื่อดังอย่าง Docker และ Kubernetes ก็ต่างใช้ Go เป็นภาษาหลักในการพัฒนา
.
หรืออย่างบริษัทที่อยู่ในประเทศไทยอย่าง Line, Grab, Lineman Wongnai, KBTG ก็ใช้ภาษา Go ด้วยเช่นกัน (และบริษัทอื่นๆ อีกมากมายนับไม่ถ้วน) .
ซึ่งมาจนถึงทุกวันนี้ภาษา Go ก็มีความเติบโตขึ้น และได้รับความนิยมมากขึ้นเรื่อยๆ จนเป็นหนึ่งในภาษาที่กำลังมาแรงมากในยุคนี้ที่สุดภาษาหนึ่ง
เรียนรู้เกี่ยวกับภาษา Go เพิ่มเติม
สำหรับผู้ที่อยากฝึกเขียน Go หรืออยากเป็น Go Developer มืออาชีพ ตอนนี้ทาง Skooldio ได้มีคอร์สซีรีส์ Golang Course Series ที่จะสอนตั้งแต่เริ่มต้นการใช้ภาษา Go ไปจนถึงระดับ Advanced และสามารถสร้าง Project จริงของตัวเองออกมาได้ด้วยภาษา Go สมัครเรียนในราคาพิเศษ ได้ที่นี่
References