unix設計思想中的哲學

昨日部門技術分享的內容是“Unix的設計思想”,有些感悟,這里分享給大家。

unix是什么

不是軟件開發的人可能不懂什么是unix,但其實它老牛逼了,我們每個人幾乎無時無刻不和它打交道。

unix是經典的操作系統,可以說是現在操作系統的鼻祖,大家聽說過的系統中大部分是來源于unix,例如linux、蘋果電腦的osx都是類unix系統。大家使用的蘋果手機,它的ios系統的核心也是類unix,安卓手機用的也是linux內核,大部分服務器都是使用linux。

你們現在都手機不離手,每天都要上網,你們說你們不是每天都離不開它~

unix的設計思想

你們現在知道unix這么厲害了,那它的設計思想絕對靠譜沒錯吧。這里舍棄只適用于技術領域的設計原則,并“翻譯”部分原則成非軟件用語。完整的介紹可以查看維基上的條目

do one thing and do it well

在軟件開發層面的意義是盡可能讓一個代碼模塊只做一件事情,把這件事情做好,然后把一個個小功能組合起來實現大功能。打個比方,把“泡茶”這件事情拆分成“燒開水”、“找茶葉”、“放茶葉”、“倒水”這樣4個功能。這樣很好維護,如果其中一個模塊沒做好,只要修改那個模塊就好,而且可以提高程序的復用性,比如“燒水”除了可以用于“泡茶”還可以和其他小功能組合成其他功能,例如“煮泡面”。

  • 單一職責

一個模塊做一件事情,就叫單一職責。只做一件事情,就能把事情做的更好,而且模塊間的組合可以提高軟件的復用性。這是一個普適的道理,可以以很多角度去解讀。比如現代工業中,產品的生產環節被拆分成很多部分,每一部分的生產來源可能是世界各地。再比如,在企業管理中,讓每個部門每個組甚至每個人做職業明確專一的工作,職業劃分清楚,不僅可以提高專業度,也可以提高整個企業的協同效率,不會出現相互推諉的情況。

  • 杠桿效應

假設有A、B、C、D四個功能,那排列組合可以組成N個功能,這就是一個杠桿效應。比如ABC串連可能形成一個功能A+B+C,對AB的結果進行C操作又可以形成一個功能C(A+B)。只要職責清晰,雖然每個功能很小很專一,但是組合起來就可以無限的可能。如果你掌握A技能,同時掌握B技能,它們組合起來就可能給你創造很大價值。例如你英語很好又善于投資,早幾年看到了看到了國外的比特幣的資料,然后隨便買了幾千,現在就財務自由了...

  • 一生只做一件事

日本人的制造業世界一流,有很大部分原因在于他們做事的專一程度。很多日本人,一輩子只做一件事,做飯的做一輩子飯,做手表的做一輩子手表。一生或者一個階段只做一件事,對于大部分人或者組織來說都是做好事情的必須。前段時間我有一個習慣培養計劃,一下子寫了很多個,結果發現顧此失彼,后來直接刪到只有一個,我花一年時間能養成一個好習慣,其實完全值得。

簡單即是美

這個在程序開發里的意思是盡量避免不必要的復雜性,例如接口簡單易用。KISS,即Keep It Simple & Stupid。在程序開發上,這樣可以提高程序的使用成本。在類unix系統中,各種文本都是小寫為主,而且有簡寫。例如lslist的意思,但它還可以寫的更簡單,一個l就夠了。這個設計思想其實和喬布斯對蘋果產品的定義也是一樣的。沒有多余的信息和操作,只保留最精簡最核心的點。蘋果產品的設計無論是硬件還是軟件都是盡可能簡潔。這個思想可以在平時的創作、溝通表達等等不同角度去應用。例如你可以在寫PPT、工作報告時不要太花哨,重點突出,少無價值信息的修飾,刻意精簡生活用品數量,衣服太多每天還得糾結串哪件~

90%的解決方案

沒有100%完美的方案,99%完美度的方案的成本很可能是90%的幾倍。所以不追求100%,如果一個方案可以解決問題的90%,那就可以了。打個比方,如果你上網想買個椅子,花10分時間你看到一款還行,那你就把它買下。也許你花點時間可以找到質量更好價格更便宜的,但你很可能為此付出幾個小時時間。100%和90%的差距并不大,而更好的椅子可能只是便宜幾十塊,質量好點但是并沒有打區別,但你卻為此付出了2小時。

結語

專一、單一、簡單、不追求完美,這些思想都是概念上的,大家可以腦洞大開,看看還能有什么應用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容