Go Language

Tags:
Node Thumbnail

Go เวอร์ชั่น 1.22 เปลี่ยนโครงสร้างภายในของไลบรารี math/rand เป็นเวอร์ชั่น 2 โดยแกนกลางสำคัญคือการเปลี่ยนอัลกอริทึมจากเดิมที่เคยเป็น linear-feedback shift register แบบง่ายๆ ทำงานได้เร็ว มาเป็นตัวสร้างเลขสุ่มแบบ PCG และ ChaCha8 หลายเดือนหลังปรับปรุงทีมงานก็ออกมาอธิบายแนวคิดเบื้องหลัง

Tags:
Node Thumbnail

ดัชนีความนิยมภาษาโปรแกรม TIOBE Index รอบเดือนกุมภาพันธ์ 2024 มีการเปลี่ยนแปลงที่น่าสนใจคือภาษา Go มาแรง เข้ามาติดอันดับ Top 10 เป็นครั้งแรก แถมมาทีเดียวกระโดดจากอันดับ 11 ขึ้นมาถึงอันดับ 8 เลยด้วย

ภาษา Go ได้รับความนิยมเพิ่มขึ้นเรื่อยๆ และไต่อันดับต่อเนื่องมาสักพักแล้ว (อันดับ 13 ในเดือนพฤศจิกายน 2023, อันดับ 11 ในเดือนมกราคม 2024) โดย TIOBE วิเคราะห์ว่าการเข้ามาติด Top 10 รอบนี้น่าจะอยู่ได้ยาวๆ เพราะได้รับความนิยมอย่างแพร่หลายในวงการไอทีแล้ว

Tags:
Topics: 
Node Thumbnail

โครงการภาษา Go ออกเวอร์ชั่น 1.22 ปรับปรุงย่อยโดยมีความเปลี่ยนแปลงสำคัญคือการแก้ไขระบบ for-loop ให้รองรับการรันตามจำนวนรอบที่ต้องการอย่างเดียวโดยไม่ต้องสร้าง collection อีก แนวทางนี้ทำให้โค้ดภาษา Go ใกล้เคียงกับไพธอนยิ่งขึ้น

ในเวอร์ชั่นนี้ยังมีการแก้ปัญหาตัวแปรใน loop ที่ภาษา Go เคยแชร์ตัวแปรระหว่างรอบการวน loop ให้เป็นตัวแปรเดียวกัน ซึ่งทำให้โปรแกรมเมอร์หลายคนเจอบั๊กโดยไม่ได้ตั้งใจ หลังจากนี้จะทำให้ตัวแปรถูกสร้างใหม่ทุกครั้งที่วน loop แม้พฤติกรรมจะเปลี่ยนไปบ้างแค่คาดว่าจะแทบไม่กระทบแอปพลิเคชั่นส่วนใหญ่ โดยมีเครื่องมือช่วยตรวจสอบ loop ที่ได้รับผลกระทบให้

Tags:
Topics: 
Node Thumbnail

โครงการ Go รับข้อเสนอ “enhanced ServeMux routing” ที่ปรับปรุง ServeMux ตัวจัดการเลือกว่าฟังก์ชั่นใดจะเป็นผู้ตอบรีเควส HTTP จากเดิมเลือก path ได้ง่ายๆ เท่านั้น มาเป็นการเลือกตามรูปแบบที่กำหนดได้ละเอียดขึ้น

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

Tags:
Node Thumbnail

กูเกิลประกาศส่งโครงการ ko ที่ใช้สำหรับสร้างอิมเมจคอนเทนเนอร์ (container image builder) สำหรับแอปพลิเคชั่นภาษา Go ใน Kubernetes โดยไม่ต้องใช้ Docker เลย

ภาษา Go ได้รับความนิยมสำหรับแอปพลิเคชั่นบนคลาวด์จำนวนมาก การที่นักพัฒนาสามารถคอมไพล์โปรแกรมใน Kubernetes ได้โดยตรงทำให้สามารถใช้งานกับระบบ CI/CD ได้สะดวกขึ้น

CNCF เองมีโครงการที่ดูแลหลักคือ Kubernetes ที่กูเกิลส่งโครงการเข้าไปแล้วก่อนหน้านี้ การส่งโครงการเข้า CNCF ทำให้องค์กรอื่นๆ สามารถใช้งานได้สะดวกใจยิ่งขึ้น เพราะทั้งโค้ด, ทรัพย์สินทางปัญญาที่เกี่ยวข้อง, และเครื่องหมายการค้าต่างๆ จะดูแลโดย CNCF ที่เป็นองค์กรกลาง

