誰能撼動C語言的霸主地位?是Go?是Rust?仍是...

儘管C編程語言早在1972年就已發佈,但它還是當今使用最普遍的語言之一,而且按照當今的標準存在許多限制和缺陷。git

這就是爲何應該替換C的關鍵緣由。太多關鍵軟件都是用C / C ++編寫的,其含義普遍。一個示例是OpenSSL之類的庫中的錯誤。衆所周知,C在捕獲諸如緩衝區溢出之類的問題方面表現不佳。C是一種容許您以多種方式讓本身陷入麻煩的語言。程序員

可是若是C太糟糕了,爲何尚未被替換呢?有不少緣由。在某種程度上,它已經被替換了。Java,C#,C ++和許多其餘語言已經接管了之前用C完成的任務。編程


 

所以,這其實是關於剩下的那種軟件,其中C仍然占主導地位:編程語言

操做系統內核。如Linux工具

微控制器性能

視頻編解碼器學習

共享的低級庫,例如OpenSSL測試

Unix命令行工具,如ls,cat和git編碼

爲何C仍然主導着這些領域?由於直到最近的替代方案還不是很好。操作系統

曾經有諸如D之類的語言,可是它具備C ++級別的複雜性,可能對C開發人員沒有吸引力。它最初還要求進行垃圾收集,這極可能使其不適用於所提到的許多領域。您不想在嘗試保持幀速率時啓動垃圾收集器。

Go和Rust表現出可能性

我認爲,對C和C ++的現代化表現出濃厚興趣的第一個真實跡象是Go和Rust的日益普及。咱們看到過去一般使用C或C ++編寫的許多典型工具如今都用Go或Rust編寫。彈出了許多命令行工具,例如,已經用這些語言之一編寫過。您會看到人們試圖用Rust編寫遊戲引擎。

LLVM:缺乏的難題

因爲LLVM的成熟,現在,存在提供CI替代方案的很大一部分可能性。LLVM意味着生成高性能代碼並針對許多平臺的真正複雜的工做已解決。它使更多人能夠進行語言開發。

Go和Rust爲如何LLVM帶來了一些啓發,一些可能替代C的家庭手工業正在興起:

Odin ,看起來像Go的C替代品。

V語言 。另外一種相似C的語言,具備大量的Go和Rust啓發。

什麼是C替換語言?

要替換C,一般須要一種語言來適應C仍占主導地位的壁壘。並不是全部類型的語言都適合於此。所以,我列出的語言具備許多共同點,能夠替代C:

現有的C庫易於重用。Ada,Modula-2等在很大程度上失敗了,由於您沒法在大型C生態系統中有效使用它們。

以已創建的知識和慣例爲基礎。Go確實很快就可使用,由於儘管語法有所更改,但API和編碼方式與C程序員很是類似。

沒有垃圾收集/手動內存管理。C在須要嚴格控制內存使用的區域中占主導地位。在這個空間中,垃圾收集機制不會動搖它。這就是阻止Go徹底替代C的緣由。

小二進制文件。像C同樣,Zig例如容許您製做很小的二進制文件。若是要在嵌入式空間中使用其餘語言,則不能使用會產生較大二進制代碼的語言(例如Go)。

系統級友好。您須要可以操縱位和字節。您須要良好的二進制運算符和指針。在過去的幾十年中,許多語言都沒有正確的指針。Java使指針成爲一個髒話,但Go卻部分地將其帶回來。

逐步替換C代碼。與C具備很好的二進制兼容性。

讓咱們擴展最後一點。若是這意味着您須要一次性重寫整個程序,那麼甚至沒有人會開始着手替換現有的C基礎結構。以個人經驗,能夠輕鬆地從Objective-C過渡到Swift的一件事是,我實際上能夠一次重寫一個方法,從新編譯並測試該程序。

使用諸如Zig之類的語言,您能夠輕鬆地作到這一點。


 

最後,若是你也想成爲程序員,想要快速掌握編程,趕忙加入學習企鵝圈子!

裏面有資深專業軟件開發工程師,在線解答你的全部疑惑~編程語言入門「so easy」

編程學習書籍:


 

編程學習視頻:

相關文章
相關標籤/搜索