《理解專業程式設計師》 第四章 我們能更有效的思考嗎?

2022-02-23 01:34:21 字數 1880 閱讀 9721

——氣象學家教給我們,**明天的天氣,有乙個簡單有效的辦法,在2/3的情況下都是正確的;只消說明天的天氣和今天一樣就是了。這樣一來,每個人都算得上氣象問題的專家了——66%的準確率。請想象一下,如果我們也能輕易的**99%的人類行為,那麼會早就多少心理學專家呢——只要一條簡單定律就足夠,這就是溫伯格雙胞胎定律。 

——醫療行業最大的秘密之一,就是90%的病都是自己好的——根本不用醫生動手,正是有了這樣乙個了不起的秘密,醫生要做的一切,就是避免傷害病人。乙個成功的醫生還得讓病人相信,為了治好他的病,他可是做了一些事情的——而且這些事情只能出自醫生那個淨是秘傳醫藥知識的聚寶盆。

為什麼人們習慣不思考?

1.有人不願意讓人們思考。在閱讀/複審規格說明書時,我們把這種「催眠詞」看做觸發器。這裡還真有些挺可愛的東西,包括「所有的」,「永遠」,「每乙個」,「可能」,「只有」,「同乙個」,「應該」,「也」,「將要」,「當然」,「所以」,「很明顯」,「顯而易見」等,我們的語言中存在這些催眠詞,從這個事實就可以引出為什麼人們不思考的一些原因。這樣的方式寫作,說話,從而扼殺了思考。

2.沒人在乎你是不是思考。絕大多數場合(當然是程式設計領域之外的場合),思考會給你帶來很大的麻煩,在大多數工作環境中,你要是想的太多,那就會冒丟掉工作的危險,因為工作完全成了慣例,思考被當成是管理層的一種特權。

即使在我們的私生活中,思考也是昂貴的事情,要是你每吃一口食物都得思考一番,每次過馬路都得思考一番,那樣你就沒什麼時間來做其他的事情——比如把省下來的時間用於思考必須思考的問題。

這對程式設計也適用,如果我們確實發現了什麼簡明的規則,遵照它就能百試不爽,避免思考,那麼我們就應該採用這樣的規則,還是那句話,把思考留給必須思考的東西。

3.思考讓人疲倦,因此也可能妨礙其他的思考。

那個不要「goto語句」的規則,實際上卻是另一種節省思考的習慣。當我發覺自己開始要寫乙個goto語句時,我把它當做乙個觸發器,而不是乙個催眠詞。我會對自己說,「溫伯格,從前你在類似情況下不假思索的寫了goto,結果導致了不少多餘的思考。因此現在幹嘛不多想想,這樣也許會在以後必要時節省不少思考呢」。                               

4.要是我想的太多,沒準就會在這裡發現錯誤,那我又該怎麼辦?

同樣,這也不是乙個徹頭徹尾的笨想法。通過多年的學校生活,我們學會了這個道理「如果老師沒發現,那就不是錯誤」。所以,如果我們知道老師其實沒有時間看我們的作業,那我們又為什麼要自尋煩惱地排除錯誤呢?

但問題是,計算機與學校作業不一樣,這裡的「老師」——也就是計算機——會檢視所有的作業,任何一處錯誤,都會被上百遍,甚至千遍的放大。在學校裡,採取鴕鳥政策,把頭埋進沙子,大多數時候都能蒙混過關——所以人們在編寫電腦程式時,往往也會同樣行事,這也就不奇怪了吧?

總結一下,我能得出人們不思考的4點「顯而易見」的原因:

1.有人不願意讓人們思考。

2.沒人在乎自己是不是思考。

3.過渡思考會讓大腦疲倦,因此可能妨礙其他的事情。

4.在學校裡我們沒學會思考。  「顯而易見地」這張單子不可能有錯誤或不完整的地方,難道你想接受挑戰,提提意見?

我們能更有效的思考嗎?(集中還是強迫)

當你在對付乙個難纏的問題時,有沒有過這樣的情形:過早的放棄了乙個很有希望的方案,只是因為如果採用這樣的方案,在最後出現結果之前你要全力投入得太多? 困在乙個問題上整整兩天,卻被乙個同事的偶爾提議——或者是乙個臨時的打岔、乙個偶然事件——給解救了:如果哪個程式設計師每過這樣的經歷,那他的靈魂一定是僵死得可以。

但還有乙個更能讓人受益的辦法,那就是把某個行業的「秘訣集合」都拿過來,然後做對比考察。比如說,考慮一下我們剛剛討論的這2條:

1.不要太早地放棄一種**。

2.不要讓一種**耽擱太長時間。

也許說到底,醫生拿那麼多錢是有道理的。他們這個行業秘訣中的秘訣,不在於這些「秘訣」本身,而在於知道何時應用哪個秘訣。

程式設計師修煉之道(通俗版) 第四章

程式設計師修煉之道 這本書中的內容挺不錯,裡面包含了很多精華,但一些句子很拗口,所以我就根據國人的閱讀習慣,在不改變原意的情況下對詞句稍加修改,標題中的 通俗版 就是這麼來的。1 繼承和多型是物件導向語言的基石,是合約可以真正閃耀的領域。說到這裡,你或許會想到黎克特制替換原則 子類必須要能通過基類的...

《道德經》程式設計師版第四章

道衝而用之或不盈。淵兮,似萬物之宗。挫其銳,解其紛,和其光,同其塵。湛兮,似或存。吾不知誰之子,象帝之先。程式的執行過程雖然是虛的。程式設計師秉承這個思路開發出各種程式,並且永遠不會感到滿足。程式的執行過程就像黑洞,它是各種程式的 新手程式設計師會有種銳氣,看到漂亮的效果,神奇的功能,就想直接cop...

C Primer plus 第四章程式示例

程式示例4.1 include include define density 62.4 intmain 程式示例4.2 include define praise you are an extraordinary being.intmain 程式示例4.3 include include defin...