04夢斷程式碼閱讀筆記

笠大發表於2024-06-16

《夢斷程式碼4》

作者並不是像其他作者一樣,中規中矩,開頭就是以第0章命名,這是因為0代表程式設計師的思維方式,因為計算機從0開始計數。

作者開始迷戀於一個開放程式碼並可以由遊戲玩家更改程式的一個遊戲,併為在它的基礎上創新和增添一些功能而樂此不疲。

文中寫到“Hello World”程式雖然一無所用,但足以蠱惑人心;它鼓勵新手,喚起每個程式設計師心中樂觀的一面。計算機器協會(The Association for Computing Machinery ), 維護了一張網頁,上面列出將近兩百種程式語言版本的"Hello World" 程式。簡直就是程式程式碼的羅塞塔石碑。

後面作者提出了一個問題:

為什麼就是不能像造橋那樣造軟體?

人類文明執行於軟體之上。軟體建立藝術卻隱於暗處,即便對於專家們也是如此。網際網路時間帶來了快速發展的技術產生、公司創立、創造財富等也同時帶來了程式的缺陷問題。而對軟體開發者來說,則過的是時快時慢:如果靈感到了,一切順利,則全然忘記時間,全心投入高速的開發之中。反之遇到瓶頸,則舉步維艱的軟體時間。軟體不能像建造橋樑那樣一勞永逸可以造福上百年。反而漏洞百出,麻煩不斷,錯誤不停。帶來無窮盡的改進和苦惱。

第1章 死定了

一個錯誤就可能讓一個專案“死定了”。往往帶來不可知因素的時間陷阱。

布魯克斯法則:

向已延誤的專案中補充人力,只會使其繼續延誤。

布魯克斯寫道,軟體開發者通常都是樂天派,他們認定每個缺陷都可以被迅速修正,且修正舊缺陷必能減少新缺陷的數量。

布魯克斯發現,在實際開發中,編碼只佔軟體專案開發時間的1/6, 有一半時間用於測試和修正缺陷。但只有少數專案經理會真正按照這種思路來安排開發人員的工作時間。

所謂“人月", 是一種科學管理概念,它假定生產力可被拆分為不連續、無差異、可替換的單元。

布魯克斯觀察到,“只有在任務能分派給許多互相之間無須溝通的工作者時,人和月才是可互換品。”

“對於軟體而言,專案各有差異、工具不斷升級,每當團隊中加入一個新組員,老組員就得放下手邊的工作,幫助新組員進入角色,每位組員都要等待重新分派任務,好讓新組員有事可做。在你意識到這一切之前,已經遠遠落後於進度了。也就是說,每次重新安排進度計劃,都導致僱用更多人力,於是又不得不重新安排進度。

製作軟體的大量工作受困於“序列約束",它限制了任務分解的程度:完成某項任務是處理其他任務的先決條件,這與人力投入多少無關。

布魯克斯法則暗示最理想的開發組規模是一個人——無須停下工作與同事溝通的單個開發者

“開源的成功告訴我們,對於創造性工作,玩耍是最經濟有效的模式。”

個人心得:

剛在大一時我對寫程式碼還是很感興趣的,尤其是當除錯成功那一刻,內心充滿著無限的喜悅,而現在隨著寫程式碼的數量越來越多,當初的那份喜悅也漸漸消失了,以後要重拾當初那份寫“Hello World!”的渴望和愉悅,畢竟興趣才是支援我在這個專業走下去的最大的動力。

大一的時候,作業不多,每次老師留下的程式碼作業都會按時完成,而且還會去敲別的程式碼,現在作業留的多了,但是寫作業的態度並不認真了,總是像文中所寫的那樣“延誤進度”;以後還是要在寫程式碼時按時按量完成,每次都給自己計算好時間。

相關文章