กูเกิลเผยรายละเอียดผ่าน Google Security Blog ถึงการเปลี่ยนโค้ดเฟิร์มแวร์ Android จากของเดิมที่เป็น C/C++ มาเป็น Rust เพื่ออาศัยจุดเด่นเรื่องความปลอดภัยหน่วยความจำ (memory-safe) ที่ระดับภาษา
กูเกิลเริ่มใช้ Rust ใน Android มาตั้งแต่ปี 2021 และได้ผลเป็นอย่างดี กรณีนี้ กูเกิลบอกว่าต้องการโชว์ให้เห็นว่าการเปลี่ยนโค้ด C/C++ มาเป็น Rust โดยตรงชนิดใช้แทนกันได้เลย (drop-in replacement) เป็นเรื่องที่สามารถทำได้จริงที่ระดับเฟิร์มแวร์
แอปเปิลเปิดตัวภาษา Swift ครั้งแรกในปี 2014 เพื่อเป็นภาษาหลักสำหรับพัฒนาแอพบน iOS และ macOS แทน Objective-C ของเดิม
ปีนี้ถือเป็นการครบรอบ 10 ปีของภาษา Swift ซึ่งในงาน WWDC 2024 สัปดาห์ที่แล้วก็มีการฉลองกันเล็กๆ น้อยๆ ในเรื่องนี้
รายงานอันดับความนิยมของภาษาเขียนโปรแกรมโดย TIOBE ประจำเดือนมิถุนายน 2024 มีการเปลี่ยนแปลงที่สำคัญ โดย C++ ได้รับความนิยมสูงกว่า C เป็นครั้งแรก นับตั้งแต่ TIOBE เริ่มมีการจัดอันดับ โดย C++ ขยับมาเป็นอันดับ 2 ที่คะแนน 10.03% ส่วน C ตกไปอยู่อันดับ 3 ที่ 9.23% และอันดับ 1 ยังเป็น Python ที่ 15.39%
TIOBE บอกว่าที่น่าสนใจคือตั้งแต่จัดอันดับมา C ไม่เคยตกมาอยู่ในอันดับที่ 3 เลย เช่นเดียวกับ C++ ซึ่งไม่เคยขึ้นมาสูงถึงอันดับ 2
อันดับอื่นที่น่าสนใจของเดือนมิถุนายนได้แก่ Go ขึ้นมาเป็นอันดับ 7 เป็นครั้งแรก ส่วน Rust ก็ทำสถิติสูงสุดขึ้นมาเป็นอันดับที่ 17
ที่มา: TIOBE
กูเกิลประกาศบริจาคเงินมูลค่า 1 ล้านดอลลาร์ ให้มูลนิธิ Rust Foundation เพื่อนำไปพัฒนาภาษา Rust ให้ทำงานร่วมกับโค้ดภาษา C++ ได้ดียิ่งขึ้น
กูเกิลนำ Rust มาใช้งานใน Android และผลิตภัณฑ์อื่นๆ มาระยะหนึ่งแล้ว รวมถึงเป็นสปอนเซอร์ร่วมก่อตั้ง Rust Foundation ในปี 2021 แต่ก็ชี้ว่า Rust ยังไม่สามารถทำงานร่วมกับโค้ดเก่าที่เขียนด้วย C++ ได้ทุกกรณี จึงเข้ามาสนับสนุนให้ Rust ทำงานร่วมกับ C++ ผ่านโครงการต่างๆ ของ Rust Foundation ซึ่งทางมูลนิธิก็ตั้งทีม Interop Initiative ขึ้นมารับผิดชอบภารกิจนี้
รายงานดัชนีความนิยมภาษาโปรแกรม TIOBE Index ประจำเดือนกรกฎาคม 2023 มีประเด็นที่น่าสนใจ โดยหลังจาก C++ แซง Java มีความนิยมขึ้นมาเป็นอันดับ 3 แทน ตั้งแต่ปลายปีที่แล้ว แนวโน้มส่วนแบ่งของ C++ นั้นเข้าใกล้อันดับ 2 ภาษา C มากขึ้น ระยะห่างเหลือเพียง 0.76%
ส่วนอันดับอื่นที่ TIOBE พูดถึง JavaScript ขึ้นมาเป็นอันดับ 6 สูงสุดเท่าที่เคยทำได้ เช่นเดียวกับ Matlab, Scratch และ Rust ขึ้นมาอันดับสูงสุดที่ 10, 12 และ 17 ตามลำดับ ขณะที่ COBOL กลับขึ้นมาในอันดับ 20
อันดับ 1-2-3 ได้แก่ Python (13.42%), C (11.56%) และ C++ (10.80%)
ที่มา: TIOBE
รายงานดัชนีความนิยมภาษาโปรแกรม TIOBE Index ประจำเดือนธันวาคม 2022 เกิดความเปลี่ยนแปลงที่น่าสนใจ หลัง Java ความนิยมตกลงไปอยู่อันดับสี่ และ C++ แซงขึ้นมาเป็นอันดับสาม ถือเป็นครั้งแรกในประวัติศาสตร์ TIOBE ที่เริ่มตั้งแต่ปี 2001 ที่ C++ ได้รับความนิยมสูงกว่า Java และถือเป็นครั้งแรกที่ Java หลุด Top 3
แชมป์ยังเป็นของ Python ที่แซงหน้า C ขึ้นมาเป็นอันดับหนึ่งเมื่อปีที่แล้ว ส่วนการเปลี่ยนแปลงอื่นๆ ที่น่าสนใจในรอบเดือนนี้คือ SQL แซง Assembly ขึ้นมาอยู่อันดับ 8, ภาษา Go ไต่จากอันดับ 19 ขึ้นมาอยู่อันดับ 12, ภาษา Swift ร่วงจากอันดับ 10 ลงมาอยู่อันดับ 15
ทีมพัฒนาจากกูเกิลเสนอโครงการภาษา Carbon ภาษาโปรแกรมมิ่งใหม่ที่ตั้งเป้าหมายว่าจะใช้ทดแทนภาษา C++ มุ่งเป้าองค์กรที่มีโครงการภาษา C++ ขนาดใหญ่ และโยกย้ายไปภาษาอื่นได้ยาก โดย Carbon มีเป้าหมายที่จะทำงานร่วมกับ C++ ได้เป็นเนื้อเดียวกัน
โค้ดภาษา Carbon สามารถเรียกโค้ด C++ ได้ และโค้ด C++ ก็เรียกโค้ด Carbon ได้ ในแง่ประสิทธิภาพและการทำงานกับฟีเจอร์ระดับล่างของซีพียูก็ทำได้ระดับเดียวกัน รวมถึงในอนาคตก็จะพัฒนาเครื่องมือที่แปลงโค้ดภาษา C++ เป็น Carbon โดยอัตโนมัติได้ด้วย แม้จะทำงานร่วมกันได้อย่างแนบแน่น แต่ภาษา Carbon ก็จะพยายามสร้างฟีเจอร์ของตัวเอง เช่น พยายามปรับปรุงความปลอดภัยในการในงานหน่วยความจำให้ดีขึ้น
ไมโครซอฟท์โชว์ฟีเจอร์ Hot Reload ตัวใหม่ของ Visual Studio 2022 Preview 2 ที่รองรับทั้งการเขียน .NET และ C++ แบบเนทีฟ
Hot Reload เป็นฟีเจอร์ของ IDE หลายตัวที่ช่วยให้แก้โค้ดแล้วเห็นการเปลี่ยนแปลงทันที ไม่ต้องรอรีสตาร์ตโปรแกรมที่เขียนอีกครั้ง ทำให้จังหวะการทำงานของโปรแกรมเมอร์เร็วขึ้นมาก อย่างไรก็ตาม การทำ Hot Reload ขึ้นกับภาษาและแพลตฟอร์มที่ใช้งานด้วย
ก่อนหน้านี้ Visual Studio รองรับ Hot Reload เฉพาะการเขียน .NET และ XAML สำหรับส่วน UI เท่านั้น รอบนี้ไมโครซอฟท์กลับไปทำการบ้านมาใหม่ ให้ Hot Reload เวอร์ชันใหม่รองรับการเขียนโปรแกรมหลากหลายมากขึ้น ได้แก่
ไมโครซอฟท์มีส่วนขยาย C/C++ ให้กับ Visual Studio Code มานานแล้ว (และเป็นส่วนขยายยอดนิยมอันดับ 2 ของ VS Code รองจาก Python) ล่าสุดไมโครซอฟท์ออกเวอร์ชัน 1.0 ของส่วนขยายตัวนี้สักที
ของใหม่ที่สำคัญในเวอร์ชันนี้คือ รองรับการใช้งานบนลินุกซ์สถาปัตยกรรม ARM/ARM64 ทำให้สามารถใช้ VS Code เขียนแอพ C++ บนอุปกรณ์อย่าง Raspberry Pi ได้แล้ว, เพิ่มตัวปรับแต่งคอนฟิก C++ IntelliSense และตั้งค่าฟอร์แมตของโค้ด C++ แบบเดียวกับ Visual Studio ตัวเต็มได้
กลุ่มมาตรฐาน ISO ลงมติเอกฉันรับรอง C++20 เข้าเป็นมาตรฐาน โดยฟีเจอร์ทั้งหมดได้รับเห็นชอบแล้ว และจะตีพิมพ์เผยแพร่ตัวมาตรฐานเป็นเล่มสมบูรณ์ภายในปลายปีนี้ โดยฟีเจอร์สำคัญ 4 ประการของ C++20 ได้แก่
บริการ AWS Lambda เปิดตัวเมื่อปี 2014 และเป็นผู้บุกเบิกการประมวลผลแบบ serverless ที่ไม่ต้องเปิดเครื่องค้างไว้รอรับคำสั่งตลอดเวลา ก่อนหน้านี้ Lambda รองรับโค้ดภาษา Java, Node.js, C#, Python และเมื่อต้นปีนี้คือ Go
ล่าสุด AWS Lambda ประกาศรองรับการนำเข้ารันไทม์ภาษาใดก็ได้แล้ว (custom runtime) พร้อมทั้งประกาศรองรับภาษาใหม่คือ Ruby, C++ และ Rust ผ่านระบบรันไทม์ใหม่นี้
มาตรฐาน C++ ในช่วงหลังๆ มีพัฒนาการอย่างต่อเนื่องหลายอย่างนับแต่ C++11 เป็นต้นมา แต่หลายครั้งคอมไพลเลอร์ก็รองรับไม่ครบหรือบางฟีเจอร์ก็ใช้งานได้ยาก ตอนนี้กูเกิลเปิดตัวไลบรารี Abseil สำหรับการทำ abstract เพื่อรองรับฟีเจอร์ใหม่ๆ
CERT หน่วยงานแจ้งเตือนช่องโหว่ความปลอดภัยซอฟต์แวร์ภายใต้สถาบันวิศวกรรมซอฟต์แวร์ (Software Engineering Institute - SEI) ประกาศปล่อยมาตรฐานการเขียนโค้ดให้ปลอดภัยสำหรับภาษา C++ ที่รวมกฎ 83 รายการสำหรับการเขียนโค้ดให้ปลอดภัย หลังจากก่อนหน้านี้ทาง CERT เคยปล่อยคู่มือสำหรับ ภาษา C, ภาษาจาวา, ภาษา Perl, และการเขียนแอปบนแอนดรอยด์
กฎบางข้อจะตรงกันหลายภาษาเช่นเช็คอินพุตว่าปิดท้ายสตริงด้วย null เสมอ แต่บางข้อก็จะค่อนข้างเฉพาะเช่นการใช้ lambda ในภาษา C++14
ทุกกฎมีตัวอย่างโค้ดที่มักเขียนผิดให้ แม้จะค่อนข้างยาวแต่ก็อ่านไม่ยากนัก ผู้สนใจน่าลองไล่จากต้นจนจบกัน
ไมโครซอฟท์เปิดซอร์สของแพลตฟอร์ม .NET มาตั้งแต่สองปีที่แล้ว แต่การพอร์ตไปใช้งานบนแพลตฟอร์มใหม่ๆ ก็ยังทำได้ยาก ตอนนี้ทีมงาน .NET ก็ออกมาระบุว่ากำลังทดลองแนวทางใหม่คือการแปลงโค้ด .NET ให้เป็น C++
แนวทางนี้ทำให้กระบวนการคอมไพล์ได้ไฟล์ executatable ของระบบปฎิบัติการโดยตรง ไม่ใช่ไฟล์ที่ต้องรันบนรันไทม์ของ .NET อีกที แม้ว่าจะต้องใช้รันไทม์ในรูปแบบไลบรารีอยู่ก็ตาม
การทดลองนี้ยังอยู่ในขั้นต้น ปัญหาหลายอย่างยังไม่มีทางออกอย่างตกผลึก การแปลงโค้ดยังไม่สมบูรณ์ อย่างไรก็ดีหากการแปลงโค้ดทำได้สำเร็จ โค้ดที่ได้จะสามารถไปรันบนทุกแพลตฟอร์มที่คอมไพล์เลอร์ C++ ไปถึง
หลังจากไมโครซอฟท์ซื้อ MinecraftEDU (คนละส่วนกับตัวเกมหลัก) แล้วเตรียมออก Minecraft: Education Edition เพื่อบุกภาคตลาดการศึกษา
ล่าสุด Jack Schofield จาก ZDNet รายงานว่าตัวเกมจะเขียนขึ้นด้วยภาษา C++ ต่างจากตัวเกมหลักที่เขียนขึ้นด้วยภาษา Java ซึ่งทำให้ม็อดเก่าๆ ใช้งานไม่ได้ และอาจกระทบกับสังคมผู้เล่นเกม ที่เป็นหนึ่งในตัวแปรสำคัญของการประสบความสำเร็จของ Minecraft
การเปลี่ยนมาใช้ภาษา C++ จะช่วยแก้ปัญหาอาการกินสเปคหนักที่เกิดขึ้นในเกมเวอร์ชัน Java และจะรองรับการรันบนหลายแพลตฟอร์ม ตัวเกมจะมีฟีเจอร์อย่างการรองรับโหมดผู้เล่นหลายคนแบบ peer-to-peer ในห้องเรียน และผู้สอนสามารถใส่คำสั่งต่างๆ ได้มากกว่าเดิม
โครงการนำ Clang มาใช้คอมไพล์โค้ดภาษา C++ ของไมโครซอฟท์ มีความก้าวหน้าอย่างจับต้องได้อีกขั้นเมื่อไมโครซอฟท์ได้นำเสนอวิธีการคอมไพล์โค้ดวินโดวส์แอพด้วย Clang ในงาน CPPCon 2015 ที่ผ่านมา และคาดว่าจะเพิ่มวิธีการคอมไพล์นี้ในชุดอัพเดตสำหรับ Visual C++ ที่จะออกมาในเดือนหน้าด้วย
Bjarne Stroustrup บิดาภาษา C++ ร่วมกับ Herb Sutter ออกคู่มือแกนของภาษา C++ เพื่อสนับสนุนให้คนเขียนภาษา C++ ในรูปแบบสมัยใหม่ โดยจะเปิดเป็นโครงการโอเพนซอร์สที่เปิดให้คนอื่นๆ มาดัดแปลงไปเป็นข้อแนะนำในองค์กรได้
นอกจากคำแนะนำในการเขียนโปรแกรมแล้ว โครงการนี้ยังมาพร้อมกับโครงการคู่ขนานอีกสองโครงการ ได้แก่
Avi Kivity นักพัฒนาผู้สร้าง KVM เปิดตัวระบบฐานข้อมูล NoSQL ที่ชื่อว่า ScyllaDB ทำงานเข้ากับฐานข้อมูล Cassandra ผ่าน CQL
ความต่างของ ScyllaDB คือมันพัฒนาด้วยภาษา C++ บนเฟรมเวิร์ค Seastar ขณะที่ Cassandra พัฒนาด้วยจาวา
ในงาน Cassandra Summit ทาง Avi นำเสนอผลการทดสอบประสิทธิภาพของ ScyllaDB เทียบกับ Cassandra แสดงให้เห็นว่าประสิทธิภาพการทำงานดีขึ้นกว่า 8 เท่าตัว
ตอนนี้โครงการอยู่ในสถานะเบต้า และคาดว่าจะปล่อยตัวเต็มได้ภายในเดือนมกราคมนี้
ที่มา - ScyllaDB
Matt Bierner สาธิตการใช้ Template ในภาษา C++ ด้วยการเขียนเกม Tetris ที่ต้องเล่นขณะ "คอมไพล์" เท่านั้นโดยโค้ดที่ได้จะแสดงหน้าจอล่าสุดของเกมออกมา ชื่อว่า Super Template Tetris
ไฟล์เซฟของเกมนี้เป็นไฟล์ header ในภาษา C++ ที่ใช้ template อย่างหนักเพื่อเก็บสถานะล่าสุดของตัวเอง (ดูตัวอย่างไฟล์เริ่มต้นเกมใหม่)
ผู้เล่นจะควบคุมการเคลื่อนไหวของบล็อคด้วยการประกาศ define ให้กับคอมไพล์เลอร์ขณะที่กำลังคอมไพล์โปรแกรม เช่น -D RIGHT เพื่อไปทางขวา และ -D LEFT เพื่อไปทางซ้าย
โค้ดทั้งหมดอยู่บน GitHub ดาวน์โหลดมาเล่นกันได้
เมื่อไม่นานนี้ นายลี เซียนลุง นายกรัฐมนตรีสิงคโปร์ ได้กล่าวปาฐกถาในงาน Founders Forum โดยส่วนหนึ่งของปาฐกถามีเรื่องราวที่ตนเองเขียนโปรแกรมภาษา C++ เพื่อแก้ Sudoku ด้วยตัวเอง
หลังจากนั้นไม่นาน นายลีก็ได้โพสต์ภาพ source code ของโปรแกรมดังกล่าวลงใน Facebook page ของตนเอง พร้อมเสียงตอบรับล้นหลามจากผู้ติดตาม
( ชมภาพ source code ท้ายข่าว )
เขาระบุในโพสต์ว่า โปรแกรมนี้เป็นโปรแกรมง่ายๆ สามารถรันบน DOS ได้ วิธีใช้คือให้ใส่ข้อมูลของกระดาน Sudoku บรรทัดต่อบรรทัด หลังจากนั้นโปรแกรมจะแสดงผลวิธีแก้ Sudoku กระดานนั้นออกมา และหากโปรแกรมเจอมากกว่าหนึ่งวิธี มันก็จะแสดงผลออกมาทั้งหมด พร้อมแสดงผลวิธีการที่โปรแกรมหาคำตอบด้วย!
นายลี เซียนลุง นายกรัฐมนตรีสิงคโปร์ บุตรชายคนโตของนายลี กวนยู กล่าวปาฐกถาในงาน Founders Forum แสดงวิสัยทัศน์ถึงนโยบาย Smart Nation ของสิงคโปร์ แม้เนื้อหาส่วนมากจะพูดถึงภาพรวมของนโยบายไอทีประเทศ แต่ช่วงหนึ่งเขาก็พูดถึงเรื่องส่วนตัว ว่าเขาเคยเพลิดเพลินกับการเขียนโปรแกรม โดยโปรแกรมสุดท้ายที่เขาเขียน คือโปรแกรมแก้ Sudoku ที่เขียนด้วย C++ เขาระบุว่าเพราะเขาเขียน C++ จึงค่อนข้างล้าสมัยแล้ว และลูกชายทั้งสองคนของเขาเรียนด้านไอทีจบจาก MIT แนะนำให้เขาอ่านหนังสือสอนภาษา Haskell เขาคิดว่าจะอ่านมันหลังจากเกษียณอายุแล้ว
มาตรฐาน C++ รุ่นใหม่ผ่านการโหวตไปแล้วเมื่อวันศุกร์ที่ผ่านมา ทำให้มาตรฐาน C++14 สามารถออกได้ตามกำหนด ต่างจาก C++11 ที่เลยกำหนดไปหลายปี (ชื่อเดิมคือ C++0x แต่เลื่อนจนออกมาตรฐานได้ปี 2011)
C++14 เพิ่มส่วนขยายเข้ามาหลายส่วน เช่น การรองรับ Transactional Memory ที่จะทำให้เขียนโปรแกรมมัลติคอร์ได้ง่ายขึ้น, นิยามพฤติกรรมในหลายส่วน, ปรับปรุงประสิทธิภาพการทำงาน
มาตรฐาน C++98 ใช้เวลาห้าปีก่อนจะมีคอมไพล์เลอร์ที่รองรับเต็มรูปแบบตัวแรก ส่วน C++11 ใช้เวลาสองปี
ที่มา - ISO CPP
กูเกิลเปิดโครงการ FlatBuffers สำหรับนักพัฒนาเกมที่ต้องการเซฟไฟล์แบบไบนารี ทำให้สามารถเซฟและอ่านไฟล์ได้จากทั้ง C++ และจาวา รวมถึงสามารถอ่านและเขียนไฟล์ json ได้อีกด้วย
ฟอร์แมต FlatBuffers จะซ้ำซ้อนกับ Protobuf ของกูเกิลเองพอสมควร แต่ FlatBuffer จะใช้พื้นที่น้อยกว่า ความต่างที่ชัดเจนคือ FlatBuffers จะตัดหมายเลขประจำฟิลด์ต่างๆ ออกทำให้ทำงานระหว่างเวอร์ชั่นของ API ไม่ได้ แต่ความได้เปรียบคือ FlatBuffers จะไม่ใช้หน่วยความจำเพิ่มเติมจากขนาดไบนารีที่อ่านขึ้นมา ต่างจากโปรโตคอลอื่นๆ ที่ต้องแตกไบนารีขึ้นมาเสียก่อน
รองรับแพลตฟอร์ม ลินุกซ์, วินโดวส์, OS X, และแอนดรอยด์
นักพัฒนาของ LLVM คู่แข่ง GCC (อ่านรายละเอียดได้ในข่าวเก่า) ได้ประกาศเปิดตัว LLVM 3.3 ที่รองรับภาษา C++11 อย่างเป็นทางการ โดย frontend ของ LLVM ที่ใช้คอมไพล์ภาษา C/C++ ชื่อ Clang จะรองรับ AArch64 (ชื่อในกลุ่ม open-source ของ ARMv8), AMD R600 GPU, S390 และบางส่วนของ IBM System Z โดยนักพัฒนาได้กล่าวว่า LLVM 3.3 นี้เป็น "คอมไพเลอร์ที่รองรับมาตรฐาน C++11 รวมทั้งไลบราลี่สำคัญ ๆ ของ C++11 อย่าง std::regex"
Clang ยังมีเครื่องมือ C++11 migration เพื่อช่วยนักพัฒนาอัพเกรดโค้ดของพวกเขาเพื่อรองรับมาตรฐานใหม่อีกด้วย