像我這種明末清初開始寫 ASP 的老人,最早用 VBScript、VB6 寫網站,當進入 .NET 時代都要面臨抉擇:.NET 有 C# 與 VB.NET 兩種語言選項,讓學哪一種?

當時我選了 C# (【閒聊】大家選擇的是C#或VB.NET呢?),寫一陣子便深深愛上它。符號比 VB 簡潔、允許自由排版,風格與 JavaScript 相似,從後端切換寫前端時大腦負擔較小(但偶爾會不知不覺在 JavaScript 寫出 foreach (var ...) 或 是小困擾),加上接觸的 .NET Github 開源專案十之八九都是 C#,會 C# 如講母語般暢行無阻,覺得自己選對了。

在我心中,C# 的開發者人數應該遠大於 VB.NET。前幾年無意發現 VB.NET 在 TIOBE 程式語言排行榜的排名首次超越 C#,出現 VB.NET 與 C# 黃金交叉! 當時還做了考證,推測是 TIOBE 指標演算規則的誤差,實際的 C# 使用者應大於 VB.NET,但由讀者留言,在地球的某些角落某些領域,仍由 VB.NET 稱霸,故實際數字可能會比我所觀察到的再高一些。

前陣子無意看到 MS Learn 有篇 Microsoft .NET language strategy,提到 C# 與 VB.NET 使用者數量,可視為來自官方的數據,具有一定權威性:

  • C# - millions of developers,數百萬人
  • F# - many thousands of developers,數千人
  • VB.NET - hundreds of thousands of developers,數十萬人

這個數字算是印證先前「數量超過十倍」的推測,了結一件久懸疑惑。

而這篇文件更值得一看的是微軟對 C#、VB.NET 語言的定位及發展策略:(F# 目前不在我的技能樹及學習清單,先略過)

  1. C#
    C# 是一種跨平台多用途的開發語言,生態系強大應用廣泛,可開發出高效能的程式。C# 融合了許多物件導向設計典範,尤其是函數語言程式設計(Functional Programming)。Span<T> 等低階特性能實現不用 unsafe 也能寫出低階程式才有的高效能。.NET Runtime 及核心程式庫都是用 C# 開發,C# 的演進也將嘉惠所有 .NET 開發者。
    發展方向:C# 將配合開發者不斷變化的需求持續發展,作為最先進的程式語言,C# 被廣泛應用在各種領域,故會優先考慮對大多數開發者有利的語言和性能改進,並保持向前相容性。微軟會繼續擴大 .NET 生態系(社群)對 C# 發展方向的決定權,但會保留設計決策的管理權。
  2. VB.NET
    VB 作為一種易用的語言,主打清晰而非簡潔。數十萬 VB 開發人員主要集中在 Windows 客戶端程式開發,在這些領域一直表現出色,展現高度易用性。今日的 VB 是一個穩定且成熟的物件導向語言,並受惠於不斷成長的 .NET 生態系統和持續進化的工具。有些 .NET Workload 不支援 VB,VB 開發人員改用 C# 處理的場景也很常見。
    發展方向:策略上會確保 VB 直覺易用並具有穩定設計的程式語言定位。.NET 的核心程式庫(如 BCL)將持續支援 VB,.NET Runtime 及程式庫的改進也會讓 VB 受惠。當 C# 或 .NET Runtime 加入需要語言支援的新功能時,VB 會偏向消費者角色,避免新語法,VB 將不會擴展到新的 Workload。但 Visual Studio 仍會持續強化 VB 開發體驗,並與 C# 串接,特別是在 Windows Forms 等核心 VB 應用情境。

整個發展方向跟我之前的理解差不多,C# 將會是 .NET Runtime、核心資料庫的開發語言,也會是 .NET 開發社群的主要使用語言。C# 在語言特性及新語法發展上會比較積極,維持最先進程式語言的定位。而 VB.NET 也沒被放棄,在 Windows 客戶端 (Windows Form/WPF) 等領域會繼續發光發熱,Visual Studio 也會持續提升 VB.NET 開發體驗,但無法用在新技術新應用 (Workload) 上。換言之,既有 VB.NET 專案可安心用 VB.NET 繼續維護發展,沒有支援到期問題,不需要積極考慮更換語言;但如是新專案,想更完美應用較新技術,C# 是更好的選擇。


Comments

Be the first to post a comment

Post a comment