2007年4月3日 星期二

Computer Science? Computer Engineering?

看到flyhermit提的一篇文章《Computer Science 算不算Science ?》,我覺得內文和comment都很有意思,像是comment提到:

Science 和 Engineering 的不同不在難易、方法或甚至內容,不同之處在於目的。

針對”以目的區分 Science 跟 Engineering”這點,我回了一些看法,這裡就直接貼上啦。


套用DL一哥的話,科學家的目的在追尋真理,工程師是解決問題,這個說法不全然正確,但已突顯出明確的差異。

科學和工程都是由人得來的產物,用人來看比較清楚,所以我以科學家和工程師的角度來看。舉例來說,科學家喜歡尋找有趣的問題,那問題不見得要有什麼用,也許有一天會有用,像代數之於密碼學,但科學家在做研究時不見得關心這個。

工程師是看到現存問題,要解決問題,他們不關心沒有用的問題,像是費馬最後定理x^n + y^n = z^n,對n >=3 到底成不成立。 ( 若有位科學家要求工程師寫程式模擬,讓他能依數據猜測思考方向,那麼,由於有使用者要求,這問題對工程師來說,就變成有用的問題了 )

Computer Science的媒介是電腦,現今所有科學都要透過電腦匯整資料,電腦的本質相當應用,天生就是工程師愛用的工具。像Lisp誕生時,Lisp作者John McCarthy的學生想把它變成programming language,John McCarthy笑著對學生說,你沒搞懂,Lisp只是個描述用數學而已。

從結果論來看,John McCarthy發明Lisp時,是在研究科學(數學),他的學生把它變成工具,進一步推演了progamming language的發展,甚至影響到今日PL的設計,開發軟體的設計,變成很有用的東西,於是工程師們用Lisp,或用帶有Lisp理念所設計出的PL (Python,Ruby)解決問題 。

所以我覺得Computer Science本質是很工程的,但它也自有理論基礎,要搞科學也沒問題,只是發展歷史比其它科學淺,看起來比較不科學。從Computer Science背景的人做事來看,視他們的目的,他們可能是科學家,也可能是工程師。

至於美感,不管是科學家還是工程師,在各自領域發展到一個程度,相信有類似氣息的人,都會同意那是種藝術,將人的想法發揮到極致的結晶。而真理這類有爭議的詞,就不在討論範圍內了。

附帶一提,會思考是科學還是工程,是因為我曾煩惱要走那條路,後來發現科學和工程的道路不是兩個點,而是一個spectrum,可以當工程師裡的科學家,也可以當科學家裡的工程師,到不需要拘泥於走那條路,在中間打轉也好,順著興趣發展就好。

我自己原本較偏工程,所以想朝陌生的科學發展看看,兩邊都轉一圈再回來,定能有更有趣的觀點,而且中庸之道尚來是我喜好的,甚至是人生觀的核心概念。

沒有留言:

張貼留言