存在可能替代C語言的其餘語言嗎?

儘管C編程語言早在1972年就已發佈,但它還是當今使用最普遍的語言之一,而且按照當今的標準存在許多限制和缺陷。
這就是爲何應該替換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的家庭手工業正在興起:
  • Zig,我已經在 這裏 和 這裏 詳細介紹了。
  • 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之類的語言,您能夠輕鬆地作到這一點。

 
C語言是很古老的一門語言,如今仍舊在編程語言裏有不可替代性。C語言也是編程學習者們要學習的第一門語言。
 

若是你也想要自學C語言,接受全面系統的指導。這裏有一個交流羣推薦給你。不管是小白仍是進階者,在這裏都能得到成長。羣內含有,學習書籍電子書資源,素材包,還有免費教學課程哦~git

相關文章
相關標籤/搜索