Ads 468x60px

##EasyReadMore##

18 9月, 2017

C/C++的可移植性

3.1)隱式操作:C 簡單直接、結構清晰,每行代碼都能清楚的被反彙編成相應的語句,系統會嚴格按照你的代碼去執行。而 C++ 則不盡然,簡單的語句也說不清楚究竟有多少次構造和拷貝,這樣編寫底層代碼是完全不行的,底層需要精準和嚴格的控制。

3.2)語言接口:現代軟體工程項目的開發,不但對性能有很高要求,對於語言接口的對接能力也有很高要求,因為偌大的一個項目很少僅使用一種語言來進行開發,對於底層,C++ 對內存和硬體的控制不如 C 簡潔精準;對於很多動態語言和中間件,如:PHP、Python 和 Apache、Redis,都受了 C 的很大影響,甚至就是 C 開發出來的東西,對接起來非常方便。沒錯兒,其實 C++ 採用迂迴的方式也能對接的,但是,遠遠不如 C 方便,開發和維護成本非常高。

3.3)硬體層:

3.2.1>分配內存:系統加電後運行,經過彙編初始化棧,然後再跳轉到 C 語言的 start_init 函數去,這時候內存分配機制都還沒有建立,C++ 如何定義類?如何實例化對象?

3.2.2>標準庫依賴:C 的所有特性都可以不依賴任何庫運行,如有必要,可以按照特定需求自己編寫庫。

3.2.3>處理器兼容:C++ 的類是依賴基地址+偏移地址的尋址方式,很多微處理器只有簡單的給定地址尋址,不支持一條語句實現 base + offset 的尋址機制,很多 C++ 代碼編譯出來需要更多的指令來運算地址,導致性能下降了太多。

3.4)應用層:C++ 在做應用層尤其是 GUI 編程,這是 C++ 的傳統強項,我一直堅持 C 也能優雅的做出圖像和動畫,但開發效率確實較 C++ 低很多,最近有個很火的 RUST 語言,號稱是未來唯一能取代 C++ 的程式語言,感興趣的同學可以多關注下。

四、總結

下面我列舉了 10 多個目前熱門的發展方向,粗略的介紹了下列項目里最常用的程式語言:

image

0 意見:

張貼留言

 
Blogger Templates