1. 程式人生 > >Unix設計思想——小而專注

Unix設計思想——小而專注

內容來自 Mike Gancarz 的著作:《 Linux and Unix Philosophy》的總結

一 :小即是美

傳統程式設計師的心中經常懷有一個編寫出偉大軟體的隱祕渴望,在著手開始開發專案時,他們往往要花數週,數月甚至數年的時間去開發一個能夠解決世界上全部問題的程式。這種做法不僅商業代價高昂,而且也脫離現實。

其實,在現實世界中,只要把一些小巧的解決方案組合起來,幾乎不存在解決不了的問題。

1 . 小程式易於理解:

小程式只會集中精力完成一項功能,因此將小程式集合在一起的“全業務”解決方案能將失誤減少到最少,他們只包含幾個為數不多的幾個演算法,絕大部分都要與要完成的工作直接相關。

2 . 小程式易於維護

大程式相對較複雜,也給人帶來了理解上的障礙,不利於維護和移植,小程式相對而言,耦合度更低,容易理解,bug相對而言少,易於維護 。

3 . 小程式消耗的系統資源較少

i . 因為他們的可執行映象只佔用少量的記憶體,作業系統就能更輕而易舉地為他們分配空間,這大大 減少了記憶體交換和分頁的需求,往往能夠顯著提高系統性能。

ii . 大型程式則有著龐大的二進位制映象檔案(binary image),作業系統要花費巨大的代價來裝載他們,頻繁發生的分頁和交換動作又會進一步影響系統性能。

iii. 記憶體越大,使用小程式的系統就越能從中獲益,因為大容量的記憶體使得更多小程式可以在核心快取記憶體中駐留更長的時間,減少對二級快取的依賴。

4 . 小程式容易與其他工具相結合

小程式基本上只實現一個單獨的功能,和其他的小程式之間的耦合度較低,這樣設計大大提高了小程式使用的靈活性,可以靈活地和其他工具結合來完成更加複雜的功能。

二 :讓每一個程式只做好一件事情

1 . 一個好的程式應該集中所有的精力來完成單一的任務,並將它出色地完成。

2 . 當一個小程式被載入到記憶體中,行駛它的功能,然後退出,釋放自己使用的系統資源,然後讓下一個目標接著執行,以此類推,完成大而複雜的功能。

3 . 編寫這種“只做好一件事情”的應用最終會產生一個較小的程式,目的和效率合二為一,相輔相成。

相關推薦

Unix設計思想——專注

內容來自 Mike Gancarz 的著作:《 Linux and Unix Philosophy》的總結 一 :小即是美 傳統程式設計師的心中經常懷有一個編寫出偉大軟體的隱祕渴望,

《linux/unix設計思想》讀書筆記(回憶)

出現問題 組合 例如 讀書筆記 開發 性能 發生 ech window 1) 程序應該小而專一,程序應該盡量的小,且只專註於一件事上,不要開發那些看起來有用但是90%的情況都用不到的特性; 2) 程序不只要考慮性能, 程序的可移植性更重要,shell和perl,pyt

《Linux/Unix設計思想》隨筆

“佈道者”指的是那些堅定地信仰某一宗教,並且不遺餘力地向人們傳播此宗教的修道者。 Unix 哲學的幾條準則看似簡單。事實上,它們簡單到會容易使人們忽略其重要性。這就是它們頗具欺騙性的地方。其實,簡單的外表下掩蓋著一個事實:如果人們能夠始終如一地貫徹它們,這些準則

Linux/Unix設計思想 讀書筆記

也許我們應該提及,大眾汽車公司曾經圍繞著"小即是美"的概念開展了一次成功的汽車營銷活動,並藉此銷售了數以百萬計的汽車;或者想一想主流Unix供應商Sun公司的事例,它的商業戰略基於"集中所有資源推出最好的拳頭產品"這一思想,或者換句話說,也就是"只做好一件事"的理念。那麼,人們對於掌上電腦、無線網路訪問和手持

經典文摘:Linux/Unix設計思想

Mike Gancarz是一位技術佈道者。他是Linux/Unix最主要的倡導者之一,也是最早開發X Window System的先驅。他把一些在Unix/Linux社群裡口口相傳的哲學思想總結提煉,寫

《LINUX 、UNIX 設計思想》讀後感,前六章

《LINUX 、UNIX 設計思想》 用UNIX思想來創造軟體,與設計軟體,LINUX思想也是UNIX思想的一種變稱,稱為第三種系統。 指本書中的第一種系統,第二種系統。 快速建立原型,發展第一種系統,快速達到第三種系統。從小的系統,以小為好建立。 不要只多一個方面看等第一

讀書筆記-《Linux/Unix設計思想

本書主要講的是Unix程式設計思想,具體涉及到linux的內容不多。 整本書的一個基本出發點是開源。其中主要強調的觀點包括: 1.小即是美 作者持有的主要觀點是程式應該以小為美。小程式實現小功能,每個程式儘量保持單一職責,大的處理過程由多個小程式串聯組成,而不是建立一個大的程

