Go Language
TIOBE รายงานอันดับภาษาเขียนโปรแกรมยอดนิยมประจำเดือนพฤศจิกายน 2024 ซึ่งวัดจากจำนวนการค้นหาผ่านช่องทางต่าง ๆ ไฮไลท์ของผลการจัดอันดับเดือนนี้คือ Go ที่มีแนวโน้มความนิยมเพิ่มขึ้นมาระยะหนึ่ง อันดับขยับขึ้นมาเป็นที่ 7 สูงสุดที่เคยทำได้
เมื่อ เดือนที่แล้ว TIOBE บอกว่า Rust เป็นภาษาที่ความนิยมเพิ่มขึ้นแบบก้าวกระโดดเมื่อเทียบกับปีก่อน ซึ่งแนวโน้มยังเป็นเหมือนเดิมโดยเดือนพฤศจิกายนอยู่ในอันดับที่ 14
ส่วน 3 อันดับแรกยังเหมือนเดิมคือ Python, C++ และ Java
ที่มา: TIOBE
ภาษา Go ฉลองครบรอบ 15 ปี หลัง เปิดตัวครั้งแรกในเดือนพฤศจิกายน 2009
ในช่วงหลัง ภาษา Go ได้รับความนิยมสูงขึ้นเรื่อยๆ โดยตัวเลขของ Go เองบอกว่ามีผู้ใช้เพิ่มขึ้น 3 เท่าในรอบ 5 ปีหลัง ส่วนอันดับภาษาโปรแกรมยอดนิยมของ TIOBE Index ตอนนี้อยู่อันดับ 7 และยังมีแนวโน้มในขาขึ้นเรื่อยๆ
Russ Cox นักพัฒนาหลักและผู้ร่วมโครงการ Go ตั้งแต่ช่วงเริ่มต้น ประกาศลาออกจากตำแหน่ง Tech Lead ทั้งของโครงการ Go ฝั่งชุมชน และทีมงานพัฒนา Go ในกูเกิลเอง
Cox ร่วมพัฒนา Go มาเกิน 14 ปีแล้ว และรับตำแหน่ง Tech Lead มา 12 ปี หลังจากนี้เขายังคงร่วมโครงการ Go อยู่ แต่ตำแหน่ง Tech Lead จะยกให้ Austin Clements ที่เป็น Tech Lead ของส่วน Go core ที่นับเฉพาะ compiler และ runtime ขณะที่ตำแหน่งเดิมของ Clements จะมี Cherry Mui ขึ้นมาทำหน้าที่แทน
Cox อ้างอิง Guido van Rossum ที่ลาออกจากตำแหน่ง BDFL ของ Python แบบเดียวกัน และการเปิดให้คนอื่นๆ ขึ้นมาแทนเปิดทางให้โครงการเติบโตขึ้น
Go เวอร์ชั่น 1.22 เปลี่ยนโครงสร้างภายในของไลบรารี math/rand เป็นเวอร์ชั่น 2 โดยแกนกลางสำคัญคือการเปลี่ยนอัลกอริทึมจากเดิมที่เคยเป็น linear-feedback shift register แบบง่ายๆ ทำงานได้เร็ว มาเป็นตัวสร้างเลขสุ่มแบบ PCG และ ChaCha8 หลายเดือนหลังปรับปรุงทีมงานก็ออกมาอธิบายแนวคิดเบื้องหลัง
ดัชนีความนิยมภาษาโปรแกรม TIOBE Index รอบเดือนกุมภาพันธ์ 2024 มีการเปลี่ยนแปลงที่น่าสนใจคือภาษา Go มาแรง เข้ามาติดอันดับ Top 10 เป็นครั้งแรก แถมมาทีเดียวกระโดดจากอันดับ 11 ขึ้นมาถึงอันดับ 8 เลยด้วย
ภาษา Go ได้รับความนิยมเพิ่มขึ้นเรื่อยๆ และไต่อันดับต่อเนื่องมาสักพักแล้ว ( อันดับ 13 ในเดือนพฤศจิกายน 2023 , อันดับ 11 ในเดือนมกราคม 2024 ) โดย TIOBE วิเคราะห์ว่าการเข้ามาติด Top 10 รอบนี้น่าจะอยู่ได้ยาวๆ เพราะได้รับความนิยมอย่างแพร่หลายในวงการไอทีแล้ว
โครงการภาษา Go ออกเวอร์ชั่น 1.22 ปรับปรุงย่อยโดยมีความเปลี่ยนแปลงสำคัญคือการแก้ไขระบบ for-loop ให้รองรับการรันตามจำนวนรอบที่ต้องการอย่างเดียวโดยไม่ต้องสร้าง collection อีก แนวทางนี้ทำให้โค้ดภาษา Go ใกล้เคียงกับไพธอนยิ่งขึ้น
ในเวอร์ชั่นนี้ยังมีการแก้ปัญหาตัวแปรใน loop ที่ภาษา Go เคยแชร์ตัวแปรระหว่างรอบการวน loop ให้เป็นตัวแปรเดียวกัน ซึ่งทำให้โปรแกรมเมอร์หลายคนเจอบั๊กโดยไม่ได้ตั้งใจ หลังจากนี้จะทำให้ตัวแปรถูกสร้างใหม่ทุกครั้งที่วน loop แม้พฤติกรรมจะเปลี่ยนไปบ้างแค่คาดว่าจะแทบไม่กระทบแอปพลิเคชั่นส่วนใหญ่ โดยมีเครื่องมือช่วยตรวจสอบ loop ที่ได้รับผลกระทบให้
โครงการ Go รับข้อเสนอ “enhanced ServeMux routing” ที่ปรับปรุง ServeMux
ตัวจัดการเลือกว่าฟังก์ชั่นใดจะเป็นผู้ตอบรีเควส HTTP จากเดิมเลือก path ได้ง่ายๆ เท่านั้น มาเป็นการเลือกตามรูปแบบที่กำหนดได้ละเอียดขึ้น
ปกติแล้วการเลือกฟังก์ชั่นอย่างละเอียดเป็นฟีเจอร์มาตรฐานในเฟรมเวิร์คสำหรับการพัฒนาเว็บแอปพลิเคชั่น ตัวภาษา Go เองก็มีเฟรมเวิร์ค Fiber ที่ได้รับความนิยมค่อนข้างมาก หรือไลบรารีขนาดเล็กกว่า เช่น Gorilla ก็ได้รับความนิยมสูงเช่นกัน การที่ภาษา Go รับฟีเจอร์นี้เข้าไว้ในไลบรารีมาตรฐานเลยทำให้สามารถพัฒนาเว็บแอปพลิเคชั่นง่ายๆ ได้โดยไม่ต้องดึงไลบรารีภายนอกที่อาจจะไม่มีการพัฒนาต่อเนื่อง
กูเกิลประกาศส่งโครงการ ko ที่ใช้สำหรับสร้างอิมเมจคอนเทนเนอร์ (container image builder) สำหรับแอปพลิเคชั่นภาษา Go ใน Kubernetes โดยไม่ต้องใช้ Docker เลย
ภาษา Go ได้รับความนิยมสำหรับแอปพลิเคชั่นบนคลาวด์จำนวนมาก การที่นักพัฒนาสามารถคอมไพล์โปรแกรมใน Kubernetes ได้โดยตรงทำให้สามารถใช้งานกับระบบ CI/CD ได้สะดวกขึ้น
CNCF เองมีโครงการที่ดูแลหลักคือ Kubernetes ที่กูเกิลส่งโครงการเข้าไปแล้วก่อนหน้านี้ การส่งโครงการเข้า CNCF ทำให้องค์กรอื่นๆ สามารถใช้งานได้สะดวกใจยิ่งขึ้น เพราะทั้งโค้ด, ทรัพย์สินทางปัญญาที่เกี่ยวข้อง, และเครื่องหมายการค้าต่างๆ จะดูแลโดย CNCF ที่เป็นองค์กรกลาง
ทีมพัฒนา Go ออกผลสำรวจนักพัฒนา Go Developer Survey 2021 ( ข่าวของปี 2020 ) ผลยังออกมาคล้ายกับการสำรวจของปี 2020
ภาษา Go เตรียมเปลี่ยนฟังก์ชั่น sort จากเดิมใช้ QuickSort มาเป็น pdqsort หรือ pattern-defeating quicksort อัลกอริทึมเรียงลำดับที่ประสิทธิภาพโดยรวมดีขึ้นมากในหลายกรณี แม้ว่ากรณีที่แย่ที่สุดยังเป็น O(n log n)
เช่นเดิมก็ตาม
pdqsort พัฒนาโดย Orson R. L. Peters จากมหาวิทยาลัย Leiden ในเนธอร์แลนด์ เมื่อปี 2017 มีจุดได้เปรียบสำคัญคือยิ่งค่าที่เป็นไปได้ของข้อมูลมีน้อยแม้จำนวนข้อมูลจะมีจำนวนมาก เช่น เรียงเลขนับล้านตัว แต่มีเลขที่เป็นไปได้เพียง 0 ถึง 9 ในกรณีเช่นนี้ pdqsort จะมีประสิทธิภาพสูงมาก และหากโค้ดสำหรับเปรียบเทียบค่าไม่ต้องมี branch ประสิทธิภาพในการรันอัลกอริทึมก็จะสูงขึ้นมาก
ภาษา Go ออกเวอร์ชัน 1.18 มีการเปลี่ยนแปลงสำคัญคือรองรับ generic แล้ว
generic เป็นแนวคิดของโลกโปรแกรมมิ่ง ที่เขียนฟังก์ชันหรืออัลกอริทึมกลาง เพื่อใช้ได้กับตัวแปรไม่ระบุชนิด (เช่น เขียน reverse sort สำหรับ Int, Float, String ด้วยโค้ดชุดเดียวกัน) ถือเป็นฟีเจอร์พื้นฐานในภาษาโปรแกรมสมัยใหม่ เช่น Java, Python, C#, TypeScript, Rust, Swift
- Read more about Go ออกเวอร์ชัน 1.18 รองรับ Generic แล้ว
- 4 comments
- Log in or register to post comments
ชุมชนนักพัฒนาภาษา Go เผยผลสำรวจความเห็นนักพัฒนาประจำปี 2020 ( ข่าวของปี 2019 ) มีผู้ตอบแบบสอบถาม 9,648 คน ลดลงจากปีก่อนหน้าเล็กน้อย ภาพรวมของสถิติยังคล้ายกับของเดิม
บริษัทความปลอดภัยไซเบอร์ Intezer ออกรายงานว่า Go กลายเป็นภาษายอดนิยมของอาชญากรไซเบอร์ โดยมัลแวร์ที่เขียนด้วย Go เติบโตขึ้นถึง 2,000% ภายในเวลาเพียงไม่กี่ปี
มัลแวร์ Go ตัวแรกถูกค้นพบในปี 2012 แต่ก็ใช้เวลาอีกนานกว่าความนิยมจะเพิ่มขึ้น จนมาพุ่งแรงในช่วงไม่กี่ปีที่ผ่านมา ด้วยเหตุผลว่า Go เป็นภาษาที่เขียนง่าย เขียนทีเดียวทำงานได้ข้ามแพลตฟอร์ม ทำให้ผู้สร้างมัลแวร์เริ่มย้ายภาษาจาก C/C++ มาเป็น Go แทน
โครงการ Go ออกรุ่น 1.16 beta 1 ที่มีความเปลี่ยนแปลงสำคัญคือการรองรับ Apple M1 (Apple Silicon) เต็มรูปแบบเมื่อเลือกคอมไพล์ระบบปฎิบัติการเป็น Darwin และสถาปัตยกรรมซีพียูเป็น Arm64 พร้อมกันนี้ก็แยกการคอมไพล์สำหรับ iOS เป็น ios/arm64 แทน
สำหรับฟีเจอร์ภาษา ส่วนหนึ่งที่น่าสนใจคือการรองรับการวางไฟล์ไบนารีไว้ในตัวด้วย directive แบบ //go:embed [ชื่อไฟล์]
ทำให้โค้ดภายในมองเห็นข้อมูลในไฟล์เป็นตัวแปรแบบไบต์อาเรย์โดยไม่ต้องเปิดไฟล์เองอีก อีกไลบรารีที่เพิ่มมาคือ io/fs
สำหรับการเข้าถึงไฟล์แบบอ่านอย่างเดียว
ที่มา - golang.org
Mattermost รายงานถึงช่องโหว่ของไลบรารี encoding/xml
ในภาษา Go ที่พบมาตั้งแต่เดือนสิงหาคมที่ผ่านมา แต่ผลกระทบเป็นวงกว้างมากจนกระทั่งต้องนัดแนะกันออกแพตช์พร้อมๆ กัน
ไมโครซอฟท์ประกาศยก ส่วนขยาย Go Extension ของ Visual Studio Code ให้โครงการ Go (ซึ่งก็คือพนักงานกูเกิล) เป็นผู้ดูแลแทน
VS Code ถือเป็น IDE ยอดนิยมอันดับหนึ่งจากการสำรวจของผู้ใช้ Go และส่วนขยาย Go Extension มียอดดาวน์โหลดมากกว่า 3 ล้านครั้ง
ทีม VS Code บอกว่าร่วมมือกับทีม Go มาสักระยะแล้ว ทั้งการพัฒนา language server ตัวใหม่ให้รองรับ Go และปรับปรุงดีบั๊กเกอร์ Delve ให้ดีขึ้น จึงตัดสินใจยกโค้ดให้ทีมงาน Go ดูแลเพราะน่าจะเหมาะสมที่สุด
ชุมชนโปรแกรมเมอร์ภาษา Go เผยผลสำรวจข้อมูลของนักพัฒนาสาย Go ประจำปี 2019 ซึ่งมีผู้ตอบมา 10,975 คน ทำให้เราเห็นทิศทางของ Go ว่าใครใช้ทำอะไรกันบ้าง
กูเกิลเพิ่งประกาศ App Engine รองรับรันไทม์ Java 11 LTS ไปหมาด ๆ ล่าสุด App Engine ประกาศรองรับภาษาโปรแกรมเวอร์ชันใหม่ๆ อีกชุดใหญ่ดังนี้
Google ประกาศอัพเดต App Engine ใหม่ โดยเพิ่มเมมโมรี่ให้ App Engine ยุคที่สองเป็น 2 เท่าของเดิม, ประกาศให้ Go 1.12 และ PHP 7.3 เข้าสู่สถานะ GA และรองรับ Java 11 ในสถานะเบต้า
เรื่องแรก คือการเพิ่มเมมโมรี่ให้ App Engine สองเท่าจากเดิม คือผู้ใช้จะสามารถโหลดไลบรารีเข้าไปใน App Engine ได้เยอะกว่าเดิม และการเพิ่มเมมโมรี่นี้ Google เพิ่มให้อัตโนมัติ ฝั่งผู้ใช้ไม่ต้องทำอะไร และไม่เก็บค่าใช้จ่ายเพิ่มเติมด้วย
ส่วนถัดไปคือ Google ประกาศให้รันไทม์สองภาษาบน App Engine คือ Go 1.12 และ PHP 7.3 เข้าสู่สถานะ GA อย่างเป็นทางการ
Google Cloud เปิดตัวรันไทม์สำหรับภาษา Go สำหรับการใช้งานบน Cloud Functions บริการคลาวด์แบบ serverless ของ Google เพิ่มเติมจากรันไทม์ Node.js และ Python ในปัจจุบัน
Google ระบุว่า Cloud Functions รองรับภาษา Go เวอร์ชันล่าสุด 1.11 รวมถึงแพคเกจอื่น ๆ ของ Go ผ่าน Go modules ด้วย โดยผู้ใช้เพียงสร้างไฟล์ go.mod ไว้ ซึ่งเมื่อดีพลอยลง Cloud Functions ระบบก็จะติดตั้งแพคเกจที่ระบุไว้ในไฟล์ให้
ตอนนี้ Cloud Functions ได้เริ่มเปิดให้ผู้ใช้ทดสอบรันไทม์ Go 1.11 เวอร์ชันเบต้าแล้ว รายละเอียดเพิ่มเติมอ่านได้จาก Google Cloud Docs
Russ Cox (@ _rsc ) นักพัฒนาโครงการ Go ประกาศข้อเสนอชุด Go 2 สำหรับการปรับปรุงส่วนสำคัญๆ ของภาษา Go ได้แก่การดักความผิดพลาด และการรองรับ Generic
การดักความผิดพลาดจากเดิมที่ภาษา Go ไม่ใช้ exception แต่อาศัยการคืนค่าความผิดพลาดและต้องตรวจสอบทุก statement ทำให้โค้ดค่อนข้างเลอะ การออกแบบใหม่อาศัยคำสำคัญ check และ handle โดย check ไว้ตรวจว่าฟังก์ชั่นที่ตามหลังทำงานผิดพลาดหรือไม่ และ handle ทำหน้าที่เป็นชุดคำสั่งจัดการความผิดพลาดที่เกิดขึ้น
อีกส่วนคือการรองรับ Generics ที่ระบุว่าตัวแปรที่จะถือว่าใช้งานได้ต้องมีหน้าตาเป็นอย่างไรบ้าง เช่น รองรับการเปรียบเทียบค่ากัน หรือสามารถรวมค่าเข้าด้วยกันได้
กูเกิลสร้าง ไลบรารี Go Cloud สำหรับการใช้งานคลาวด์ในซอฟต์แวร์ให้สามารถย้ายค่ายได้ง่ายขึ้น โดยตอนนี้รองรับเฉพาะ Google Cloud และ AWS เท่านั้น ฟีเจอร์ที่รองรับแล้ว ได้แก่ สตอเรจ, ฐานข้อมูล (MySQL), การคอนฟิกรันไทม์, และการรันเซิร์ฟเวอร์
ตอนนี้โครงการยังอยู่ระดับอัลฟ่า แปลว่าอาจจะมีการปรับแก้ API อย่างหนักได้ก่อนออกตัวจริง กูเกิลสาธิตการใช้งาน เช่นการอ่านและเขียนไฟล์ด้วยบริการคลาวด์ที่ API จะต่างกันระหว่างค่ายเพียงแค่ส่วนการเซ็ตอัพเท่านั้น แต่ส่วนกลไกการทำงานอื่นใช้ API เดียวกันไม่ว่าจะเป็นคลาวด์เจ้าใด
ภาษา Go ประกาศเปลี่ยนโลโก้จากเดิมใช้ตัว Gopher มาเป็นโลโก้แบบตัวอักษร โลโก้ใหม่เป็นคำว่า GO แบบเอียง รูปร่างเหมือนล้อรถสองล้อเพื่อแสดงถึงความเร็ว และวงกลมสองวงยังแสดงถึงดวงตาของตัว Gopher เดิมไปพร้อมกัน
นอกจากตัวโลโก้ ทางโครงการยังแจกธีมนำเสนอสำหรับ Google Slides สำหรับใช้ในการประชุมภาษา Go ตามงานต่างๆ โดยมีสัญญาอนุญาตเป็น Creative Commons SA 4.0
ที่มา - Go Blog
AWS ประกาศรองรับภาษา Go เป็นทางการสำหรับการพัฒนา Lambda เพิ่มทางเลือกสำหรับนักพัฒนาที่เคยชินกับ Go อยู่แล้ว
การพัฒนาหลักๆ คือการสร้างฟังก์ชั่นที่รับอาร์กิวเมนต์ 0-2 ตัว (ค่าแรกที่รับคือ context.Context) และคืนค่า 0-2 ค่า (ค่าสุดท้ายที่คืนคือ error) ไลบรารี aws-lambda-go รองรับการแปลงค่าระหว่าง Go และ json ให้
เมื่อปลายปีที่แล้ว เพิ่งครบรอบ 8 ปีภาษา Go โดยโครงการจำนวนมากที่ใช้ Go เป็นโครงสร้างสำหรับคลาวด์ เช่น Docker/Moby หรือ Kubernetes การใช้งาน Go ใน AWS Lambda คงทำให้คนทำงานกับคลาวด์อยู่แล้วสะดวกขึ้น
ที่มา - AWS
- Read more about AWS Lambda รองรับภาษา Go แล้ว
- Log in or register to post comments
กูเกิลเปิดตัวภาษา Go มาตั้งแต่ 8 ปีที่แล้ว จากการรวมตัวทีมงานมือเก๋า เช่น Rob Pike, Ken Thompson, Russ Cox, และ Robert Griesemer วันนี้เมื่อครบรอบ 8 ปีทางโครงการก็ประกาศฉลองความสำเร็จของโครงการที่ทำได้ในเวลาอันสั้น
นับตั้งแต่เปิดตัว 8 ปีที่แล้ว ภาษา Go ได้รับความสนใจสูงขึ้นอย่างรวดเร็ว ค่าดัชนีความสนใจตาม Google Trends แสดงให้เห็นว่าอัตราความสนใจยังเติบโตแบบ exponential โดยตอนนี้มันเป็นภาษาที่ได้รับความนิยมอันดับ 9 ใน GitHub แซงหน้าภาษา C เป็นภาษาที่นักพัฒนาชอบเป็นอันดับ 5 จากการสำรวจของ StackOverflow
- Read more about ครบรอบ 8 ปีภาษา Go ภาษาแห่งคลาวด์
- 3 comments
- Log in or register to post comments