Technology

รู้จักกับภาษา Go – ภาษาที่ Google สร้างขึ้นมาเพื่อแก้ปัญหาความช้าและซับซ้อนของการพัฒนา Software

รู้จักกับภาษา Go ว่าทำไม Google ถึงต้องสร้างภาษา Go ขึ้นมา? วันนี้ Skooldio จะพาเรามาหาคำตอบกัน

บริษัท Google ในปี 2007

ย้อนกลับไปในสมัยก่อนปี 2007 ในยุคสมัยที่ภาษาหลักที่นิยมในการทำระบบนั้นเป็น C++ , Java, Python ซึ่งที่ Google เองก็มี Server ที่พัฒนาด้วยโค้ดนับล้านบรรทัด ซึ่งส่วนใหญ่ก็เป็นโค้ดภาษา C++ และรองลงมาเป็น Java กับ Python ด้วยเช่นกัน ประกอบกับนักพัฒนาที่ Google นับพันที่ต้องคอยพัฒนาโค้ดเหล่านี้ โค้ดที่ถูกรันบนเครื่อง Server จำนวนมหาศาลนับไม่ถ้วน

https://www.pexels.com/photo/iphone-smartphone-app-i-os-5417844/

ปัญหาความช้าในการพัฒนา 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 นั้นก็จะช้าลงอย่างเห็นได้ชัด

https://www.pexels.com/photo/dell-motherboard-and-central-processing-unit-1432675/

การจัดการ Distributed Systems ที่ซับซ้อน

ซึ่งก็ยังไม่นับรวมเรื่องของการจัดการระบบ Distributed Systems ที่ต้องมีระบบในการจัดการและประสานการทำงานระหว่างเครื่อง server จำนวนมากให้สามารถทำงานร่วมกันได้ดี และมีประสิทธิภาพ ซึ่งถือเป็นโจทย์ทางด้านเทคโนโลยีที่ไม่ใช่เรื่องง่ายๆ เลยในการพัฒนา ยิ่งโดยเฉพาะกับความสามารถของภาษาที่มีอยู่อย่าง C++ หรือ Java
.
ดังนั้น มันจึงถึงเวลาที่ต้องมีอะไรสักอย่างที่เข้ามาเป็นตอบโจทย์ปัญหาเหล่านี้ที่ Google
.
และสิ่งนั้นก็คือภาษา Go นั่นเอง

จุดกำเนิดภาษา Go

ภาษา Go ถูกสร้างขึ้นมาในปี 2007 และ ถูกออกแบบมาเพื่อตอบโจทย์ปัญหาทางด้านความเร็ว ด้านความง่ายการพัฒนาและด้านการทำงานของซอฟต์แวร์ และตัวภาษาเองนั้นก็มีความเรียบง่ายทำให้สามารถเรียนรู้ได้เร็ว และโค้ดอ่านได้ง่าย เข้าใจง่าย โดยเน้นความ simplicity ของภาษาเป็นหนึ่งในหัวใจหลักของการออกแบบ Go

https://github.com/golang-samples/gopher-vector https://commons.wikimedia.org/wiki/File:Go_Logo_Blue.svg

ความสามารถหลักของภาษา Go

  1. เป็น Static Type Compiled Language ทำให้มี Type Safety ในการเขียนโปรแกรม
  2. สามารถ Compile & Build ได้อย่างรวดเร็ว เพราะภาษาออกแบบมาโดย Optimize ในเรื่องนี้โดยเฉพาะ
  3. มี Performance ที่สูง สามารถทำงานได้เร็วกว่าหรือใกล้เคียงกับภาษา Java เลยทีเดียว
  4. ทำ Concurrency ได้ดี ด้วย Goroutines และ Channel ที่สามารถทำ Multi Threading ได้ง่ายๆ
  5. ภาษามีความ 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

You may also like

Progressive Web App คืออะไร
Technology

Progressive Web Apps คืออะไร?

