代碼移植性與高效性的折衷——linux舍高效率而取移植性

代碼移植性與高效性的折衷 ——linux舍高效率而取移植性

2015-03-26  青島  張俊浩


任何高級語言編寫的代碼最終都會轉化爲硬件門電路的空間上的組合邏輯和時間上的時序邏輯,同樣所有的硬件門電路的空間上的組合邏輯和時間上的時序邏輯都可以用高級語言來描述 、設計~

我們通過軟件設計來去發揮硬件平臺的性能,甚至是想去榨乾硬件平臺的所有優勢~其實對於編程經驗少,或者項目開發經驗少的人,談到代碼的可移植性沒什麼感覺,更不要說在代碼的可移植性和高效性上尋找折衷的方案~我們只能通過前人的經驗、思考去體會這種糾結~

軟件的開發過程中或者說代碼的編寫過程中,每個選擇意味着妥協。程序員總是要在一大堆方案中做出取捨,儘量滿足那那些往往自相矛盾的目標。其中程序員面對的一個艱難的選擇就是:高效率和可移植性。因爲高效率往往導致代碼的不可移植,而選擇可移植性卻又會讓軟件的性能不那麼盡如人意~對於高效率和可移植性我們思考如下這幾點。

一、高效性是指什麼?(或者說高效性意味着社麼?或者說軟件的高效性來自哪裏?)

高效性軟件會充分利用硬件平臺自身獨特的優勢,將其發揮到淋漓盡致。比如,它會利用一些平臺獨有的硬件功能,圖形加速器、高速緩衝存儲器、專用的浮點指令.............

二、移植性是指什麼?(或者說爲什麼會有移植性?或者說我們爲什麼要考慮代碼的移植性?)

“移植性”的同義詞,我認爲是“通用性”、“一般性”,意味着我們的代碼經過處理後,可以運行在不同的硬件平臺,同樣也意味着我們的代碼在再利用不同硬件平臺或者項目的共性(很自然,萬物皆有共性,包括我們的處理器),這樣可能意味着我們要捨棄某些硬件平臺獨有的優勢資源而採用不同硬件的通用資源,這必然會導致我們無法利用某些硬件獨有的優勢資源,而相對地降低軟件在相應硬件平臺的效率~

三、我們爲什麼會傾向於選擇移植性相對於高效率?(或者說linux爲什麼舍高效率而取可移植性?)

我們考量的天平向可移植性這端傾斜的原因,我認爲有兩個。

【1】對於不同硬件平臺:如果我們的軟件只能運行在一種體系架構上,其潛在的市場競爭、受衆會大打折扣~

【2】對於同種硬件平臺:半導體設計世界的動向令人目不暇接,芯片的升級換代週期日益縮短。提高整個系統的性能,除了從軟件方面優化系統外,還可以不斷提高硬件平臺的性能。隨着硬件平臺的不斷升級換代,問題的關鍵已不在是軟件是否充分利用硬件優勢,而是軟件能否運行在更新的硬件平臺上。我們軟件的費盡心思的優化,可能還不不足以硬件平臺小小的升級,所以具備可移植性的軟件才能利用下一款超級計算機的優勢。軟件無法快速(市場競爭原因)移植到新的平臺上,它就無法存活。

四、移植性的兩個例子的思考——UNIX和Makefile

(1)UNIX

人們爲UNIX的可移植性感到感嘆!Thompson最早使用彙編語言編寫Unix。1972年,它採用B語言這種具有可移植性的編程語言改寫了代碼。很明顯他可能是想利用不斷涌現的新硬件的優勢。1973年另一位AT&T公司貝爾實驗室的成員Dennis Ritchie對B語言進行了擴展和調和調整,將其發展成今天全世界程序員爲之愛恨交加的C語言~

Unix作爲第一個可移植系統開創先河~

(2)Makefile

【1】什麼是Makefile?

Makefile是Linux下工程管理工具GNU make的配置文件,GNU make通過解析工程項目的編譯配置文件Makefile來編譯整個項目工程(詳見GNU make使用手冊~)。

【2】Makefile爲什麼可以具有可移植性、通用性?

GNU make手冊,或者其他講解make、Makefile的書籍、論壇大都在講解Makefile的語法、規則、模式,變量和各種通配符的使用,教我們增加Makefile的簡潔性和可移植性。自己也在這些書籍、論壇、Makefile源碼的磨練之下也經歷了從無知到有知的過程(現在仍在各種規則、符合的記憶和遺忘做痛苦鬥爭~)。但今天想問一個問題,爲什麼Makefile具有可移植性?

GNU make是在lLinux下用來管理源碼項目工程的管理工具,Makefile相對於源碼工程編譯規則、流程的配置文件。不同的項目工程,目的、功能、內容、源碼目錄結構、源文件不同,但都是項目工程,其管理、編譯流程有其通用性、一般性,這奠定了管理工具GUN make或者Makefile具有一般性~

進一步,爲什麼C語言或者說高級編程語言相對於機器語言具有可移植性?機器指令是跟具體硬件平臺相關的,不同硬件平臺的機器指令集不同,但是不同硬件平臺也有其共性。計算機組成也逃不出處理器、存儲器、輸入出入基本組成,機器指令也不外乎數據的傳輸、數據的算術/邏輯運算,所以硬件平臺的共性,或者說計算機的特點決定了高級語言可以跨平臺,具備可移植性~


發佈了54 篇原創文章 · 獲贊 56 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章