成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們需要C的替代品嗎?

開發 后端
盡管C編程語言早在1972年就已發布,但它仍是當今使用最廣泛的語言之一,并且按照當今的標準存在許多限制和缺陷。

C是一種廣泛使用的語言,用于對從OS內核到加密庫的任何程序進行編程。現在該更換了嗎?

盡管C編程語言早在1972年就已發布,但它仍是當今使用最廣泛的語言之一,并且按照當今的標準存在許多限制和缺陷。

 

我們需要C的替代品嗎?
> Programming language popularity, 2020 by TIOBE

這就是為什么應該替換C的關鍵原因。太多關鍵軟件都是用C / C ++編寫的,其含義廣泛。一個示例是OpenSSL之類的庫中的錯誤。眾所周知,C在捕獲諸如緩沖區溢出之類的問題時表現很差。C是一種允許您以多種方式射擊自己的語言。

熱衷于動態語言的人聽起來可能很奇怪。但是,這里的問題是類型安全。諸如Python和Julia之類的動態語言通常會錯誤地使用類型。例如在if語句中使用整數。動態語言在編譯時可能不會遇到問題,但是如果它們具有強大的類型系統,那么在運行時會遇到很多問題。這對于安全性尤其重要。安全漏洞在很大程度上歸因于導致不確定的行為,而不是受控的關閉。

但是如果C太糟糕了,為什么還沒有被替換呢?有很多原因。在某種程度上,它已經被替換了。Java,C#,C ++和許多其他語言已經接管了以前用C完成的任務。

因此,這實際上是關于剩下的那種軟件,其中C仍然占主導地位:

  • 操作系統內核。Linux,例如
  • 微控制器
  • 視頻編解碼器
  • 共享的低級庫,例如OpenSSL
  • Unix命令行工具,例如ls,cat和git

為什么C仍然主導著這些領域?因為直到最近的替代方案還不是很好。上世紀90年代,許多語言(例如Java,C#,VB.NET和F#)似乎主要致力于創建垃圾收集托管語言。對于上面列出的示例,不是一個很好的解決方案。

然后在80年代和90年代出現了其他語言,例如Perl,Python,Ruby,JavaScript,它們都不適合這些任務。

當然,一直存在其他靜態類型的語言,例如Ada,Modula-2等。但是,這些語言通常并不能滿足人們現有的技能要求,也可以輕松地與現有的C庫一起使用。

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

Go and Rust 的可能性

我認為對C和C ++的現代化表現出濃厚興趣的第一個真實跡象是Go和Rust的日益普及。我們看到過去通常使用C或C ++編寫的許多典型工具現在都用Go或Rust編寫。大量的命令行工具,已經用這兩種語言編寫。我在這里介紹了其中一些工具。您會看到人們試圖用Rust編寫游戲引擎。

LLVM:缺少的難題

我相信由于LLVM的成熟,提供替代C語言的可能性很大。LLVM意味著生成高性能代碼并針對許多平臺的真正復雜的工作已解決。它使更多人可以進行語言開發。

Go和Rust都為如何重新思考C / C ++以及如何利用LLVM和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的原因有很多,而以前從未做過的主要原因是,重點放在了其他地方,而缺少工具。這不是一個大型組織必須決定做的事情。您需要讓一些家庭手工業的人輕松嘗試一下。以LLVM為工具,以Go作為靈感,這是今天完全可能的。

我個人認為C將被替換嗎?我沒有屏住呼吸。這是一個漫長的過程,我們還沒有明確的贏家。大型組織不會打算采用Zig,Odin,V或其他任何方式,直到出現明確的替代方案。

替換甚至意味著什么?Cobol仍在進行許多金融交易。但是我認為我們可以說已經取代了Cobol,因為今天沒有人會故意為任何新項目選擇Cobol。人們將盡可能地嘗試遠離它。

同樣,許多經過良好測試的C代碼也不會被重寫。它只會流連忘返。但是我們將來可能會達到這樣的地步,因為在C傳統上占主導地位的領域中,其他語言只是被C所取代。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2022-08-15 09:49:28

K8s云原生

2022-02-08 11:45:03

PiniaVuex前端

2011-04-12 09:13:51

OpenIndianaSolaris替代品

2022-08-02 10:45:29

AppFlowyNotion開源

2013-11-19 14:36:38

UbuntuDebianPCLinuxOS

2013-01-28 09:25:54

2012-07-20 09:37:00

Oracle LinuCentOS

2020-02-17 21:35:21

JoplinEvernote開源

2016-09-13 15:50:24

TurtlEvernote開源

2022-11-28 11:35:33

Kubernetes開源工具

2020-11-17 06:04:59

ZigC語言

2021-10-19 09:00:00

KubeMQKubernetes工具

2023-07-11 18:36:20

CloudReady開源

2012-09-24 09:45:55

Windows 8操作系統

2012-10-30 09:30:49

IaaS基礎架構即服務IaaS案例

2024-01-15 14:19:34

開源ChatGPT

2022-12-26 07:40:00

Heroku替代品dynos

2021-10-14 15:42:53

消息隊列KubeMQKafka

2018-06-12 16:33:23

GitHub替代品項目

2020-07-07 09:10:29

VS CodeLinux開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费h视频 | 久久aⅴ乱码一区二区三区 91综合网 | 亚洲高清在线 | 成人精品网 | 亚洲视频免费在线播放 | 亚洲h在线观看 | 国产精品亚洲精品久久 | 日日操日日舔 | 日日日视频 | a久久| 亚洲网站在线 | 久久精品国产一区二区电影 | 久久大陆 | 91精品国产91久久久久久吃药 | 黄色在线观看 | 国产99久久精品一区二区永久免费 | 亚洲一区二区在线免费观看 | 精品入口麻豆88视频 | 国产日韩欧美在线观看 | 夜夜摸夜夜操 | 亚洲欧美激情精品一区二区 | 国产一区二区三区在线 | 精品久久久久香蕉网 | 成人免费视频网站在线观看 | 欧美日韩亚 | 黄色三级在线播放 | 国产美女自拍视频 | 国产一区二区电影 | 日韩欧美理论片 | 毛片链接| 91偷拍精品一区二区三区 | 亚洲国产精品视频一区 | 国产区在线观看 | 色姑娘综合网 | 午夜精品一区二区三区三上悠亚 | 精品久久久久久 | 欧美天堂一区 | 亚洲精品视频一区 | 欧美亚洲国产一区二区三区 | 激情在线视频网站 | 国产一区二区在线视频 |