Blockdit Logo
Blockdit Logo (Mobile)
สำรวจ
ลงทุน
คำถาม
เข้าสู่ระบบ
มีบัญชีอยู่แล้ว?
เข้าสู่ระบบ
หรือ
ลงทะเบียน
ด.ดล Blog
ยืนยันแล้ว
•
ติดตาม
4 ต.ค. เวลา 02:09 • วิทยาศาสตร์ & เทคโนโลยี
ทำไม Google ถึงต้องสร้างภาษา Go ทั้งที่โลกเราก็มี C++ และ Java อยู่แล้ว?
ลองจินตนาการดูว่าตัวเราเป็นวิศวกรระดับหัวกะทิ นั่งทำงานอยู่ในออฟฟิศของ Google ยักษ์ใหญ่แห่งวงการเทคโนโลยีช่วงกลางยุค 2000s
เรากำลังแก้โค้ด พิมพ์เสร็จปุ๊บก็กดปุ่มคอมไพล์เพื่อทดสอบระบบ แต่อนิจจา สิ่งที่ต้องทำต่อไปคือการนั่งรอ…
รอแล้วรอเล่า รอจนกาแฟเย็นชืด กินเวลาไปถึง 45 นาที หรือบางทีก็เป็นชั่วโมง เพียงเพื่อจะดูว่าไอ้โค้ดบรรทัดเดียวที่เราเพิ่งแก้ไปมันพังมั๊ย
ความจริงที่โคตรจะน่าหงุดหงิดนี้คือสิ่งที่วิศวกรของ Google ต้องเจออยู่ทุกวัน มันเป็นอะไรที่เผาผลาญเวลาชีวิตสุดๆ…
ตอนนั้น Google มีโค้ดเบสที่ใหญ่โตมโหฬารมาก วิศวกรเป็นพันคนต้องสุมหัวทำงานอยู่ในคลังเก็บโค้ดเดียวกัน
เครื่องมือที่มีอยู่ตอนนั้นก็เริ่มจะรับน้ำหนักไม่ไหว พังทลายลงมาทีละนิด ระบบมันพันกันยุ่งเหยิงเป็นใยแมงมุมไปหมด
ปัญหาใหญ่เลยก็คือภาษาโปรแกรมที่ใช้อยู่ อย่าง C++ ที่ว่ากันว่าเร็วแรงทะลุนรก แต่พอโปรเจกต์สเกลใหญ่ การบิลด์ระบบทีนึงก็กินเวลานานมากๆ…
ส่วน Java ก็สูบหน่วยความจำเก่งซะเหลือเกิน ฝั่ง Python ถึงจะเขียนง่ายสบายมือ แต่มันก็ช้าเกินไปถ้าจะเอามาทำระบบโครงสร้างพื้นฐานระดับลึก
ยุคนั้นโปรเซสเซอร์แบบ Multi-core เริ่มกลายเป็นของพื้นฐานที่คอมพิวเตอร์ทุกเครื่องต้องมีแล้ว
แต่ประเด็นคือภาษาโปรแกรมพวกนั้นมันไม่ได้เกิดมาเพื่อยุคนี้ การเขียนโค้ดให้มันทำงานขนานกันเป็นอะไรที่ปวดหัวสุดๆ…
และในจังหวะที่ทุกคนกำลังสิ้นหวังสุดขีด วิศวกรระดับตำนานสามคนก็ก้าวออกมารับบทฮีโร่
Robert Griesemer กอดคอมากับ Rob Pike และ Ken Thompson ชื่อพวกนี้อาจจะไม่ได้แมสในหมู่คนทั่วไป…
แต่บอกเลยว่าในวงการโปรแกรมเมอร์ พวกเขาคือตัวตึงระดับพระกาฬที่สร้างผลงานเขย่าโลกมาแล้วทั้งนั้น
Rob Pike เคยปั้นระบบปฏิบัติการ Unix และ Plan 9 ส่วน Ken Thompson ก็คือผู้ร่วมให้กำเนิด Unix แถมยังออกแบบภาษา B ที่ต่อยอดมาเป็นภาษา C…
ฝั่ง Robert Griesemer ก็เป็นหนึ่งในทีมสร้าง Virtual Machine ของ Java สมัยที่ยังอยู่กับ Sun Microsystems
เทพสามคนนี้รวมพลังกันพร้อมแบคอัพเงินทุนระดับ Google พวกเขากล้าพอที่จะตั้งคำถามที่สั่นสะเทือนวงการ…
จะเป็นยังไงถ้าภาษา C ได้กลับมาเกิดใหม่เพื่อยุคคลาวด์ เร็วกว่า Java เขียนสะอาดตากว่า Python และใช้ง่ายกว่า C++
เป้าหมายไม่ได้มาทำโปรเจกต์วิจัยขำๆ ส่งอาจารย์ แต่พวกเขาจะสร้างอาวุธที่ใช้งานได้จริงในสเกลระดับอภิมหาโปรเจกต์ของ Google
ภารกิจมีแค่อย่างเดียวคือต้องฆ่าความเชื่องช้าที่เป็นตัวสูบพลังงานชีวิตของนักพัฒนาให้สิ้นซาก…
ซุ่มทำกันอยู่ 2 ปีเต็ม จนในที่สุดเดือนพฤศจิกายน 2009 ภาษาโปรแกรมตัวใหม่ก็คลอดออกมาสู่สายตาชาวโลก
มันคือ “Go” ภาษาที่ถูกออกแบบมาให้โคตรจะมินิมอล มีประสิทธิภาพสูงปรี๊ด และเกิดมาเพื่อทุบกำแพงปัญหาเดิมๆ ทิ้งไป
แต่… การจะสร้างภาษาโปรแกรมใหม่จากศูนย์มันไม่ได้ทำกันง่ายๆ เหมือนดีดนิ้ว
ทีมงานเจอปัญหาไก่กับไข่สุดคลาสสิก พวกเขาต้องมีคอมไพเลอร์เพื่อแปลงโค้ดภาษา Go เป็นภาษาเครื่อง…
แต่ตอนนั้นภาษา Go มันยังไม่มีอยู่จริงบนโลก แล้วจะเอาภาษาอะไรมาเขียนตัวคอมไพเลอร์กัน
ทีเด็ดมันอยู่ตรงนี้ Ken Thompson งัดอาวุธลับเก่าเก็บขึ้นมา นั่นคือสถาปัตยกรรมคอมไพเลอร์จาก Plan 9…
เจ้า Plan 9 เป็นระบบปฏิบัติการของ Bell Labs ที่มีชุดคอมไพเลอร์เร็วปรู๊ดปร๊าดและผ่านสมรภูมิรบมาอย่างโชกโชน
แทนที่จะเสียเวลางมสร้างใหม่ตั้งแต่ต้น พวกเขาหยิบยืมโครงสร้างของ Plan 9 มาดัดแปลงซะเลย…
พวกไวยากรณ์ภาษา Assembly หรือรูปแบบการเรียกฟังก์ชัน ก็เอาของ Plan 9 มาปรับใช้ให้เข้ากับ Go
สเตปแรกพวกเขาเริ่มเขียนคอมไพเลอร์ Go ตัวแรกด้วยภาษา C ออกมาเป็นคอมไพเลอร์แบบบ้านๆ แต่ทำงานได้จริง…
มันสามารถอ่านโค้ด Go แล้วพ่นภาษาเครื่องออกมาได้สำเร็จ พอสเตปนี้ผ่านปุ๊บ ความล้ำก็บังเกิด
พวกเขาเอาไอ้คอมไพเลอร์ภาษา C ตัวนั้นแหละ มาคอมไพล์โค้ดของคอมไพเลอร์ตัวใหม่ที่เขียนด้วยภาษา Go ซะเอง
ศัพท์เทคนิคเขาเรียกกระบวนการนี้ว่า Bootstrapping อารมณ์เหมือนสร้างค้อนไม้มาตีเหล็กให้เป็นค้อนเหล็ก พอได้ค้อนเหล็กก็โยนค้อนไม้ทิ้งไป…
จนกระทั่งปี 2015 ในเวอร์ชัน Go 1.5 ชุดเครื่องมือทั้งหมดก็ถูกเขียนด้วย Go แบบร้อยเปอร์เซ็นต์เต็ม
แต่ไม้ตายที่แท้จริงของ Go มันซ่อนอยู่ในส่วนที่เรียกว่า Runtime
ปกติแล้วภาษาโปรแกรมจะมีทางแยกสองทาง ทางนึงคือแปลงเป็น Native code ที่เร็วจี๋แต่จัดการยาก…
อีกทางคือรันผ่าน Virtual Machine แบบ Java ที่ยืดหยุ่นกว่าแต่ก็แอบอืดและกินทรัพยากรเครื่องแบบมูมมาม
ทีมสร้าง Go ขอฉีกกฎเดินเส้นทางที่สาม พวกเขาสร้างรันไทม์ที่ทั้งเป็น Native และฉลาดเป็นกรด…
ไม่ต้องมี Virtual Machine มากั้น ไม่ต้องเสียเวลาแปล Byte code โค้ดของ Go จะวิ่งตรงไปเป็น Assembly ทันที
แต่ความเจ๋งคือมันจะพ่วงเอารันไทม์อัจฉริยะไปคอยจัดการเรื่องวุ่นวายหลังบ้านให้แบบเบ็ดเสร็จ…
รันไทม์ตัวนี้จะบริหารจัดการสิ่งที่เรียกว่า Goroutines ให้วิ่งกระจายไปตามคอร์ต่างๆ ของ CPU เองแบบออโต้
มันจัดการล้างขยะในเมมโมรีให้แบบเนียนๆ แถมยังทำให้การรับส่งข้อมูลผ่านเน็ตเวิร์กไม่เกิดการบล็อกกันเองด้วย…
ทุกอย่างเกิดขึ้นโดยที่คนเขียนโค้ดไม่ต้องมานั่งปวดหัวเขียนคำสั่งจัดการ Thread เลยซักบรรทัดเดียว
สมมติโปรแกรมเราต้องดึงข้อมูลจากเน็ต ถ้าเป็นภาษาอื่นมันอาจจะหยุดรอจนกว่าข้อมูลจะมา…
แต่ Go ไม่ทำแบบนั้น รันไทม์จะพัก Goroutine ตัวนั้นไว้ก่อน แล้วเอาตัวอื่นที่พร้อมมาวิ่งสลับไปพลางๆ
ทุกอย่างเกิดขึ้นเองหลังม่าน ไม่มีคีย์เวิร์ดลึกลับซับซ้อนให้รำคาญสายตา มันเป็นความพริ้วไหวที่หาตัวจับยากสุดๆ…
แถม Go ยังมีสกิล Cross-compile แบบติดตัวมาแต่เกิด นั่งจิบมัทฉะเขียนโค้ดบน Mac ก็กดคอมไพล์ไปรันบน Windows หรือ Linux ได้แบบชิลๆ
ทั้งหมดนี้มันทำให้ Go คอมไพล์ได้เร็วกว่า C++ รันได้เร็วกว่า Java และเอาไปใช้งานจริงได้ง่ายกว่า Python แบบขาดลอย…
ในยุคที่ใครๆ ก็แข่งกันยัดฟีเจอร์ใหม่ๆ ใส่ภาษาตัวเอง แต่ทีมสร้าง Go กลับอินกับความมินิมอลแบบสุดโต่ง
Ken Thompson เล่าว่าเขาเคยเปิดสเปกมาตรฐาน C++11 มาอ่าน พอเห็นความซับซ้อนก็ถึงกับถอนหายใจแล้วพับเก็บทันที…
แนวทางของ Go เลยกลายเป็นการหั่นทุกอย่างที่ไม่จำเป็นทิ้ง เอาแต่แก่นเนื้อๆ เน้นๆ ที่ต้องใช้สร้างระบบสเกลใหญ่
ไม่มีการสืบทอดคลาสแบบซับซ้อน ไม่มีการตั้งชื่อฟังก์ชันซ้ำซ้อน ไม่มีระบบดักจับเออร์เรอร์แบบเดิมๆ…
แม้กระทั่งฟีเจอร์ลูกรักของโปรแกรมเมอร์อย่าง Generics ก็ยังโดนปัดตกไปในตอนแรก
คนนอกมองเข้ามาก็ด่าว่ามักง่าย ขี้เกียจทำ แต่ทีมงานเถียงคอเป็นเอ็นว่านี่แหละคือสุดยอดแห่งความมีวินัย…
ทุกฟีเจอร์ที่จะงอกเข้ามาต้องตอบให้ได้ว่า มันจะมาช่วยกู้โลก หรือจะมาเป็นภาระให้ทีมวิศวกรพันคนที่ต้องสิงอยู่ในโค้ดเดียวกัน
บทสรุปคือ Go มีคีย์เวิร์ดให้จำแค่ 25 คำถ้วน ลองเทียบกับ C++ ที่มีปาเข้าไป 60 กว่าคำดูสิครับ มันคนละเรื่องเลย
แล้วเรื่องการทำงานพร้อมกันหลายๆ อย่าง ภาษาอื่นมักจะเอามาแปะเพิ่มทีหลังจนระบบรวน…
แต่ Go สร้างสิ่งนี้ให้เป็นหัวใจหลักตั้งแต่วันแรก เขาใช้คอนเซปต์ให้โปรแกรมคุยกันผ่านท่อส่งข้อมูลแทนการแย่งกันใช้เมมโมรี
Goroutine ตัวนึงกินแรมแค่ 2 กิโลไบต์ ในขณะที่ Thread ของ Java ซดไปถึง 2 เมกะไบต์…
แปลว่าระบบเซิร์ฟเวอร์สามารถรัน Goroutine ขึ้นมาพร้อมกันเป็นล้านตัวได้แบบขนหน้าแข้งไม่ร่วง
พอ Google ประกาศปล่อย Go เป็นโปรเจกต์โอเพนซอร์ส เสียงตอบรับก็แตกเป็นสองฝั่งทันที
ฝั่งนึงส่ายหน้าบ่นว่าฟีเจอร์น้อยไปป่าว แต่อีกฝั่งคือตาลุกวาวเพราะเจอของดีเข้าให้แล้ว…
มันคือภาษาที่เร็วแรงเหมือน C++ แต่เขียนสบายใจเหมือน Python เอาไปรันที่ไหนก็ไม่ต้องพึ่งพาไฟล์เสริมให้วุ่นวาย
ทีมใน Google เริ่มโละระบบเก่าทิ้งแล้วเอา Go ไปเขียนแทน เวลาคอมไพล์จากเป็นนาทีหดเหลือแค่ไม่กี่วินาที
จนปี 2013 โลกก็เปลี่ยนไปตลอดกาลเมื่อ Docker ถือกำเนิดขึ้นมา…
นี่คือเทคโนโลยีคอนเทนเนอร์ที่ปฏิวัติวงการไอที และที่พีคคือมันถูกเขียนขึ้นด้วยภาษา Go ทั้งกระบิ
กระแสของ Docker มาแรงแซงทางโค้ง ทุกบริษัทในโลกไอทีจู่ๆ ก็มีโค้ด Go วิ่งอยู่ในระบบตัวเองแบบไม่รู้ตัว…
ปีต่อมา Google ก็ทิ้งบอมบ์อีกลูกด้วย Kubernetes ระบบจัดการคอนเทนเนอร์ตัวท็อป ที่แน่นอนว่าเขียนด้วย Go เหมือนกัน
สองคอมโบหมัดฮุกนี้ผลักให้ Go ทะยานขึ้นไปนั่งแท่นเป็นรากฐานสำคัญของยุคคลาวด์แบบไม่มีใครเถียงได้
พวกระบบหลังบ้านดังๆ ไม่ว่าจะเป็น Prometheus, Istio หรือ Terraform ต่างก็พร้อมใจกันหันมาซบไหล่ Go…
บริษัทใหญ่ๆ เลือกใช้มันไม่ใช่เพราะตามแฟชั่น แต่เพราะมันประหยัดค่าเซิร์ฟเวอร์ได้มหาศาล แถมยังเสถียรสุดๆ
แต่ถึงจะดังพลุแตกขนาดไหน มีคำถามนึงที่ตามหลอกหลอนทีมงาน Go มาตลอดสิบกว่าปี…
เมื่อไหร่ Go จะมี Generics ซักที
ทีมงานใจแข็งมาก พวกเขาบอกว่าถ้ายังหาวิธีที่เพอร์เฟกต์ไม่ได้ก็จะไม่ทำเด็ดขาด…
พวกเขาเห็นมาเยอะแล้วว่าการยัดฟีเจอร์มั่วซั่วตามใจคนหมู่มาก มันทำให้ภาษาพังพินาศได้ง่ายขนาดไหน
จนกระทั่งเดือนมีนาคม 2022 ในเวอร์ชัน 1.18 ในที่สุด Generics ก็ถูกปล่อยออกมา…
หลังจากทนเสียงด่ามา 13 ปี ฟีเจอร์นี้ถูกดีไซน์มาอย่างปราณีต ทรงพลังพอจะใช้งานจริงแต่ก็ไม่ซับซ้อนจนปวดหัว
มาดูโลกทุกวันนี้กันบ้าง ในยุคที่ AI กำลังครองเมือง ใครๆ ก็คิดว่า Python คือเดอะแบก…
แต่น้อยคนจะรู้ว่าเบื้องหลังความเทพของ AI มีภาษา Go คอยวิ่งวุ่นจัดการท่อส่งข้อมูลและโครงสร้างพื้นฐานอยู่
จากโปรเจกต์ที่เกิดมาเพื่อแก้รำคาญเวลาคอมไพล์โค้ดในออฟฟิศ ตอนนี้มันกลายเป็นคนคุมคลังข้อมูลและดูแลคิวรันงาน AI ระดับโลก
ทราฟฟิกของ API ที่ถูกเขียนด้วย Go พุ่งทะยานขึ้นเรื่อยๆ ตามเทรนด์ของบริษัทที่แห่กันทำเซอร์วิส AI…
แผนในอนาคตของ Go ก็ยังคงยึดมั่นในสไตล์เดิม ค่อยๆ โต ค่อยๆ อัปเกรด เน้นดึงพลังจากฮาร์ดแวร์ใหม่ๆ ออกมาใช้
กฎเหล็กคือฟีเจอร์ใหม่ต้องทำให้ชีวิตคนเขียนโค้ดสบายขึ้น ห้ามเอาความยากมาสาดใส่หน้าผู้ใช้งานเด็ดขาด…
มันเป็นบทพิสูจน์ที่ชัดเจนเลยว่า การกล้าที่จะตัดสิ่งที่ไม่จำเป็นออกไป มันสามารถสร้างผลลัพธ์ที่เขย่าโลกได้
ความสำเร็จของ Go ไม่ได้มาจากความพยายามจะเป็นเป็ดที่ทำได้ทุกอย่างบนโลกใบนี้…
แต่มันเกิดจากการโฟกัสแก้ปัญหาที่วิศวกรซอฟต์แวร์ต้องเจอจริงๆ ให้ตรงจุดที่สุดต่างหาก
คอมไพล์เร็วปรี๊ด โค้ดอ่านง่าย การทำงานขนานกันที่ลื่นไหล นี่แหละคือสิ่งที่โลกโหยหา
สามทหารเสือผู้สร้างเดิมพันไว้ว่า โปรแกรมเมอร์แค่อยากได้เครื่องมือที่ไม่ทำตัวเกะกะการทำงาน…
ซึ่งวันนี้ผลลัพธ์มันก็ฟ้องชัดเจนแล้วว่าพวกเขาคิดถูก
เวลาเราไถแอป หรือกดเข้าเว็บดังๆ โอกาสสูงมากที่เบื้องหลังหน้าจอเหล่านั้นจะมี Go คอยทำงานอยู่อย่างขยันขันแข็ง
เจ้ามาสคอตหนูตัวสีฟ้าเลยกลายเป็นตัวแทนของปรัชญาที่ว่า ปัญหาโลกแตก ไม่จำเป็นต้องแก้ด้วยวิธีที่ซับซ้อนซ่อนเงื่อนเสมอไป…
เครื่องมือชั้นยอดคือเครื่องมือที่เปิดทางให้เราลุยงานต่อได้ ไม่ใช่เครื่องมือที่ชวนทะเลาะจนหมดแรงไปวันๆ
ซึ่งในโลกอนาคตที่เทคโนโลยีมีแต่จะอีรุงตุงนังมากขึ้นเรื่อยๆ Go จะยังคงยืนหยัดด้วยความเรียบง่ายที่ทำให้มันโคตรจะทรงพลังต่อไป
References : [go,opensource.googleblog,thenewstack,github,medium]
=========================
😴 นอนไม่หลับ? 😴 หลับไม่สนิท?
=========================
ใครที่มีปัญหานอนไม่สนิท ตื่นมาแล้วเพลียเหมือนผมบ้างครับ ผมอยากแนะนำ Diip CBD ที่มีทั้งแบบกัมมี่และแคปซูล
พอดีผมได้ลองใช้เองมาเพียงแค่อาทิตย์แรก บอกเลยว่าชีวิตเปลี่ยน ปัญหาเรื่องการนอนหมดไปเลยครับ สนใจแอดไลน์ @diipgeek มีผู้เชี่ยวชาญดูแลคอยปรึกษาตลอด 24 ชั่วโมง หรือคลิกลิงก์ใน Comment ได้เลยครับ
The original article appeared here
https://www.tharadhol.com/why-did-google-create-the-go-language/
ติดตามสาระดี ๆ อัพเดททุกวันผ่าน Line OA ด.ดล Blog
คลิกเลย -->
https://lin.ee/aMEkyNA
——————————————––
ติดตาม ด.ดล Blog เพิ่มเติมได้ที่
=========================
Website :
www.tharadhol.com
Blockdit :
www.blockdit.com/tharadhol.blog
Fanpage :
www.facebook.com/tharadhol.blog
Twitter :
www.twitter.com/tharadhol
Instragram :
instragram.com/tharadhol
TikTok :
tiktok.com/@geek.forever
Youtube :
www.youtube.com/c/mrtharadhol
Linkedin :
www.linkedin.com/in/tharadhol
เทคโนโลยี
ความรู้รอบตัว
3 บันทึก
9
1
3
9
1
โฆษณา
ดาวน์โหลดแอปพลิเคชัน
© 2026 Blockdit
เกี่ยวกับ
ช่วยเหลือ
คำถามที่พบบ่อย
นโยบายการโฆษณาและบูสต์โพสต์
นโยบายความเป็นส่วนตัว
แนวทางการใช้แบรนด์ Blockdit
Blockdit เพื่อธุรกิจ
ไทย