Tags:
Node Thumbnail

ภาษา Go เตรียมเปลี่ยนฟังก์ชั่น sort จากเดิมใช้ QuickSort มาเป็น pdqsort หรือ pattern-defeating quicksort อัลกอริทึมเรียงลำดับที่ประสิทธิภาพโดยรวมดีขึ้นมากในหลายกรณี แม้ว่ากรณีที่แย่ที่สุดยังเป็น O(n log n) เช่นเดิมก็ตาม

pdqsort พัฒนาโดย Orson R. L. Peters จากมหาวิทยาลัย Leiden ในเนธอร์แลนด์เมื่อปี 2017 มีจุดได้เปรียบสำคัญคือยิ่งค่าที่เป็นไปได้ของข้อมูลมีน้อยแม้จำนวนข้อมูลจะมีจำนวนมาก เช่น เรียงเลขนับล้านตัว แต่มีเลขที่เป็นไปได้เพียง 0 ถึง 9 ในกรณีเช่นนี้ pdqsort จะมีประสิทธิภาพสูงมาก และหากโค้ดสำหรับเปรียบเทียบค่าไม่ต้องมี branch ประสิทธิภาพในการรันอัลกอริทึมก็จะสูงขึ้นมาก

Tags:
Topics: 
Node Thumbnail

ภาษา Go ออกเวอร์ชัน 1.18 มีการเปลี่ยนแปลงสำคัญคือรองรับ generic แล้ว

generic เป็นแนวคิดของโลกโปรแกรมมิ่ง ที่เขียนฟังก์ชันหรืออัลกอริทึมกลาง เพื่อใช้ได้กับตัวแปรไม่ระบุชนิด (เช่น เขียน reverse sort สำหรับ Int, Float, String ด้วยโค้ดชุดเดียวกัน) ถือเป็นฟีเจอร์พื้นฐานในภาษาโปรแกรมสมัยใหม่ เช่น Java, Python, C#, TypeScript, Rust, Swift

Tags:
Node Thumbnail

ชุมชนนักพัฒนาภาษา Go เผยผลสำรวจความเห็นนักพัฒนาประจำปี 2020 (ข่าวของปี 2019) มีผู้ตอบแบบสอบถาม 9,648 คน ลดลงจากปีก่อนหน้าเล็กน้อย ภาพรวมของสถิติยังคล้ายกับของเดิม

Tags:
Node Thumbnail

บริษัทความปลอดภัยไซเบอร์ Intezer ออกรายงานว่า Go กลายเป็นภาษายอดนิยมของอาชญากรไซเบอร์ โดยมัลแวร์ที่เขียนด้วย Go เติบโตขึ้นถึง 2,000% ภายในเวลาเพียงไม่กี่ปี

มัลแวร์ Go ตัวแรกถูกค้นพบในปี 2012 แต่ก็ใช้เวลาอีกนานกว่าความนิยมจะเพิ่มขึ้น จนมาพุ่งแรงในช่วงไม่กี่ปีที่ผ่านมา ด้วยเหตุผลว่า Go เป็นภาษาที่เขียนง่าย เขียนทีเดียวทำงานได้ข้ามแพลตฟอร์ม ทำให้ผู้สร้างมัลแวร์เริ่มย้ายภาษาจาก C/C++ มาเป็น Go แทน

Tags:
Node Thumbnail

โครงการ Go ออกรุ่น 1.16 beta 1 ที่มีความเปลี่ยนแปลงสำคัญคือการรองรับ Apple M1 (Apple Silicon) เต็มรูปแบบเมื่อเลือกคอมไพล์ระบบปฎิบัติการเป็น Darwin และสถาปัตยกรรมซีพียูเป็น Arm64 พร้อมกันนี้ก็แยกการคอมไพล์สำหรับ iOS เป็น ios/arm64 แทน

สำหรับฟีเจอร์ภาษา ส่วนหนึ่งที่น่าสนใจคือการรองรับการวางไฟล์ไบนารีไว้ในตัวด้วย directive แบบ //go:embed [ชื่อไฟล์] ทำให้โค้ดภายในมองเห็นข้อมูลในไฟล์เป็นตัวแปรแบบไบต์อาเรย์โดยไม่ต้องเปิดไฟล์เองอีก อีกไลบรารีที่เพิ่มมาคือ io/fs สำหรับการเข้าถึงไฟล์แบบอ่านอย่างเดียว

