為什么和其他語言相比C語言是快速的語言


初入門的我們經常聽見別人說“真正的程序員用C語言編程,C是最快的語言因為它是最靠近及其底層的語言。”那么和其他語言相比C語言到底有什么特別的呢?

C語言沒有什么特別,這就是它快速的秘訣。

新的語言支持更多的特性,比如,垃圾回收(garbage collection),動態類型(dynamic typing)等等。這些新加入的特性讓出學者們更容易上手。

問題的關鍵就在於,這些新的功能增加了處理開銷(processing overhead),也就降低了程序性能。而C語言中沒有這些功能,它不需要這些額外的開銷,這也意味着程序員自己要分配和釋放內存,時刻注意內存泄露問題,處理靜態類型的變量。

C語言的設計者權衡了利弊,把速度的需求放在了安全之上。C語言不會:

  • 檢查數組索引是否越界
  • 檢查未初始化的變量。
  • 檢查內存泄露。
  • 檢查空的指針的解引用。

當你在JAVA中使用數組索引時,虛擬機中有一些方法調用來檢查索引越界和其他的合理性問題。但在C語言中即使是再微小的事情都有安全隱患。它不是用來編寫大型的商業軟件的。

但這些設計上的決定並不是bugs。這些設計的初衷是為了讓編譯器和庫的編寫者可充分利用計算機每一個bit的計算能力。

即便如此,許多語言和平台,例如Java(和它的虛擬機),.NET(和它的通用語言運行庫),隨着即時編譯(從字節碼產生本地機器碼)等技術的出現,這些年的運行速度也有了很大的提高。

下面是C語言的精神和理論解釋:

C語言的不可移植。盡管C語言允許程序員編寫可移植的代碼,委員會並沒有強迫程序員編寫可移植的代碼,把C語言當成高級匯編語言。能夠編寫特定機器的語言是C語言的特征之一。

保持C語言的精神。委員會這么做的主要目的也是為了繼承C語言的傳統精神。這項精神有很多方面,但最根本的是C語言基本原則產生的社區情感,這種社區情感被使用C語言的人所共有。C語言的一些精神可以總結如下:

  • 信任程序員。
  • 不阻止程序員做任何必要的操作。
  • 保持語言的簡潔和簡單。
  • 一種操作只提供一種方法。
  • 保持速度,即使犧牲可移植性。

稍稍解釋一下最后一條,產生高效代碼的潛能是C語言最重要的能力。為了力求對一個簡單的操作不會出現代碼爆發(簡單操作需要大量代碼),許多操作定義為目標機器的硬件如何操作而不是一般化的抽象規則。這種與機器配合的意願例子有很多,比如在規定表達式中字符對象的寬度時,字符對象的值是轉換為有符號還是無符號類型完全取決於哪種類型在目標機器中計算起來更快。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM