《The Productive Programmer》9
1 在開發團隊和開發社區里面推行通用標準是一件好事。它使人們更容易閱讀彼此的代碼,更迅速地理解代碼中的習語,餅有效避免率性而為的隨意編程。但是,盲目固守標準就會跟完全沒有差不多。。
2 AntiObject
有時候,你應當質疑權威式你自己對么謳歌問題特定解決方案的偏好。
《PacMan》游戲 控制臺在20世紀70年代誕生,它的計算能力比今天的一個廉價手機還弱。然而,它需要解決一個相當有難度的問題:如何讓那些鬼魂穿過迷宮來追趕PacMan?那也就是說:穿過迷宮是一個移動目標的最短距離是多少?這是一個很大的問題,特別是如果你是用的內存很小或者計算能力很弱的。。。。。他們是用反目標的方法,將智能建于迷宮自身!
《PacMan》中的迷宮就像一個自動機。迷宮的每個房間都有與之相關的簡單規則,從左上端開始知道右下端,這些房間每次都執行一遍。每個房間會記住一個Pacman氣味值。當PacMan位于一個房間中,這個房間就具有最大的PacMan氣味值。如果它離開這個房間,改房間的PacMan氣味值就等于最大值減1。其為隨著輪次的進行而遞減,直至消失。這是,鬼魂們就變得愚鈍了。。。當他們嗅到氣味時,就朝著氣味最重的房間走。。
這個問題“顯而易見”的解決方案是給鬼魂們賦予智能。。然而更簡單的方法是給迷宮賦予智能。這就是反目標方法:反轉計算的前因后果。不要掉入“傳統的建模方法總是正確的”陷阱中,也學一個特定的問題完全可以用另一種語言很容易就解決了。。。
呵呵,最后一篇了。。看完了《The Productive Programmer》收獲還蠻大的。。開闊了一下視野。值!