ที่มา - golang.org

Tags:
Topics: 
Node Thumbnail

Mattermost รายงานถึงช่องโหว่ของไลบรารี encoding/xml ในภาษา Go ที่พบมาตั้งแต่เดือนสิงหาคมที่ผ่านมา แต่ผลกระทบเป็นวงกว้างมากจนกระทั่งต้องนัดแนะกันออกแพตช์พร้อมๆ กัน

Tags:
Node Thumbnail

ไมโครซอฟท์ประกาศยกส่วนขยาย Go Extension ของ Visual Studio Code ให้โครงการ Go (ซึ่งก็คือพนักงานกูเกิล) เป็นผู้ดูแลแทน

VS Code ถือเป็น IDE ยอดนิยมอันดับหนึ่งจากการสำรวจของผู้ใช้ Go และส่วนขยาย Go Extension มียอดดาวน์โหลดมากกว่า 3 ล้านครั้ง

ทีม VS Code บอกว่าร่วมมือกับทีม Go มาสักระยะแล้ว ทั้งการพัฒนา language server ตัวใหม่ให้รองรับ Go และปรับปรุงดีบั๊กเกอร์ Delve ให้ดีขึ้น จึงตัดสินใจยกโค้ดให้ทีมงาน Go ดูแลเพราะน่าจะเหมาะสมที่สุด

Tags:
Node Thumbnail

ชุมชนโปรแกรมเมอร์ภาษา Go เผยผลสำรวจข้อมูลของนักพัฒนาสาย Go ประจำปี 2019 ซึ่งมีผู้ตอบมา 10,975 คน ทำให้เราเห็นทิศทางของ Go ว่าใครใช้ทำอะไรกันบ้าง

Tags:
Node Thumbnail

กูเกิลเพิ่งประกาศ App Engine รองรับรันไทม์ Java 11 LTS ไปหมาด ๆ ล่าสุด App Engine ประกาศรองรับภาษาโปรแกรมเวอร์ชันใหม่ๆ อีกชุดใหญ่ดังนี้

Tags:
Node Thumbnail

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 อย่างเป็นทางการ

Tags:
Node Thumbnail

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

Tags:
Topics: 
Node Thumbnail

Russ Cox (@_rsc) นักพัฒนาโครงการ Go ประกาศข้อเสนอชุด Go 2 สำหรับการปรับปรุงส่วนสำคัญๆ ของภาษา Go ได้แก่การดักความผิดพลาด และการรองรับ Generic

การดักความผิดพลาดจากเดิมที่ภาษา Go ไม่ใช้ exception แต่อาศัยการคืนค่าความผิดพลาดและต้องตรวจสอบทุก statement ทำให้โค้ดค่อนข้างเลอะ การออกแบบใหม่อาศัยคำสำคัญ check และ handle โดย check ไว้ตรวจว่าฟังก์ชั่นที่ตามหลังทำงานผิดพลาดหรือไม่ และ handle ทำหน้าที่เป็นชุดคำสั่งจัดการความผิดพลาดที่เกิดขึ้น

อีกส่วนคือการรองรับ Generics ที่ระบุว่าตัวแปรที่จะถือว่าใช้งานได้ต้องมีหน้าตาเป็นอย่างไรบ้าง เช่น รองรับการเปรียบเทียบค่ากัน หรือสามารถรวมค่าเข้าด้วยกันได้

Tags:
Node Thumbnail

กูเกิลสร้างไลบรารี Go Cloud สำหรับการใช้งานคลาวด์ในซอฟต์แวร์ให้สามารถย้ายค่ายได้ง่ายขึ้น โดยตอนนี้รองรับเฉพาะ Google Cloud และ AWS เท่านั้น ฟีเจอร์ที่รองรับแล้ว ได้แก่ สตอเรจ, ฐานข้อมูล (MySQL), การคอนฟิกรันไทม์, และการรันเซิร์ฟเวอร์

