在不斷發展的程式語言領域,開發者們一直在尋找更好的工具,這些工具能夠解決現有選擇的缺點,同時保留其優勢。C3 程式語言作為 C 語言的一個有前途的替代品正在獲得關注,它提供了現代特性,同時保持與 C 語言的 ABI(應用程式二進位制介面)相容性。
語法選擇引發社群討論
C3 在開發者社群中討論最多的方面之一是其語法選擇。使用 ::
進行模組解析引發了特別強烈的意見。一些開發者認為與像 D 語言這樣使用單點符號相比,這種方式過於冗長。然而,其他人為這一設計決策辯護,指出它簡化了模組與識別符號的解析。
「
::
簡化了模組與識別符號的解析。在 C3 中有一種稱為路徑縮短的功能,允許你使用foo::bar()
代替類似std::baz::foo::bar()
的寫法。用.
來做類似的事情是有問題的,因為你不知道路徑在哪裡結束。」
這場討論突顯了語言設計中清晰性和簡潔性之間的基本張力。雖然一些開發者優先考慮乾淨、簡約的語法,但其他人更看重明確的符號,這可以減少歧義,尤其是在複雜的程式碼庫中。
C ABI 相容性作為關鍵優勢
社群中的許多開發者強調 C3 的 C ABI 相容性是其最強大的賣點之一。這一特性允許程式設計師在同一個專案中無縫混合 C 和 C3 程式碼,使得漸進式採用成為可能。一些使用者報告成功地將 C 庫與 C3 整合,只需最小的努力,通常比其他 C 替代品如 Zig 或 Odin 更容易。
能夠利用現有的 C 程式碼庫,同時逐步引入現代語言特性,解決了系統程式設計師常見的痛點。與那些與 C 有更激進差異的語言不同,C3 允許開發者受益於數十年積累的 C 庫和工具,同時編寫更清晰、更安全的程式碼。
在其他 C 替代品中的定位
社群經常將 C3 與其他現代 C 替代品進行比較,特別是 Zig 和 Odin。據該語言的建立者所說,C3 與 Odin 的哲學有更多共同點,即優先考慮程式設計的樂趣,而不是像 Zig 那樣透過約束來強調穩健性。
C3 將自己定位為一種改進 C 的語言,但不會從根本上改變其基本方法。它避免了 C++ 的複雜性,同時添加了使開發更愉快、更少錯誤的生活質量特性。這種中間立場似乎得到了那些欣賞 C 的簡單性但對其眾所周知的陷阱感到沮喪的開發者的認同。
相比 C 的實際改進
社群成員特別欣賞 C3 對 C 做出的幾項具體改進。對 switch/case 行為的改變,使 break 隱式而不是需要它們來防止穿透,被強調為一個受歡迎的改進。此外,新增模組以更好地組織程式碼、使用切片進行更安全的陣列處理以及內建的 UTF-8 支援也是經常被提及的好處。
這些實際的改進解決了 C 程式碼中常見的錯誤源和安全漏洞,同時保留了使 C 對系統程式設計具有吸引力的效能和控制。
C3 的關鍵特性
- 無強制標頭檔案
- 模組級名稱空間
- 引數化宏系統
- C ABI 相容性
- 更安全的陣列處理切片
- 內建 UTF-8 支援
- 編譯時反射
- 用於錯誤處理的"丟擲"函式
- 前置和後置條件
- 減少未定義行為
平臺支援
C3 目前為以下平臺提供原生編譯器:
- Windows x64
- macOS arm64/intel
- Linux x64
- Linux ARMv64
- Linux RiscV64
- Linux RiscV32
- FreeBSD x64/x86
- OpenBSD x64/x86
- Haiku(64)
採用挑戰
儘管對 C3 的設計表示熱情,但一些社群成員表達了對採用新語言的實際挑戰的擔憂。孤島問題——即使用小眾語言的開發者發現自己與更成熟選項的龐大生態系統隔離——是一個重大障礙。
與 C 相比,庫、學習資源和有經驗的開發者的可用性仍然有限。這造成了所有新程式語言都面臨的雞與蛋問題:廣泛採用需要強大的生態系統,但構建生態系統需要廣泛採用。
C3 目前的版本是 0.7.2,開發工作仍在積極進行。雖然它仍處於 1.0 版本之前,但開發者已經在個人專案中使用它,並探索其在更嚴肅應用中的潛力。與任何新興語言一樣,其長期成功將取決於建立開發者、庫和用例的臨界質量,以證明其相對於 C 和其他現代替代品的優勢。
參考:C3 Language