WePush v2.3.2 釋出,專注批量推送的美的工具

   WePush v2.3.2 已釋出,它是一個專注批量推送的小而美的工具。 目前支援的訊息型別:模板訊息-公眾號、模板訊息-小程式、微信客服訊息、阿里雲簡訊、阿里大於模板簡訊、騰訊雲簡訊、雲片網簡訊。 更新內容如下: v2.3.2 通過檔案匯入時,自動判斷檔案

WePush 2.3.3 釋出,專注批量推送的美的工具

   WePush 2.3.3 已釋出,它是一個專注批量推送的小而美的工具。 目前支援的訊息型別:模板訊息-公眾號、模板訊息-小程式、微信客服訊息、阿里雲簡訊、阿里大於模板簡訊、騰訊雲簡訊、雲片網簡訊。 更新內容如下: v2.3.3 使用Velocity模板引擎處

linux/unix核心設計思想

 1) 程式應該小而專一,程式應該儘量的小,且只專注於一件事上,不要開發那些看起來有用但是90%的情況都用不到的特性;  2) 程式不只要考慮效能, 程式的可移植性更重要,shell和perl,python等指令碼相比c有更好的移植性; 3)一切皆檔案,儘量使用文字檔案

設計思想與模式之四靜態代理模式

test 創建 靜態代理 pan 代理 對象的訪問 override todo 父類 一 概述 1.什麽是代理模式? 為了隱藏與保護目標對象,為其他對象提供一個代理以控制對該目標對象的訪問。 2.什麽是靜態代理模式? 代理模式有兩種: 靜態代理:代理對象固定。 動態代理:

設計思想與模式之五觀察者模式

per -- 什麽 over out junit 測試類 rem second 一 概述 1.什麽是觀察者模式? 將一個對象視作被觀察者,當它發出某種行為或者發生某種變化時,通知所有依賴它的對象(觀察者),這種設計模式叫做觀察者設計模式。 2.觀察者設

FPGA設計思想(持續更新)

流水線 切割 下一個 logs 學習 altera uart lte 問題 一、 流水線設計   將原本一個時鐘周期完成的較大的組合邏輯通過合理的切割後分由多個時鐘周期完成。該部分邏輯運行的時鐘頻率會有明顯對的提升,提高系統的性能用面積換速度   一個流水線設計需要4個步驟

把握linux內核設計思想(十三):內存管理之進程地址空間

color 區域 left ons 文章 進程的地址空間 tmp ica interval 【版權聲明:尊重原創,轉載請保留出處:blog.csdn.net/shallnet。文章僅供學習交流,請勿用於商業用途】 進程地址空間由進程可尋址的虛擬內存組成

java之 ------ 設計思想

eth 刪除 出現 語言 net back sin dsm 相關信息 java的設計思想 (設計思想。是須要不斷領悟的。。。) 一、封裝 學java的人都知道這是向對象的編程語言,從字面上理解,就是針對對象的一些操作,將具有某一特性的實體封裝成一個類或者是將具有一

Python進階---面向對象的程序設計思想(一)

anim 它的 代碼冗余 tell 汽水 處理流程 關系 apach 精準 thon的面向對象 一、面向過程與面向對象的對比 面向過程的程序設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條流水線,考慮周全什麽時候處理什麽東西。 優點

設計思想之高內聚低耦合

判斷 表現 一個 span 改變 get 什麽是 軟件 高內聚低耦合 1.什麽是高內聚? 內聚針對的是模塊內部關系,指的是模塊各構成要素間的聯系,高內聚說明各構成要素間聯系緊密。 2.高內聚的優點 各構成要素間聯系緊密,說明各構成要素是實現模塊功能充分的存在,沒

如何打造一個精的電商網站架構?

升級 它的 應用開發 sql語句 大綱 網關 響應 文件服務器 upd 本文大綱: 1. 小型電商網站的架構 2. 日誌與監控系統的解決方案 3. 構建數據庫的主從架構 4. 基於共享存儲的圖片服務器架構 5. 移動M站建設 6. 系統容量預估 7. 緩存系統

基於 CSP 的設計思想和 OOP 設計思想的異同

處理 思想 soc 抽象 職責 請求 github 成了 協議 LinkerLin Go語言推崇的CSP編程模型和設計思想,並沒有引起很多Go開發者包括Go標準庫作者的重視。標準庫的很多設計保留了很濃的OOP的味道。本篇Blog想比較下從設計的角度看,CSP

jQuery設計思想

() 思想 基本 title world width 第一個元素 mat visible 前面的話   在深入了解jQuery的各個細節之前,需要對jQuery的設計思想有一個大致的了解。在遇到問題時, 知道應該使用jQuery的哪一個功能,然後迅速從手冊中找到具體的用法。