【為什麼我們要挑選這篇文章】Github 上常有神人整理的懶人包,這次又出爐了所有軟體工程師必備的定律,整理者將此稱為駭客信條(hacker-laws),就來看看這些作業時的潛在規定有哪些吧。(責任編輯:方禹涵)
摩爾定律(Moore’s Law) 知道嗎? 帕金森定律(Parkinson’s Law)講的又是什麼?
作為一名合格的開發人員,除了本身「碼力」超強外,或多或少要知道幾條「潛規則」,例如依賴反轉原則(DIP)、強健性原則(Robustness)……
關於開發人員必須要知道的定義、原則以及理論,一位名叫 Dave Kerr 的小哥哥在 Github 上專門開了個科普樓,為廣大程式設計師介紹必備的定律。
他將這個項目稱為:駭客信條(hacker-laws)。
下面文摘菌(本文作者)為大家編譯幾條,具體內容,請大家移步 GitHub。
Hacker-laws GitHub 傳送門:點這 。
阿姆達爾定律(Amdahl’s law)
一個計算機科學界的經驗法則,因吉恩·阿姆達爾而得名。它代表了處理器並行運算之後效率提升的能力。
並行計算中的加速比,是用並行前的執行速度和並行後的執行速度之比來表示的,它表示了在並行化之後的效率提升情況。
可以看出,即使是一個 50% 可並行的程序,在超過 10 個處理單元的情況下也幾乎沒有什麼提高,而一個 95%可並行的程序,在超過 1,000 個處理單元的情況下,仍然可以顯著提高速度。
炒作週期(The Hype Cycle)和阿瑪拉定律(Amara’s law)
「人們總是高估一項科技所帶來的短期效益,卻又低估它的長期影響。」—— 羅伊·阿馬拉(Roy Amara)
Hype Cycle(技術成熟度曲線)是製技術興奮度和發展成熟度的直觀表現,最初由高德納公司(Gartner)提出,如下圖所示:,如下圖所示:
簡而言之,這個週期表明,新技術及其潛在影響通常會引發一陣高度關注。技術團隊經常馬不停蹄進入這些技術領域,但往往無功而返。這可能是因為該技術還不夠成熟,或者現實應用還沒有完全實現。經過一段時間後,技術的能力提高,使用它的實際應用機會增加,團隊最終可以取得成功。 羅伊·阿馬拉 最簡潔地總結了這一點:「人們總是高估一項科技所帶來的短期效益,卻又低估它的長期影響。」
霍夫施塔特定律(Hofstadter’s law)
表面上和帕金森定律截然相反的霍夫施塔特定律表明:「 即使已經考慮到了霍夫施塔特定律 ,你在一件事上花費的時間總是要比想像得要多。」
該定律與帕金森定律看起來相互矛盾,但其實兩者可以並行使用。霍夫施塔特定律表明,在給一個複雜的項目制定截止期限的時候,人們很容易自信過度。
帕金森定律(Parkinson’s Law)
帕金森定律是官僚主義或官僚主義現象的一種別稱,被稱為 20 世紀西方文化三大發現之一(編按:另外兩項為「莫非定律」、「彼得原理」)。也可稱之為「官場病」、「組織麻痺病」或者「大企業病」。
帕金森得出結論:在行政管理中,行政機構會像金字塔一樣不斷增多,行政人員會不斷膨脹,每個人都很忙,但組織效率越來越低下。這條定律又被稱為「金字塔上升」現象。
將帕金森定律與霍夫施塔特定律結合,會得出一個更加悲觀的結論:你的工作範圍會不斷擴大,結案日期遙不可及。
Unix 哲學(Unix Philosophy)
這一理念表明的是:小即是美,程式做好一件事即可;工程師盡可能早地建立原型 ;可移植性比效率更重要 。另外數據應該保存為文字檔案 ,盡可能地榨取軟體的全部價值 。使用 shell 指令碼來提高效率和可移植性 、避免使用可定制性低下的使用者介面,所有程式都是數據的過濾器。
觀看更詳細內容,G itHub 傳送門:點這 。
(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈Github 一天标星 1k+,程序员需要知道的那些定理和法则 〉。首圖來源:Pixabay。)
延伸閱讀
GitHub 上破 10 萬顆星!工程師寫程式控訴中國「996」血汗加班制度
GitHub 神人整理出一份 Python 開源清單:15 個領域、181 個開源項目任你用
破千顆星的 GitHub 超強資源包,所有好用的「深度學習」資源都在這裡啦!