為什么和其他語言相比C語言是快速的語言?
點(diǎn)擊上方藍(lán)字關(guān)注我哦~
01
前言
初入門的我們經(jīng)常聽見別人說“真正的程序員用C語言編程,C是最快的語言因?yàn)樗亲羁拷捌涞讓拥恼Z言?!蹦敲春推渌Z言相比C語言到底有什么特別的呢?
02
C語言為什么快
C語言沒有什么特別,這就是它快速的秘訣!
新的語言支持更多的特性,比如,垃圾回收(garbage collection),動(dòng)態(tài)類型(dynamic typing)等等。這些新加入的特性讓初學(xué)者們更容易上手。
問題的關(guān)鍵就在于,這些新的功能增加了處理開銷(processing overhead),也就降低了程序性能。而C語言中沒有這些功能,它不需要這些額外的開銷,這也意味著程序員自己要分配和釋放內(nèi)存,時(shí)刻注意內(nèi)存泄露問題,處理靜態(tài)類型的變量。
C語言的設(shè)計(jì)者權(quán)衡了利弊,把速度的需求放在了安全之上。C語言不會:
檢查數(shù)組索引是否越界。
檢查未初始化的變量。
檢查內(nèi)存泄露。
檢查空的指針的解引用。
當(dāng)你在JAVA中使用數(shù)組索引時(shí),虛擬機(jī)中有一些方法調(diào)用來檢查索引越界和其他的合理性問題。但在C語言中即使是再微小的事情都有安全隱患。它不是用來編寫大型的商業(yè)軟件的。
但這些設(shè)計(jì)上的決定并不是bugs。這些設(shè)計(jì)的初衷是為了讓編譯器和庫的編寫者可充分利用計(jì)算機(jī)每一個(gè)bit的計(jì)算能力。
即便如此,許多語言和平臺,例如Java(和它的虛擬機(jī)),.NET(和它的通用語言運(yùn)行庫),隨著即時(shí)編譯(從字節(jié)碼產(chǎn)生本地機(jī)器碼)等技術(shù)的出現(xiàn),這些年的運(yùn)行速度也有了很大的提高。
03
C語言的精神
C語言的不可移植。盡管C語言允許程序員編寫可移植的代碼,委員會并沒有強(qiáng)迫程序員編寫可移植的代碼,把C語言當(dāng)成高級匯編語言。能夠編寫特定機(jī)器的語言是C語言的特征之一。
保持C語言的精神。委員會這么做的主要目的也是為了繼承C語言的傳統(tǒng)精神。這項(xiàng)精神有很多方面,但最根本的是C語言基本原則產(chǎn)生的社區(qū)情感,這種社區(qū)情感被使用C語言的人所共有。C語言的一些精神可以總結(jié)如下:
信任程序員。
不阻止程序員做任何必要的操作。
保持語言的簡潔和簡單。
一種操作只提供一種方法。
保持速度,即使?fàn)奚梢浦残浴?/strong>
稍稍解釋一下最后一條,產(chǎn)生高效代碼的潛能是C語言最重要的能力。為了力求對一個(gè)簡單的操作不會出現(xiàn)代碼爆發(fā)(簡單操作需要大量代碼),許多操作定義為目標(biāo)機(jī)器的硬件如何操作而不是一般化的抽象規(guī)則。這種與機(jī)器配合的意愿例子有很多,比如在規(guī)定表達(dá)式中字符對象的寬度時(shí),字符對象的值是轉(zhuǎn)換為有符號還是無符號類型完全取決于哪種類型在目標(biāo)機(jī)器中計(jì)算起來更快。
/ The End /
免責(zé)聲明:本文轉(zhuǎn)載自網(wǎng)絡(luò),版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請與我聯(lián)系刪除。
掃碼關(guān)注我們
看更多嵌入式案例
喜歡本篇內(nèi)容請給我們點(diǎn)個(gè)在看
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!