程序語言的設計和解決問題的范式都是有很多講究的, 它們決不止于解決一個個具體的問題. 它對于我們人生的思考也有很好的啟發, 或者可以看成相當棒的輔助工具. 借助編程的思想, 幫我在混沌的人生中指出一條清晰的道路.
面向對象
把寬泛無序的東西都嚴格限定在"對象"里, 定義好它的 variables 和 methods,規定好類型和權限才能使用, 規定好 input 和 output, 這樣在使用時才不會因為隨意導致各種諸如越界等錯誤.
思考:
- 在工作和生活中, 無處不見因為越界導致的麻煩事. 領導和下屬對責任的不明晰, 導致任務無法有效完成. 領導只關心 output, 下屬卻更在意 input; 因為結果最終是算領導的, 下屬不過領取微博的薪資過日子.
- 為什么"清官難斷家務事"? 因為法官判的是法律案件, 法律是有章可循的\面向對象的. 而家務事拉拉雜雜,界限模糊,你中有我,我中有你, 更多時候就是心里不平衡, 這種無法量化的東西也只能虛晃一招. 也就是多給對方臉上貼金, 說點暖心的話, 支持的話,理解的話, 寬慰的話. 更實在一些, 多一點實際的關心和幫助, 物質的補償和酬謝, 時間和空間上的陪伴, 給足 input.
- 處對象時, 一定要弄清楚對方的需求是什么. 你一廂情愿的喜歡對方并沒什么用. 要雙方的 input 和 output 都對接好了,關系才能持久. 不然, 就算結婚了就算有孩子了就一定幸福快樂嗎? 另一方面, 很多家庭之所以還能維系, 是因為利益捆綁在一起了, 分開了生活成本(居住, 飲食, 出行, 社交等)會陡然上升, 于是將就在一起吧. 為什么現代人的離婚率遠遠高于農業時代? 經濟條件好了嘛, 一個人也能活的很好, 我宅我自在.
divide and conquer
人們常常在大問題面前驚慌失措. 其實, 再大的問題, 第一步就是要將它切割, 變成一步步可以執行的小步驟. 困難不再可拍, 困難可以最終解決.
self-balanced tree
不論理想和情懷, 大部分人工作是為了換取生活的物資. 工作是兢兢業業\精力高度集中的狀態; 生活則是隨意,輕輕松松的狀態. 雖然娛樂業,服務業和現代通訊把這兩者的界線變得模糊, 但是這兩種狀態是不一樣的.
一個人要活得健康有活力, 這兩者的平衡是要把握好的. 工作再成功, 也不能代替生活的空白; 生活再豐富, 也不能代替工作上的稱心如意.
一個家庭要幸福美滿, 兩個人的平衡也是必須的. self-balanced 不是意味著兩者的高度絕對相同, 而是高度差不能超過一個 level, 也就是它們至少夠的著對方. 自己跑太快時,愿意拉對方一把.
natural ordered data
雖然直白地談論年齡\薪資\官階是不禮貌的\傷和氣的, 但是你必須承認這就是事實. 因為這些數字, 它們才好排序,才好 sorted, 不然你那么多算法都無從實施. 如果你把自己看成統計學上的一個點, 蟻群中的一個螞蟻, 星星中一顆不發光的行星, 就不需要自卑難過了. 而且, 這也只是你暫時的狀態, 你意識到你的起點低, 這是奮起直追的第一步. 只怕自己沾沾自喜而追得太慢.
binary search
世界上最快的算法效率是 log2(n),也就是二分法. 所以剛開始懂事時, 小孩就被教區分好人和壞人. 雖然現在知道世界是復雜的, 那種分法不準確. 可是這是最有效率的教法, 總比混淆是非好! 所謂復雜, 主要是維度/角度的不同. 我們可以從道德\法律\財富\成績\智商\情商\外貌\性格等 attribute 上區分他們