แค่เขียน Apps อย่างเดียวคงไม่พอ! เมื่อ Users เลือกดาวน์โหลด Apps เท่าที่จำเป็นเพื่อประหยัดพื้นที่ใช้งาน จากสถิติการใช้งานของ Users ที่ “ไม่ตัดสินใจติดตั้ง Apps” เพราะขั้นตอนที่ยุ่งยากและเลือกติดตั้งเฉพาะ Apps ...
Data

Apache Airflow คืออะไร แล้วทำไมองค์กรชั้นนำส่วนใหญ่ถึงเลือกใช้

Apache Airflow คือ 1 ใน Workflow Management ที่ได้รับความนิยม และองค์กรชั้นนำระดับโลกหลายๆ องค์กรเลือกใช้ โดยเฉพาะอย่างยิ่งในการสร้าง Data Pipelines เพื่อจัดการกับข้อมูลจำนวนมหาศาล ส่วนหนึ่งเพราะองค์กรต่าง ...

More in:Technology

8 เหตุผลทำไมควรเขียน Scala Technology

8 เหตุผลที่ Dev ควรลองเขียนภาษา Scala ตั้งแต่ตอนนี้

เราเคยเกริ่นถึงภาษา Scala ไปบ้างแล้วจากบทความ ภาษา Scala มีจุดเด่นอะไร? ทำไมกำลังมาแรงในสาย Developer และ Data Engineer แต่ในกลุ่มนักพัฒนาหลายคนยังสงสัยว่าภาษา Scala มีความเหมาะไปใช้ในงานแบบไหน? ทำไมถึงต้องหันมาศึกษา ...
ภาษา Scala คืออะไร Technology

ภาษา Scala มีจุดเด่นอะไร? ทำไมกำลังมาแรงในสาย Developer และ Data Engineer

Scala คือ ภาษา Programming ที่กำลังมาแรงและเริ่มมีความนิยมใช้กันขึ้นเรื่อย ๆ จุดเริ่มต้นภาษา Scala เรียกได้ว่าเป็นลูกอีกคนหนึ่งของภาษา Java เช่นเดียวกับภาษา Kotlin ที่พัฒนาต่อยอดมาเพื่อแก้ไขข้อบกพร่องบางอย่างของภาษา Java ในจุดประสงค์ที่แตกต่างกัน ...
Software Architecture Technology

3 Software Architecture Design ที่นิยมใช้พัฒนาระบบซอฟต์แวร์ขนาดใหญ่

ในการออกแบบซอฟต์แวร์ขนาดใหญ่ในองค์กร มักจะมีการทำงานร่วมกันโดยคนจำนวนมาก หากเราต่างคนต่างเขียนซอฟต์แวร์ไปในทางที่ตัวเองเห็นว่าดี ซอฟต์แวร์ที่แต่ละคนทำก็อาจจะทำงานร่วมกันไม่ได้หรือมีปัญหาตอนที่ Integrate เป็น Solution ใหญ่ ดังนั้น การทำซอฟต์แวร์ในระดับนั้นจึงจำเป็นต้องมีการแบ่งสันปันส่วน และมีการออกแบบ Software Architecture เพื่อให้ทำงานร่วมกันได้ดีและมองเห็นภาพรวมไปในทางเดียวกัน ทั้งระหว่างนักพัฒนาในทีมพัฒนากันเอง ...
Technology

สรุปเรื่อง Activity Lifecycle ของการพัฒนา Android app

Android Activity Lifecycle คืออะไร? ในการทำงานของแอปพลิเคชันจริง ๆ แล้วไม่ได้ทำงานเพียงแค่เฉพาะเวลาที่ผู้ใช้งานเปิดขึ้นมาบนหน้าจอเท่านั้น แต่ยังคงทำงานบางอย่างในขณะที่แอปพลิเคชันถูกย่อ หรือแม้กระทั่งตอนที่ผู้ใช้เปลี่ยนไปใช้แอปพลิเคชันอื่นอยู่ ซึ่งจริง ๆ แล้ว Android สามารถออกแบบกำหนดให้แอปพลิเคชันทำงานในสถานะต่าง ๆ ...

Comments are closed.