存在可能替代C語言的其他語言嗎? -Erik Engheim
儘管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的家庭手工業正在興起:
什麼是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語言
- 程式語言成功的秘訣是什麼? -erik
- C語言 C語言野指標C語言指標
- C語言---“C語言 誰與爭鋒?”C語言
- python語言與其他語言有什麼不同?Python
- 關於python語言,其他的應用你知道嗎?Python
- go語言與c語言的相互呼叫GoC語言
- C語言C語言
- 作為非計算機專業的學生,覺得 C 語言遠比其他語言易於上手,正常嗎?計算機
- C語言的本質(32)——C語言與彙編之C語言內聯彙編C語言
- 聊聊C語言/C++—程式和程式語言C語言C++
- C語言與嵌入式C語言的區別C語言
- 有哪一種程式語言比其他的更安全嗎?
- C語言的HelloWorldC語言
- C語言:一種高效、易學的程式語言C語言
- C語言字串C語言字串
- C語言: returnC語言
- C語言(一)C語言
- C語言概述C語言
- c語言 %pC語言
- 字串(C語言)字串C語言
- C語言程式C語言
- CUDA C語言C語言
- C語言 typedefC語言
- 別讓科技替代語言——資訊圖
- C語言函式手冊:c語言庫函式大全|C語言標準函式庫|c語言常用函式查詢C語言函式
- C語言學習方法,怎麼學習C語言?C語言
- 那些主流程式語言的知識,C語言(Ⅰ)C語言
- Java語言與C++語言的差異總結JavaC++
- 奇怪的C語言——C51程式設計C語言注意事項C語言程式設計
- C語言判斷檔案存在和建立檔案C語言
- c語言巨集的使用C語言
- c語言的陣列C語言陣列
- C語言#error的作用C語言Error
- 有用的C語言工具C語言
- C語言的學習C語言
- C語言的謎題C語言
- 很酷的 C 語言技巧