2017年7月11日 星期二

編程之魂 (Masterminds of Programming)

這本書很久以前買的,當時跟一位高手談起這本書,對方覺得買這種這種書浪費錢,根本是垃圾,害我很不好意思說其實我有買一本,後來沒多久也丟到床底下了。

最近領悟出這種書該怎麼讀才有效,只需要讀兩個重點:
  • 大師們失敗、做錯、後悔的部份
  • 大師如何學習
馬雲說過多看看別人怎麼失敗,怎麼倒楣的...成功學的書最好少看!這點筆者非常同意,因為你很難複製別人的成功,但失敗很容易重蹈覆轍。(別誤會,我並非什麼馬粉,馬雲的說法在思考的藝術也有提及,並非他獨創)

個人認為自傳也可以用這種讀法,但看華人的自傳要很小心,因為華人通常喜歡隱惡揚善。作家王鼎鈞曾說「大老闆的文字乃是他的糟粕,功業才是他的精華」,正所謂立功者不必立言。比較不會踩雷的就是讀古人的傳記,讀科學家的傳記,用這種讀法就可以高速讀完,至於花邊新聞賺多少錢這種完全可以略過。

有了這樣的領悟後,再從床底下翻出本書,然後1-2個小時內就看完了,這邊節錄重點。各位看了以後不用買本書現賺 300TWD - 得到的知識-> 無價!

BASIC 之父 Thomas Kurtz

Q. 學習程序的最佳方式是什麼?
A.
  • 不需要啃完整本手冊
  • 簡單的編碼設定,便於訪問的易用實現(編按:應該指的就是不需要編譯就能執行馬上看到結果)
  • 例子要多
Q. 應該如何講授調試(debug)呢?
A. 未雨綢繆是最佳方案

AWK 之父 Al Aho、Peter Weinberger、Brian Kernighan

Q. 如何成為一名較好的程序員
A.
  • 多加思考
  • 多 coding,交給專家評鑑
  • 教會別人,組織材料展現出來,學生會向你提問,深化你的見解
  • 學習新技術
  • 學習新演算法
Q. 如何講授 debug?
A.
  • 應該和編程一塊講授
  • 練習單元測試
  • 閱讀 The Practice of Programming
Q. AWK 犯的錯誤?
A. 沒有一開始就進行嚴格測試。

Q. 如何學一門新語言?
A.
  • 通過精選的範例學習
  • 多讀好範例
Q. 對於一種新程式語言,應該如何組織使用手冊的內容
A.
  • 要有很好的索引
  • 範例應該短小精幹
Q. 如何提昇自己的 coding 能力?
A.
  • 寫大量的程式
  • 改進寫過的程式
  • 請別人幫忙看
  • 使用不同的語言解同樣的問題
  • 替別人的 code 增加功能或 debug
Q. 讀者應該從你的經驗學到什麼?
A. 是要變得簡單,而不是比必須的更簡單,無論是誰提出的要求。

Objective C 之父 Brad Cox、Tom Love

Q. 您如何培訓一名軟件開發者
A. 
  • 測試 code
  • 閱讀 source code
  • 研究精心設計的產品
Q. 如何識別出簡單性
A. 對於程式語言,可以度量 BNF 描述的頁數

Q. 哪些是最重要的?
A. 注意新錯誤

Q. 對掌握複雜的技術性概念有何建議?
A.
在德國,要成為一名註冊建築師必須在各種建築上花很長的時間,至少 6 個月。在成為合法建築師前,必須了解上下水管道系統、電路系統的工作原理,以及實際建造房屋需要掌握的許多知識。軟體業缺乏這種訓練。

Java 之父 James Gosling

Q. 資訊科學系的大學生缺乏什麼?
A. 過度注重技術層面,忽略 team work。

C# 之父 Anders Hejlsberg

Q. 人們應該從你的經歷中學到什麼經驗和教訓?
A.
  • 簡單性一直是一個贏家,如果你能找到一個更簡單的解決方案
  • 想要真正的擅長某些事情,就必須對此事充滿熱情

UML 三巨頭

Q. 現在的學生應該更多地學習什麼?
A.
  • 學習如何抽象
  • 學習團隊工作
  • 研究他人程式
Q. 寫文件的建議
A. 將遍佈系統本身的模式用文件紀錄

6 則留言:

  1. 我很喜歡這類的書, 除了這本, 我還買了:

    图灵和 ACM 图灵奖
    IEEE计算机先驱奖
    奇思妙想
    編程大師訪談錄
    編程人生

    轉換口味, 老是讀一些技術書籍也是會彈性疲乏。
    讀完 图灵和 ACM 图灵奖 才知道大師級的功績, 以及電腦發展史, 相當不錯。

    回覆刪除
    回覆
    1. 這些大師都是人傑,從這些人傑身上東取一點、西取一點,完成一個「我」

      刪除
  2. 也身為程式設計工一員的我,從來也沒想過要看這類的書…
    這難道就是所謂的武痴境界?

    回覆刪除
    回覆
    1. 台灣大多數公司覺得如果你一把年紀還在練這個,你不是武痴是白痴,他覺得你應該穿著剪裁合宜的襯衫(與高層時要繫領帶,與下屬時就不用了,懂得我說什麼嗎?),內包GYM練過的精壯肉體,手拿簡報筆用一口流利的英文報告無懈可擊的ppt,言談中帶著風趣與自信,下班時拎著球拍,穿著運動服與球鞋,用鼓勵的微笑對手下的工程師(武痴)說別做太晚了,然後把一盒雞精放在他的面前,工程師感動得眼帶淚光,這樣才是成功人士,懂嗎?

      刪除
    2. 不懂,你懂了也沒這樣作,我怎麼會懂,懂的人,是不會來這裡的…

      刪除
    3. 哈哈,我是自我嘲諷阿

      刪除