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

撼不動的C語言!

譯文
開發 后端
過去50年以來,已經涌現出數十種新語言,這些后輩語言的表現又如何?其中一些正在挑戰C的統治地位,而另一些正在不斷蠶食其地位。

作者 | Serdar Yegulalp

譯者 | 布加迪

策劃 | 云昭

數十年來C語言一直可謂是編程界的扛把子。Linux、Windows、Mac和許多其他操作系統的內核都能看到它的身影。C語言幾乎可以寫任何程序,在編程語言中的地位,德高望重。它甚至可能是有史以來最具影響力的語言。它的語法啟發了許多其他語言,包括Cpp、Csharp、Java、JavaScript、Go、Perl等等。

自1972年以來,C編程語言一直是構建軟件的主力語言之一。但是過去50年以來,已經涌現出數十種新語言,這些后輩語言的表現又如何?其中一些正在挑戰C的統治地位,而另一些正在不斷蠶食其地位。

撼山易,撼C語言難!在性能、裸機兼容性和普及性方面幾乎沒有語言能夠擊敗C。不過仍有必要看看C與一些主流語言相比表現如何。本文介紹了它與C++、Java、C#、Go、Python及最新的語言Carbon的詳細對比。

C與C++

C經常與C++相比較;顧名思義,C++是作為C的擴展而創建的。C++和C之間的差異很大,甚至可以說差異過大。

雖然C++在語法和方法上仍然酷似C,但提供了許多有用的功能,這些功能是C本身并不直接隨帶的:命名空間、模板、異常和自動內存管理等。一般,需要頂級性能的項目(比如數據庫和機器學習系統)通常用C++編寫,利用這些功能最大限度地發揮系統的性能。

此外,C++的步子比C邁得更大。即將發布的C++ 23帶來了更多的功能,包括模塊、協程和模塊化標準庫,以加快編譯和更多的代碼。相比之下,C標準的下一個計劃版本C2x卻沒增加多少功能,而是專注于保持向后兼容性。

問題在于,C++中的所有優點也可能是缺點。軟件功能使用的C++越多,引入的復雜性就越大,結果處理起來就變得越困難。如果開發人員只關注C++的一小部分,可以避免它的許多陷阱。甚至一些公司想要完全避免這種復雜性,比如說,Linux內核開發團隊避免C++,雖然該團隊將Rust視為未來增添內核功能的語言,Linux的大部分仍將用C語言編寫。

C與Java

Java在幾十年間依舊是企業軟件開發的主力軍,也是整個開發界的主力軍。Java語法大量借鑒了C和C++。不過與C不同,Java默認情況下并不編譯成本機代碼。相反,Java的JIT(即時)編譯器編譯Java代碼,以便在目標環境中運行。JIT引擎根據程序行為在運行時優化例程,從而實現了提前編譯的C無法實現的多種優化。在適當的情況下,JIT編譯的Java代碼可以接近甚至超過C的性能。

而且,雖然Java運行時環境自動執行內存管理,但可以繞過這種處理。比如說,Apache Spark使用Java運行時環境的“不安全”部分來直接分配和管理內存,并避免JVM垃圾回收系統的開銷,從而部分優化了內存中處理。

Java奉行“一次編寫,隨處運行”的理念,也使Java程序可以在對目標架構基本不需要調整的情況下運行。相比之下,雖然C已經移植到許多架構上,但任何特定的C程序可能仍需要定制,才可以在Windows與Linux上正常運行。

這種可移植性和強大性能的結合,加上龐大的軟件庫和框架生態系統,使Java成為構建企業應用程序的首選語言和運行時環境。

Java比不上C的一個方面是,C從不旨在競爭:它靠近硬件運行,或者直接與硬件打交道。

C代碼被編譯成機器代碼,機器代碼由進程直接執行。Java被編譯成字節碼,字節碼是中間代碼,JVM解釋器隨后將它們轉換成機器碼。此外,雖然Java的自動內存管理大體上是優點,但C更適合必須最優化使用內存資源有限的程序,因為它的初始占用空間很小。

C與Go

Go語法很大程度上歸功于C,作為分隔符的花括號和以分號結尾的語句只是兩個例子。精通C的開發人員通常可以直接上手Go,即使考慮到新的Go功能(比如命名空間和包管理)。

確保代碼可讀是Go的指導設計目標之一:讓開發人員在短時間內盡快上手Go項目,并熟悉代碼庫。C代碼庫可能很難分析,因為它往往變成某個項目和團隊所特有的一大堆宏指令和#ifdefs。Go的語法及內置的代碼格式化和項目管理工具旨在防止這種根本性問題。

Go還有諸如goroutines(協程)和channels(通道)之類的附加功能,這些語言級工具用于處理組件之間的并發和消息傳遞。C需要這類功能由手工控制,或者由外部庫提供,但Go直接就提供,因此構建需要它們的軟件要容易得多。

Go與C最大的底層區別在于內存管理。默認情況下,Go對象可實現自動管理和垃圾回收。對于大多數編程工作來說,這非常方便。但這也意味著任何需要確定性處理內存的程序都將更難編寫。

