2013年2月1日 星期五

object-oriented vs. procedural

我常常遇到一個現象,有些人搭電梯時,習慣按鈕去“叫”電梯來。譬如說他要搭電梯往上,但是電梯現在停在上面樓層,他會按往下的按鍵去“叫電梯下來”。當然我們知道這是錯誤的操作方式,而且往往會造成其他人的困擾。不過這個情況出現之頻繁,讓我們不得不思考其在工程與介面設計上的意義。

我認為正確的與上述錯誤的兩種電梯操作方式,正反應了兩種思維模式,也正巧對應了程式語言中 object-oriented 與 procedural programming languages 兩大類程式語言的設計典範。在 object-oriented 程式語言中,程式設計師思考的是要完成何種目標,正如同正確的電梯操作方式,要按鈕選擇你的目標 (up or down)。在 procedural 程式語言中,程式設計師思考的是如何指揮電腦工作,正如同錯誤的電梯操作方式,按鈕選擇的是你要電梯如何運作 (up or down)。

用另一種說法,前者要求使用者將注意力放在 what,後者要求使用者思考 how。