ตอนนี้โครงการยังอยู่ระดับอัลฟ่า แปลว่าอาจจะมีการปรับแก้ API อย่างหนักได้ก่อนออกตัวจริง กูเกิลสาธิตการใช้งาน เช่นการอ่านและเขียนไฟล์ด้วยบริการคลาวด์ที่ API จะต่างกันระหว่างค่ายเพียงแค่ส่วนการเซ็ตอัพเท่านั้น แต่ส่วนกลไกการทำงานอื่นใช้ API เดียวกันไม่ว่าจะเป็นคลาวด์เจ้าใด

Tags:
Topics: 
Node Thumbnail

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

นอกจากตัวโลโก้ ทางโครงการยังแจกธีมนำเสนอสำหรับ Google Slides สำหรับใช้ในการประชุมภาษา Go ตามงานต่างๆ โดยมีสัญญาอนุญาตเป็น Creative Commons SA 4.0

ที่มา - Go Blog

Tags:
Node Thumbnail

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

Tags:
Topics: 
Node Thumbnail

กูเกิลเปิดตัวภาษา Go มาตั้งแต่ 8 ปีที่แล้วจากการรวมตัวทีมงานมือเก๋า เช่น Rob Pike, Ken Thompson, Russ Cox, และ Robert Griesemer วันนี้เมื่อครบรอบ 8 ปีทางโครงการก็ประกาศฉลองความสำเร็จของโครงการที่ทำได้ในเวลาอันสั้น

นับตั้งแต่เปิดตัว 8 ปีที่แล้ว ภาษา Go ได้รับความสนใจสูงขึ้นอย่างรวดเร็ว ค่าดัชนีความสนใจตาม Google Trends แสดงให้เห็นว่าอัตราความสนใจยังเติบโตแบบ exponential โดยตอนนี้มันเป็นภาษาที่ได้รับความนิยมอันดับ 9 ใน GitHub แซงหน้าภาษา C เป็นภาษาที่นักพัฒนาชอบเป็นอันดับ 5 จากการสำรวจของ StackOverflow

Tags:
Node Thumbnail

ดัชนีจัดอันดับภาษาเขียนโปรแกรมยอดนิยม TIOBE รายงานอันดับเดือนกรกฎาคม 2017 โดยมีประเด็นสำคัญคือ Go ขึ้นมาติด 10 อันดับแรกเป็นครั้งแรก โดยอยู่ในอันดับที่ 10 และมีอัตราความนิยมเพิ่มขึ้นสูงสุดใน 20 อันดับแรก

ภาษายอดนิยม 6 อันดับแรกไม่มีการเปลี่ยนแปลง ได้แก่ Java, C, C++, Python, C# และ PHP ตามลำดับ

TIOBE ให้ความเห็นว่าหาก Go ยังรักษาระดับการเติบโตนี้ต่อไปได้เรื่อยๆ ก็เป็นไปได้ว่า Go อาจแซงหน้า JavaScript และ Python ได้ในอนาคต

ที่มา: TIOBE ผ่าน somkiat.cc

Tags:
Node Thumbnail

กูเกิลเปิดตัว TensorFlow ไลบรารีสำหรับเทรนงาน machine learning มาตั้งแต่ปลายปี 2015 และได้รับการยอมรับอย่างกว้างขวาง วันนี้กูเกิลประกาศออก TensorFlow 1.0 ในงานสัมมนา TensorFlow Developer Summit แล้ว

ของใหม่ใน TensorFlow 1.0 ได้แก่

Tags:
Node Thumbnail

กูเกิลเปิดตัวโครงการ Grumpy ตัวแปลงโค้ดภาษา Python เป็นภาษา Go แล้วรันได้ในตัว โดยเป้าหมายของโครงการคือโค้ดที่เป็นภาษา Python ล้วนทั้งหมดจะสามารถรันบน Grumpy ได้ทันที

Grumpy เกิดจากความต้องการของกูเกิลที่รันโค้ด Python จำนวนมาก แต่โค้ดเหล่านั้นกลับไม่สามารถกระจายโหลดไปตามจำนวนเธรดได้ดีพอ จากข้อจำกัด global interpreter lock (GIL) ที่เป็นข้อจำกัดของ Python มาเป็นเวลานาน ทำให้บริการที่ใช้ Python มากๆ เช่น YouTube มีปัญหาไม่สามารถขยายระบบได้ดีนัก

โค้ดที่เขียนสำหรับ Grumpy โดยเฉพาะจะสามารถ import โมดูลของภาษา Go มาใช้งานได้ด้วย เช่น การเรียกโมดูล net/http

Pages