三读《UNIX编程艺术》——UNIX哲学
-
看看UNIX的生命力:今天,化生為Linux、BSD、Solaris、MacOS X以及好幾個其它變種的Unix,使其前所未有的強(qiáng)大。UNIX這種穩(wěn)定而且強(qiáng)大的生命力會讓你的知識投資更趨穩(wěn)定。
-
UNIX的設(shè)計理念:最終用戶永遠(yuǎn)比操作系統(tǒng)設(shè)計人員更清楚他們究竟需要什么。它提供的是機(jī)制,而非策略。,雖然這種自由放縱主義風(fēng)格會讓它失去很多非技術(shù)型用戶。但從長遠(yuǎn)來看,這是個優(yōu)勢,因為策略相對短壽,而機(jī)制才會長存。
-
對windows的批評:在這樣的操作系統(tǒng)中,完成操作系統(tǒng)預(yù)見的任務(wù)很容易,但是完成其沒有預(yù)料到的任務(wù),用戶不是無計可施就是痛苦不堪。但UNIX卻具有非常徹底的靈活性。
-
UNIX的hack之趣:對于程序員和開發(fā)人員來說,如果完成某項任務(wù)所需付出的努力對他們是個挑戰(zhàn)卻又恰好又在力所能及的范圍內(nèi),他們就會覺得很有樂趣。因此,趣味性是一個峰值效率的標(biāo)志。充滿痛苦的開發(fā)環(huán)境只會浪費(fèi)勞動力和創(chuàng)造力;只會在無形中耗費(fèi)大量時間、資金、機(jī)會。
UNIX哲學(xué)
模塊原則:使用簡潔的接口拼合簡單的部件
-
計算機(jī)編程的本質(zhì)就是控制復(fù)雜度。
-
用清晰的接口把若干簡單的模塊組合成一個復(fù)雜軟件。如此一來,多數(shù)問題只會局限于某個局部,那么就還有希望對局部進(jìn)行改進(jìn)而不至牽動全身。
清晰原則:清晰勝于機(jī)巧
-
維護(hù)如此重要而成本如此高昂;在寫程序時,要想到你不是寫給執(zhí)行代碼的計算機(jī)看的,而是給人——將來閱讀維護(hù)源碼的人,包括你自己——看的。
組合原則:設(shè)計時考慮拼接組合
-
在輸入輸出方面,Unix傳統(tǒng)極力提倡采用簡單化、文本化、面向流、設(shè)備無關(guān)的格式。
分離原則:策略同機(jī)制分離,接口同引擎分離
簡潔原則:設(shè)計要簡潔,復(fù)雜度能低則低
-
來自多方面的壓力常常會使程序變得復(fù)雜,其中一種就是來自技術(shù)上的虛榮心理。
-
過度的復(fù)雜性往往來自項目的要求,而這些要求常常基于當(dāng)月的推銷熱點(diǎn),而不是給予顧客的需求和軟件實際能提供的功能。
-
要避免這些陷阱,唯一的辦法就是鼓勵另一種軟件文化,以簡潔為美,人人對龐大復(fù)雜的東西群起而攻之——這是一個非常看重簡單解決方案的工程傳統(tǒng),總是設(shè)法將程序系統(tǒng)分解為幾個能夠協(xié)作的小部分,并本能的抵制任何用過多噱頭來粉飾程序的企圖。
吝嗇原則:除非別無他法,不要編寫龐大的程序
透明性原則:設(shè)計要可見,以便審查和調(diào)試
-
因為調(diào)試通常會占用四分之三甚至更多的開發(fā)時間,所以一開始就多做點(diǎn)工作以減少日后調(diào)試的工作量會很劃算。一個特別有效的減少調(diào)試工作量的方法就是設(shè)計時充分考慮透明性和顯見性。
健壯性:健壯源于透明和簡潔
表示原則:把知識疊入數(shù)據(jù)以求邏輯質(zhì)樸而健壯
-
數(shù)據(jù)要比編程邏輯更容易駕馭。所以接下來,如果要在復(fù)雜數(shù)據(jù)和復(fù)雜代碼中選擇一個,寧愿選擇前者。更進(jìn)一步:在設(shè)計中,你應(yīng)該主動將代碼的復(fù)雜度轉(zhuǎn)移到數(shù)據(jù)之中去。
通俗原則:接口設(shè)計避免標(biāo)新立異
-
最易用的程序就是用戶需要學(xué)習(xí)新東西最少的程序——或者,換句話說,最易用的程序就是最切合用戶已有知識的程序。
緘默原則:如果一個程序沒有什么好說的,就保持沉默
補(bǔ)救原則:出現(xiàn)異常時,馬上退出并給出足量錯誤信息
-
軟件要盡可能從容的應(yīng)付各種錯誤輸入和自身的運(yùn)行錯誤。但是,如果做不到這一點(diǎn),就讓程序盡可能以一種容易診斷錯誤的方式終止。
經(jīng)濟(jì)原則:寧花機(jī)器一分,不花程序員一秒
生成原則:避免手工hack,盡量編寫程序去生成程序
優(yōu)化原則:雕琢前先得有原型,跑之前先學(xué)會走
-
90%的功能現(xiàn)在能實現(xiàn),比100%的功能永遠(yuǎn)實現(xiàn)不了強(qiáng)。做好原型設(shè)計可以幫助你避免為蠅頭小利而投入過多的時間。
-
先制作原型,再精雕細(xì)琢。優(yōu)化之前先確保能用。
-
先給你的設(shè)計做個未優(yōu)化的、運(yùn)行緩慢、很耗內(nèi)存但是正確的實現(xiàn),然后進(jìn)行系統(tǒng)地調(diào)整,尋找那些可以通過犧牲最小局部簡潔性而獲得較大性能提升的地方。
多樣原則:決不相信所謂的“不二法門”的斷言
擴(kuò)展原則:設(shè)計著眼未來,未來總比預(yù)想快
-
要為數(shù)據(jù)格式和代碼留下擴(kuò)展的空間。
-
設(shè)計協(xié)議或者文件格式時,應(yīng)使其具有充分的自描述性以便可以擴(kuò)展。
KISS——Keep It Simple,Stupid!
總結(jié)
以上是生活随笔為你收集整理的三读《UNIX编程艺术》——UNIX哲学的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenGL库 资源下载
- 下一篇: 一个都不能少:全面认识IE插件