咨詢熱線 400-001-5729

學(xué)好C語言有什么好處

發(fā)布時(shí)間:2021-11-20 10:25:32

C語言培訓(xùn)

      C需要被替換掉的觀點(diǎn)爭辯是簡單的。編程語言研究和軟件開發(fā)實(shí)踐都暗示了如何比C更好地去做事。但歷經(jīng)數(shù)十年的研究和開發(fā),C語言的地位卻依舊穩(wěn)固。很少有其他語言能夠在性能、裸機(jī)兼容性或通用性等方面擊敗它。不過,2018年C是如何與那些明星編程語言競爭的呢,其中細(xì)節(jié)仍值得一看。

       選C而不選C++對您——以及任何將會維護(hù)你代碼的開發(fā)人員——來說都是可行的,通過采用強(qiáng)制簡約主義來避免與C ++的復(fù)雜性糾纏。當(dāng)然,C ++擁有豐富的高級功能,這是有它自己的道理的。但如果極簡主義更適合當(dāng)前和未來的項(xiàng)目——以及負(fù)責(zé)項(xiàng)目的團(tuán)隊(duì)——那么還是選C更明智一些。

       Java輸給C的地方是一個Java從未打算競爭的領(lǐng)域:靠近底層結(jié)構(gòu)運(yùn)行,或直接與硬件打交道。C代碼被編譯成機(jī)器代碼,由進(jìn)程直接執(zhí)行。Java被編譯成字節(jié)碼,這是一種隨后會被JVM解釋器轉(zhuǎn)換為機(jī)器代碼的中間代碼。此外,盡管Java的自動內(nèi)存管理在大多數(shù)情況下都是個優(yōu)點(diǎn),但C更適合于必須充分利用有限內(nèi)存資源的情況。

      也就是說,在某些方面,Java在速度方面可以接近于C。JVM的JIT引擎在運(yùn)行時(shí)根據(jù)程序行為優(yōu)化例程,允許進(jìn)行許多類型的優(yōu)化,而這些優(yōu)化是在未提前編譯的C中無法實(shí)現(xiàn)的。雖然Java運(yùn)行時(shí)自動執(zhí)行內(nèi)存管理,但一些較新的應(yīng)用程序可以解決這個問題。例如,Apache Spark部分地通過使用繞過JVM的自定義內(nèi)存管理代碼來優(yōu)化內(nèi)存中處理。

       與C一樣,C#和.Net提供各種直接訪問內(nèi)存的機(jī)制。堆,棧和非托管系統(tǒng)內(nèi)存都可以通過.Net API和對象訪問。開發(fā)人員可以使用.Net中的unsafe模式來實(shí)現(xiàn)更高的性能。

       但這些都不是沒有代價(jià)的。托管對象和unsafe對象不能被任意交換,并且它們之間的編組會降低性能。因此,要最大化.Net應(yīng)用程序的性能需要將托管和非托管對象之間的變動保持在最低限度。

       如果您無法承擔(dān)托管與非托管內(nèi)存之間變動造成的性能損失,或者.Net運(yùn)行時(shí)對于目標(biāo)環(huán)境(例如,內(nèi)核空間)來說是一個糟糕的選擇,或者可能根本不可用,那么C就是你所需要的。與C#和.Net不同,C被默認(rèn)可以解鎖對內(nèi)存的訪問權(quán)。

       本文由培訓(xùn)無憂網(wǎng)長沙牛耳教育課程顧問老師整理發(fā)布,希望能夠?qū)ο朐陂L沙參加安卓軟件開發(fā)培訓(xùn)的學(xué)生有所幫助。更多課程信息可關(guān)注培訓(xùn)無憂網(wǎng)電腦IT培訓(xùn)頻道或添加老師微信:15033336050

以上文章由長沙牛耳教育課程顧問整理編輯發(fā)布,部分文章來自網(wǎng)絡(luò)內(nèi)容真實(shí)性請自行核實(shí)或聯(lián)系我們,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費(fèi)申請?jiān)囌n。關(guān)注官方微信了解更多:150 3333 6050

免 費(fèi) 申 請 試 課