Go確實包括unsafe包,用來避開Go的一些類型處理安全機制,比如讀寫使用Pointer類型的隨意內存。但unsafe附有警告:用它編寫的程序“可能無法移植,且不受Go 1兼容性指導準則的保護。”

Go非常適合構建命令行實用程序和網絡服務等程序,因為它們很少需要這種細粒度的操作。但是低級設備驅動程序、內核空間操作系統組件以及其他需要嚴格控制內存布局和管理的任務用C來創建再好不過了。

C與Python

如今只要一談起軟件開發,Python似乎總是避不開。畢竟,Python是“第二好的語言”,無疑是用途最廣泛的語言之一,擁有成千上萬的第三方庫。

Python強調更注重開發速度而不是執行速度,這也是它與C最大的不同之處。一個程序可能需要一個小時才能用另一種語言(如C)組裝起來,但僅需幾分鐘內即可用Python組裝起來。另一方面,該程序在C中執行可能需要幾秒鐘,但在Python中運行可能需要一分鐘。

一個好的經驗法則是,Python程序運行起來通常比C程序慢一個數量級。但是對于現代硬件上的許多任務來說,Python足夠快了,這是它得到采用的關鍵。

另一個主要區別是內存管理。Python程序完全由Python運行時環境管理內存,因此開發人員不必擔心分配和釋放內存方面的細節。但開發人員的輕松是以“運行時性能”為代價。

編寫C程序需要嚴格注意內存管理,但由此生成的程序對純粹的機器速度而言卻堪稱標準。

談完區別,二者在底層卻有深層的聯系:參考Python運行時環境是用C編寫的。這讓Python程序可以包裝用C和C++編寫的庫。第三方庫組成的Python生態系統有相當一部分(比如用于機器學習的第三方庫)都以C代碼作為核心。在許多情況下,這不是用C還是用Python的問題,而是涉及應用程序的哪些部分應該用C編寫、哪些部分應該用Python編寫。

如果開發速度比執行速度更重要,而且如果程序的大部分高性能部分可以被隔離到獨立的組件中(而不是分散在整個代碼中),那么純粹的Python庫或結合Python庫和C庫都是比單獨的C更好的選擇。但在其他方面,C仍占統治地位。

C與Carbon

C和C++的另一個最近的競爭者是Carbon,這是一種目前正在大力開發的新語言。

Carbon旨在成為C和C++的現代替代品,它有簡單的語法、現代工具和代碼組織技術,以及解決C和C++程序員長期面臨的問題的方案。它還旨在提供與C++代碼庫的互操作性,因此可以增量遷移現有代碼。這一切都受到歡迎,因為與最近開發的語言相比,C和C++在過去的工具和流程顯得很原始很簡陋。

那么有何缺點呢?目前,Carbon是一個試驗項目,尚未準備好用于生產環境。

甚至沒有一個切實可行的編譯器,只有在線代碼瀏覽器。Carbon還需要一段時間才會成為C或C++的實用替代品,如果真可以替代的話。

原文鏈接:

??https://www.infoworld.com/article/3402023/why-the-c-programming-language-still-rules.html???

責任編輯:薛彥澤 來源: 51CTO
相關推薦

2010-01-15 17:38:37

C++語言

2011-07-05 17:07:14

C語言

2011-07-05 16:57:53

C語言

2016-09-26 10:00:18

架構

2022-08-31 10:13:04

C語言代碼

2010-01-15 14:46:20

C++語言

2011-01-05 11:12:34

C++

2010-01-22 10:26:40

C++語言

2016-07-26 14:52:23

IT168

2016-09-20 16:51:23

架構

2010-01-21 16:24:02

C++語言

2009-06-15 11:03:10

Java語言C#語言

2011-05-31 13:41:00

C語言

2010-01-22 15:30:36

C++語言

2010-07-07 11:09:36

UDPClient

2021-11-11 15:12:21

C語言線程代碼

2020-11-09 13:46:24

C語言代碼重要

2010-02-03 17:29:06

Python編譯

2022-07-14 16:35:11

C語言編程語言

2021-12-16 06:52:33

C語言內存分配
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品毛片 | 国产精久久久久久 | 一区二区三区高清 | 久色一区 | 日韩三级一区 | 成人三级网址 | 国产精品久久久久久久久免费 | 欧美午夜精品理论片a级按摩 | 请别相信他免费喜剧电影在线观看 | 日韩免费一区二区 | 在线观看免费黄色片 | 在线午夜 | 久久天堂 | 免费看黄色视屏 | 精品三级在线观看 | 国产精品一区一区 | av一区二区在线观看 | 天天爽网站 | 亚洲精品久久久一区二区三区 | av免费网站在线观看 | 亚洲日日操 | 成人欧美一区二区三区在线播放 | aaa一区| 中国美女撒尿txxxxx视频 | 国产精品美女久久久久aⅴ国产馆 | 日韩精品 电影一区 亚洲 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 欧美a区 | 免费超碰| 激情亚洲 | 亚洲精品一区久久久久久 | 中文字幕久久久 | 亚洲一av| 欧美在线国产精品 | 黄色一级大片在线免费看产 | 亚洲美女一区二区三区 | 亚洲视频免费播放 | 久久9热 | 99久久免费精品国产免费高清 | 亚洲一区二区三区在线播放 | 中文字幕免费观看 |