Tcl 和 Raft 發明人的軟體設計哲學
阿新 • • 發佈:2018-12-14
John Ousterhout(斯坦福大學教授,Tcl 語言、Raft 協議的發明人...真的是超級牛人,Title 好多好多,這裡就列幾個大家熟悉的),在 Google 做了一次演講,題目就叫 「A Philosophy of Software Design」。
首先,John 問了大家一個問題,什麼是計算機科學裡最重要的事情?下面有回答 Abstration 的,有回答 Complexities 的,有回答 Testing 的。他還問了 Donald Knuth(高德納,程式設計師應該都認識吧),Kunth 說是 Layer of Abstration,而 John 的答案是 Problem Decomposition。
John 認為,很不可思議的是,在電腦科學的教育裡面,沒有任何課程是真正教學生軟體設計的。所以他在斯坦福開設了一門課程,在這門課裡,John 會教學生一些設計方法和原則,同時讓學生做一個比較大的專案。然後 John 會 Review 學生的程式碼,上課討論,從而讓學生掌握軟體設計的方法和原則。
John 提出了一個戰術程式設計(Tactical Programming)和戰略程式設計(Strategic Programming)的概念。戰術程式設計就是沒有太多設計,簡單粗暴快速實現;戰略程式設計則是需要做良好的設計,為長遠考慮。