TIOBE Software ประกาศผล TIOBE Index ประจำเดือนมกราคม 2024 โดยภาษา C# เป็นภาษาโปรแกรมแห่งปี 2023 ซึ่งถือเป็นครั้งแรกในประวัติศาสตร์ของดัชนี TIOBE ที่ให้คะแนนความนิยมของภาษาการเขียนโปรแกรมทุกเดือน
C# เป็นภาษาโปรแกรมโอเพนซอร์สข้ามแพลตฟอร์มที่ทันสมัยสำหรับ .NET และเป็นภาษา 10 อันดับแรกบนดัชนี TIOBE มานานกว่า 2 ทศวรรษ ซึ่งนักพัฒนาสามารถเรียนรู้ฟรี ใช้ได้ฟรี มีการพัฒนาอย่างต่อเนื่อง และได้รับความนิยมมากขึ้นเรื่อย ๆ ในการพัฒนาแบ็คเอนด์เว็บแอปและเกมของ Unity โดยล่าสุด C# มีความนิยมเพิ่มขึ้นมากที่สุดในปี 2023 (+1.43%) และกำลังกินส่วนแบ่งการตลาดจาก Java มากขึ้น
TIOBE Software รายงานดัชนีความนิยมภาษาโปรแกรมหรืออันดับ TIOBE Index ประจำเดือนตุลาคม 2023 โดย Paul Jansen ซีอีโอ TIOBE ให้ข้อสังเกตว่าส่วนต่างของ C# ในอันดับ 5 กับ Java ในอันดับ 4 ใกล้กันมากขึ้น เหลือเพียง 1.2% โดยหากแนวโน้มยังเป็นเช่นนี้ C# น่าจะแซง Java ได้ภายใน 2 เดือน
อันดับความนิยมภาษาโปรแกรมลำดับ 1-5 เป็นดังนี้ Python (14.82%), C (12.08%), C++ (10.67%), Java (8.92%) และ C# (7.71%)
อย่างไรก็ตามแนวโน้มความนิยมภาษานั้นอาจจะสรุปได้ยากว่าจะเป็นอย่างไรในระยะสั้น ก่อนหน้านี้ TIOBE ก็ประเมินว่า C++ ใกล้แซง C แต่เดือนตุลาคมล่าสุด ตัวเลขก็กลับมาห่างกันมากขึ้น
ไมโครซอฟท์ปล่อย C# Dev Kit ส่วนขยายสำหรับ VSCode ใช้สำหรับการพัฒนาโครงการ C# เต็มรูปแบบ ทำให้ฟีเจอร์รวมใกล้เคียง Visual Studio มากขึ้น อย่างไรก็ดีส่วนขยายนี้ไม่ได้ฟรีทั้งหมด แต่มีการจำกัดรูปแบบการใช้งานแบบเดียวกับ Visual Studio
C# Dev Kit มี Solution Explorer ในตัวสามารถเปิดไฟล์ .csproj
ได้ และเมื่อแก้ไขไฟล์ C# ก็มีฟีเจอร์ IntelliCode มาให้ และสามารถจัดการชุดทดสอบซอฟต์แวร์ได้ในตัว
ไมโครซอฟท์ประกาศเปิดคอร์สออนไลน์ Foundational C# with Microsoft เรียนฟรี เรียนจบสอบผ่านมีใบรับรองให้ฟรี เรียนได้ทั้งโลกไม่จำกัดประเทศ
คอร์สนี้เป็นความร่วมมือของไมโครซอฟท์กับ freeCodeCamp หน่วยงานไม่หวังผลกำไรที่สอนโปรแกรมมิ่ง คอร์สนี้ออกแบบมาสำหรับผู้ที่ไม่เคยเขียน C# มาก่อนเลย โดยสอนความรู้พื้นฐาน เช่น วิธีการเขียนและรันโค้ด ชนิดของข้อมูล ตัวแปร เมธ็อด ไปจบด้วยการดีบั๊กโค้ดที่รันในคอนโซล (ยังไม่ไปถึงโค้ดมี UI)
ผู้สร้างภาษาโปรแกรมยอดนิยม 4 คน มารวมตัวกันเป็นครั้งแรกในงานเสวนาเพื่อการกุศล Language Creators Charity Fundraiser โดยรายได้จากการขายบัตรจะมอบให้หน่วยงานด้านการศึกษา Last Mile Education Fund และ NumFOCUS
ผู้สร้างภาษาโปรแกรมทั้ง 4 คนที่เข้าร่วมได้แก่
งานเสวนาครั้งนี้จัดโดยกลุ่ม PyData Seattle วันที่ 19 กันยายน 2023 ที่เมือง Bellevue ในรัฐวอชิงตัน
ก่อนหน้านี้ 3 จาก 4 คนข้างต้น (ไม่รวม Goldberg) เคยขึ้นเวทีร่วมกันมาแล้วครั้งหนึ่งในปี 2019 รวมกับอีกคนคือ Larry Wall ผู้สร้างภาษา Perl
ช่วงกลางปี 2022 ไมโครซอฟท์เคยมีดราม่าหลังประกาศแนวทางส่วนขยาย C# ของ VS Code ว่าจะขยับไปใช้ชิ้นส่วนที่ไม่โอเพนซอร์ส ตอนนี้ส่วนขยายตัวใหม่ที่ว่าเปิดตัวแล้วในชื่อ C# Dev Kit
เดิมที ชุมชนผู้ใช้ VS Code สร้างส่วนขยายสำหรับภาษา C# ในชื่อโครงการ OmniSharp ซึ่งไมโครซอฟท์นำไปใช้งานต่อเป็น C# Extension
ไมโครซอฟท์ประกาศแนวทางพัฒนาส่วนขยาย C# ของ Visual Studio Code ซึ่งบางส่วนจะใช้ไลเซนส์แบบปิด แตกต่างของตัวที่ใช้ในปัจจุบัน ซึ่งเป็นโอเพนซอร์สทั้งหมด
ส่วนขยาย C# ของ VS Code ในปัจจุบันเริ่มมาจากโครงการ OmniSharp ที่พัฒนาโดยชุมชนโปรแกรมเมอร์ และเริ่มพัฒนาในยุคแรกๆ ของ VS Code ที่มาตรฐานด้าน API และโปรโตคอลยังไม่นิ่ง
ในระยะถัดมา VS Code เพิ่มฟีเจอร์ Language Server Protocol (LSP) สำหรับเชื่อมต่อกับภาษาโปรแกรมมิ่งอื่นๆ (ซึ่งกลายเป็นมาตรฐานของวงการในเวลาต่อมา) แต่ตัวส่วนขยาย C# ของเดิมยังไม่ได้เชื่อมต่อผ่าน LSP
ผู้ที่เขียนเกมด้วยเอนจิน Unity คงทราบกันดีว่าต้องใช้ภาษา C# เนื่องจากรากเหง้าของ Unity เริ่มมาจาก .NET (จะให้เจาะจงคือ Mono ที่เป็น .NET เวอร์ชันโอเพนซอร์ส) อย่างไรก็ตาม แนวทางของ Unity คือการปรับแต่งคอมไพเลอร์ รันไทม์ และภาษา C# ในแบบของตัวเอง ที่แตกต่างจาก C#/.NET ของไมโครซอฟท์
ปัญหาของเรื่องนี้คือ ชุดเครื่องมือ แพ็กเกจ และไลบรารีต่างๆ ของโลก .NET จึงไม่สามารถทำงานร่วมกับ Unity ได้ดีเท่าที่ควร บวกกับภาษา C# เวอร์ชันใหม่ๆ ก็ต้องรอให้ Unity ตามซัพพอร์ต ซึ่งต้องใช้เวลานาน
ล่าสุด Unity ประกาศทิศทางว่าจะมุ่งหน้าเข้าสู่โลก .NET กระแสหลัก แทนการเลือกคัสตอมเทคโนโลยีเอง โดยประกาศชัดว่าอยากเลิกใช้รันไทม์ Mono .NET เปลี่ยนมาเป็น CoreCLR ของ .NET เวอร์ชันหลักในปัจจุบัน (.NET Core)
เมื่อคืนนี้ไมโครซอฟท์ปล่อย .NET 6 ตัวจริง โดยส่วนสำคัญส่วนหนึ่งคือตัวภาษา C# ที่ปรับเป็นเวอร์ชั่น 10 ที่มีการปรับปรุงภาษาหลายส่วน ฟีเจอร์สำคัญๆ ที่ปรับเปลี่ยนมาได้แก่
IEEE ประกาศอันดับภาษาโปรแกรมยอดนิยม พบว่า 5 อันดับแรก ได้แก่ Python, Java, C, C++, JavaScript นั้นไม่มีความเปลี่ยนแปลง แต่ปีที่ผ่านมา C# กลับสามารถไต่อันดับจากอันดับ 25 มาเป็นอันดับ 6
ไมโครซอฟท์มีแนวทางหลอมรวม Win32 และ UWP เข้าด้วยกันภายใต้ Project Reunion ซึ่งประกอบด้วยโครงการย่อยหลายอย่าง เป้าหมายข้อหนึ่งของ Reunion คือเปิดให้ใช้ภาษาโปรแกรมรุ่นใหม่ๆ เขียนแอพบนวินโดวส์ได้หลากหลายขึ้น
ข้อจำกัดสำคัญของ Win32 API แบบดั้งเดิมคือมันถูกสร้างขึ้นในยุคภาษา C/C++ จึงรองรับเฉพาะภาษานี้ หากต้องการเขียนโปรแกรม Win32 ด้วยภาษาโปรแกรมอื่น จำเป็นต้องมี binding หรือ wrapper มาทำหน้าที่เชื่อมต่อ API ให้
ไมโครซอฟท์ประกาศฟีเจอร์ภาษา C# 9.0 ที่เพิ่มความสะดวกในการพัฒนาหลายอย่าง ฟีเจอร์ที่เพิ่มมามีข้อเล็กน้อยจำนวนมาก แต่ที่ผมเห็นว่าเด่นๆ เช่น top-level programming, positional records, และการปรับปรุง pattern
top-level programming คือการเขียนโปรแกรมโดยไม่ต้องมี class
และ function
ครอบ Main อีกต่อไป แต่สามารถเขียนโค้ดโดยตรงหลัง using
ได้เลย พร้อมกับสามารถเรียกใช้อาร์กิวเมนต์ผ่านตัวแปร args
ได้
Blazor เป็นเฟรมเวิร์คตัวหนึ่งในตระกูล ASP.NET เอาไว้เขียนเว็บแอพแบบหน้าเดียว (single-page) ด้วย HTML ผสมกับ C# แทนที่จะเป็น JavaScript
จุดเด่นของ Blazor คือใช้ภาษา C# ที่นักพัฒนาสาย .NET คุ้นเคย, ใช้โค้ด C# ทั้งฝั่งไคลเอนต์และเซิร์ฟเวอร์, ใช้ไลบรารีของ .NET ได้, มีระบบ UI component ให้พร้อมสรรพ
ก่อนหน้านี้ การทำงานของ Blazor คือต้องรันเซิร์ฟเวอร์ Blazor ที่เป็น .NET ด้วย แต่ล่าสุดในงาน Build 2020 ไมโครซอฟท์เพิ่มวิธีรัน Blazor แบบที่สองคือ Blazor WebAssembly แปลงโค้ดของรันไทม์ .NET เป็น WebAssembly ที่รันในเว็บเบราว์เซอร์รุ่นใหม่ๆ ได้ทั้งตัว
เมื่อเดือนมีนาคม ไมโครซอฟท์ประกาศโอเพนซอร์ส Windows Calculator เปิดให้คนนอกเข้ามาช่วยพัฒนา และได้ฟีเจอร์ใหม่ๆ อย่างการวาดกราฟ
การเปิดซอร์สครั้งนี้ทำให้นักพัฒนารายอื่นสามารถนำ Windows Calculator ไปต่อยอดได้ทันที และมีบริษัท Uno Platform ซึ่งทำธุรกิจเกี่ยวกับเครื่องมือพัฒนาสาย .NET (แนวเดียวกับ Xamarin) สามารถพอร์ตโค้ดของ Calculator (ในชื่อใหม่คือ Uno Calculator) ไปรันบน Android, iOS รวมถึงเวอร์ชันเว็บด้วย
Apache Spark กลายเป็นซอฟต์แวร์มาตรฐานในการวิเคราะห์ข้อมูลขนาดใหญ่แบบเรียลไทม์ แต่ภาษาโปรแกรมที่เชื่อมต่อกับ Spark ได้ยังจำกัดอยู่แค่ภาษา Java, Python, Scala, R, SQL เท่านั้น
ไมโครซอฟท์จึงเอาใจชาว .NET ด้วยการเปิดตัว .NET for Apache Spark เพื่อให้สามารถใช้ภาษาตระกูล .NET (C#, F#) เชื่อมต่อกับ Spark ได้ด้วย
.NET for Apache Spark เป็นซอฟต์แวร์โอเพนซอร์ส เปิดโค้ดบน GitHub ทำงานข้ามแพลตฟอร์มได้ทั้งบนวินโดวส์ ลินุกซ์ แมค โดยตอนนี้ยังอยู่ในสถานะพรีวิว ต้องใช้ร่วมกับ .NET Core 2.1 ขึ้นไป
ต่อเนื่องจาก .NET Core 3 Preview 1 เมื่อปลายปี ไมโครซอฟท์ออกรุ่น Preview 2 ตามมา
การเปลี่ยนแปลงสำคัญของ .NET Core 3 คือการรองรับแอพเดสก์ท็อป (ทั้ง WPF และ Windows Form) โดยไมโครซอฟท์เปิดซอร์สโค้ดมาอยู่ใต้ .NET Foundation ด้วย (ก่อนหน้านี้ต้องเขียนบน .NET Framework เท่านั้น ไม่รองรับบน .NET Core สองเวอร์ชันแรก)
ของใหม่ใน Preview 2 คือการรองรับภาษา C# เวอร์ชัน 8.0 ที่เพิ่มฟีเจอร์ using declarations และ switch expressions เข้ามาในตัวภาษา, เพิ่ม Utf8JsonWriter สำหรับแปลงข้อความเป็น JSON แบบ UTF-8, ออกแพ็กเกจแบบ Snap บนลินุกซ์
ทีมพัฒนาภาษา C# จาก Microsoft ปล่อยภาษารุ่นต้นแบบ (prototype) มาทดลองความสามารถสำหรับลดปริมาณปัญหาที่เกี่ยวกับ null โดยเฉพาะ ด้วยการเพิ่มชนิดข้อมูลใหม่ (type) ที่คล้ายกันภายใต้ชื่อว่า nullable มาให้เลือกใช้งาน
ผู้สนใจสามารถดาวน์โหลดความสามารถนี้มาทดลองเล่นได้ผ่าน GitHub
ส่วนใครสงสัยว่า nullable คืออะไร มีบทบาทอย่างไรในการแก้บั๊ก เชิญอ่านต่อข้างในได้เลย
ไมโครซอฟท์อธิบายยุทธศาสตร์การพัฒนาภาษาโปรแกรม .NET ทั้งสามตัว ได้แก่ C#, Visual Basic และ F#
ที่ผ่านมา ไมโครซอฟท์ใช้นโยบายให้ความสำคัญกับ C# และ Visual Basic เท่ากัน มีฟีเจอร์ใหม่ทัดเทียมกัน แต่รอบนี้ ไมโครซอฟท์บอกว่า C# ถือเป็นภาษาโปรแกรมกระแสหลัก จับตลาดกว้างกว่า ในขณะที่ Visual Basic เน้นการใช้งานสำหรับภาคธุรกิจ การสร้างแอพพลิเคชันบนวินโดวส์ และเป็นภาษาฝึกหัดสำหรับคนเริ่มเขียนโปรแกรม ส่งผลให้ต่อจากนี้ไป C# จะถูกให้ความสำคัญมากเป็นอันดับหนึ่ง ในขณะที่ VB 15 จะได้ฟีเจอร์ใหม่บางอย่าง แต่ไม่ใช่ทั้งหมดเท่ากับ C# 7.0 ได้
ส่วน F# เป็นภาษาใหม่ที่ยังมีความสามารถหรือประสบการณ์ใช้งานไม่ทัดเทียม C# กับ VB แต่ก็มีจุดเด่นที่ชุมชนเข้มแข็ง ใช้งานได้หลากหลาย เป้าหมายของไมโครซอฟท์ใน F# 4.1 จะพัฒนาเครื่องมือสำหรับ F# ให้ดีขึ้น ทำงานร่วมกับ Visual Studio และ .NET Core/Standard ได้ดีขึ้น
กลุ่มทำงาน (Working Group) การพัฒนาภาษาโปรแกรมบนมาตรฐาน ISO กลุ่ม WG11 (ภาษา C) และ WG16 (C++) ตกลงกันว่าจะรวมตัวภาษากลับมาเป็นภาษาเดียวกันอีกครั้งในปี 2016
เมื่อข่าวนี้ไปถึงกลุ่มทำงานของภาษาอื่นๆ กลุ่มทำงานที่แสดงความสนใจเข้าร่วมทันทีคือ Objective-C และเมื่อส่งอีเมลภายในออกไปไม่กี่ชั่วโมง ภาษา C# ก็แสดงความสนใจเข้าร่วมกันด้วยเช่นกัน ที่น่าแปลกใจคือ WG4 (COBOL) ระบุว่าสนใจพัฒนาภาษาใหม่นี้ด้วย เพื่อเผยแพร่การตั้งชื่อเป็นตัวอักษรใหญ่ในภาษาใหม่นี้ต่อไป
มีภาษาอื่นๆ ที่สนใจเข้าร่วมแต่ถูกปฎิเสธ ได้แก่ JavaScript, Rust, และ Snobol เนื่องจากไม่มีตัวซีใหญ่ในชื่อภาษา
หลังจากที่กูเกิลออกเครื่องมือแปลงโค้ด Java เป็น Objective-C ในชื่อ J2ObjC ผ่านมาเกือบ 3 ปีก็ได้เวลาของไมโครซอฟท์กันบ้าง
ไมโครซอฟท์ออกเครื่องมือแปลงโค้ด จาก Java เป็น C#, C++ และ Objective C++ (โดยในส่วนของ C++ และ Objective C++ จะมีการรองรับในเร็วๆ นี้) ในชื่อ JUniversal มาพร้อมกับไลบรารี JSimple และสามารถใช้ร่วมกันกับ J2ObjC ในการแปลงเป็น Objective-C ได้
Xamarin ทีมงานเดิมของโครงการ Mono ที่หันไปเน้นการเขียนแอพมือถือด้วย C# เผยผ่านบล็อกของบริษัทว่า เปิดให้นักศึกษาสมัครสมาชิกประเภท Indie เพื่อดาวน์โหลด IDE ของบริษัท Xamarin Studio ไปพัฒนาแอพ Android/iOS ด้วยภาษา C# ฟรี เป็นเวลา 1 ปี
อนึ่ง สมาชิกประเภท Indie จะดีกว่า Starter ที่บริษัทแจกให้ใครก็ได้สมัครฟรีตรงที่จะไม่จำกัดขนาดของแอพ รองรับ P/Invoke รองรับการเรียกไลบรารี่อื่น และใช้ Xamarin.Forms ทำส่วนติดต่อผู้ใช้ iOS, Android และ Windows Phone โดยใช้โค้ด C# เดียวกันได้
Joe Duffy วิศวกรอาวุโสของไมโครซอฟท์ที่รับผิดชอบงาน "วิจัย" ด้านระบบปฏิบัติการ เขียนบล็อกอธิบายผลงานที่ทีมของเขาใช้เวลากว่า 4 ปีซุ่มพัฒนาขึ้นมา มันคือภาษาโปรแกรมภาษาใหม่ที่พัฒนาต่อจาก C# แต่ชูจุดเด่นเรื่องประสิทธิภาพที่ใกล้เคียงกับ C++ ("C# for Systems Programming")
Duffy อธิบายว่าภาษาโปรแกรมในปัจจุบันแบ่งออกเป็น 2 กลุ่มใหญ่ๆ คือ
Xamarin ทีมงานเดิมของโครงการ Mono ที่หันไปเน้นการเขียนแอพมือถือด้วย C# ประกาศข่าวใหม่ 4 เรื่อง ดังนี้
การที่ Android ใช้ภาษา Java ทำให้กูเกิลมีปัญหาคดีความกับซันและออราเคิล ทางออกที่เป็นไปได้ในทางทฤษฎีคือเปลี่ยนไปใช้ภาษา-แพลตฟอร์มอื่นแทน ซึ่งก็ไม่ง่ายนักในทางปฏิบัติ
ดัชนีวัดความนิยมภาษาโปรแกรมนั้น คงมีดัชนี TIOBE ที่ได้รับความนิยมค่อนข้างมาก ล่าสุดทาง TIOBE ก็แถลงดัชนีประจำเดือนธันวาคมออกมาแล้ว