Posted by Mr. Saturday

前一陣子跟一位老前輩聊天,談論到computer science這個年輕卻充滿活力的學門。老前輩提到電腦科學這種東西,其實不能真正算是一個科學。為什麼呢?因為科學是追求永恆不變的真理的,這些真理的永恆價值不會隨著時間而改變,無論經過一百年或是一千年。反觀computer science,常常一些技術的出現和發展是短暫的,往往幾年之內會被更新或是淘汰。老前輩說道,要是Google沒有在當時發展出Pagerank,搞到現在才推出搜尋技術的話,那麼根本是枉然,也不會有今天的Google。所以他覺得電腦科學不算是在追求真理的「科學」。

聽到這番話,我覺得很有意思,心中馬上跳出一個想法:「這番話給那些電腦科學家聽到,第一個跳出來反對的一定就是Knuth了。」其實對於電腦科學是否真的是一門科學的爭論,在Knuth之前就已經開始了,早期大家一般認為搞電腦的人,頂多可以把自己研究的學問稱之為「電腦工程」,而不應該稱為電腦科學,因為早期的電腦工程師給人的感覺不過是寫寫程式,搞些電腦的架構罷了,比起科學的追求真理,似乎是八竿子打不著邊。不過在Knuth出現之後,大家認為是他真正把電腦科學變成了一門科學,主要的原因還是在於他為演算法的研究建立了一套基礎相當穩固且紮實的數學理論,Knuth不僅僅是傑出的programmer,同時也是世界聞名的數學家和演算法的專家。他的經典巨著The Art of Computer Programming裡頭寫的是他畢生研究演算法和程式設計的精華,電腦科學家的書架上一定都要買一套來擺在書架上當作聖經膜拜一番。

Knuth早在1968年,也就是他不過30歲時就已經把這套書籍的第一本寫完,如今又過了將近40年,Knuth已經完成了三本,第四本於近幾年也即將推出。Knuth幾十年的精力全數灌注於這幾本書之上,四十多年來只寫了三本,其寫作之嚴謹及講究程度,可見一斑。這套書籍也在1999年被American Scientist評選為世紀十二大科學書籍之一,與愛因斯坦的相對論齊名。可以說,這一套書籍讓電腦科學從此以後真正變成了一門科學。當然,這套書籍的高難度也是世間少有,Bill Gates甚至在這套書籍作了推薦:「如果你能讀懂這本書裡頭所有的東西,立刻把履歷表寄給我!」

以我個人的觀點來看,其實電腦科學早就已經是一門科學,演算法的研究本身不僅牽涉到嚴謹的數學理論,TuringGödel對於計算理論和數學完備性的研究,其實都是電腦科學的基石。一般人對於電腦科學常常有所誤解,其實電腦科學不僅僅只是寫程式而已,只寫程式充其量只能夠稱為computer engineering。現在的computer science其實已經演變成一個跨學門的領域,而且其中的各個子領域也整合了相當多不同的數學進來。簡單舉例來說,Robotics中談到的mechanics部分都是在討論幾何轉換的數學還有力學;Computer Graphics的部分則是相當倚重於矩陣運算;Computer Vision則是把訊號處理的數學應用得相當廣泛。其他領域的數學更是不勝枚舉。至少,學習這些東西的難度,比起學習純粹的物理和化學等純粹科學,似乎一點都沒有比較簡單!

我想我只有一個簡單的結論,就是電腦科學本身是相當重視實踐的一門科學,就像是物理和化學需要做實驗一樣,電腦科學也需要寫程式來做為另一種形式的實驗。兩者的研究精神其實都是相類似的,從這些研究衍生出來的新技術,在一般創業家眼中,在市場上有所謂的時效性,但是演算法本身,也絕對是不會因為時間的流動而喪失其價值的。大家認為呢?

喜歡這篇文章嗎? 給作者一點鼓勵吧!


  • http://insectlin.wordpress.com/ 昆蟲

    美國州立大學第一個 Computer Science Department 的創辦人Fred Brooks 說他將系名叫做 Computer Science 是一個錯誤。他認為 Computer Science 不是 Science.

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

    Computer Science 不是 science. (除了 Alan Turing 和少數人的東西以外)

  • http://insectlin.wordpress.com/ 昆蟲

    美國州立大學第一個 Computer Science Department 的創辦人Fred Brooks 說他將系名叫做 Computer Science 是一個錯誤。他認為 Computer Science 不是 Science.

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

    Computer Science 不是 science. (除了 Alan Turing 和少數人的東西以外)

  • http://pyridine.wordpress.com/ pyridine

    不過 Knuth, Godel, Turing 的研究比較接近數學, 數學也不是科學啊! 我的意思是, 不是科學應是值得驕傲的事, 沒有必要為此辯解啊.

  • http://pyridine.wordpress.com/ pyridine

    不過 Knuth, Godel, Turing 的研究比較接近數學, 數學也不是科學啊! 我的意思是, 不是科學應是值得驕傲的事, 沒有必要為此辯解啊.

  • http://willyfeng.blogspot.com/ Willy

    It’s a very interesting question. I believe everyone has his or own answer. For me, Computer Science is definitely not science; science is about revealing and interpreting natural phenomena. In this sense, Mathematics is not science either, but rather a kind of theology, though it is fundamental and essential to Science.

    Here is a good essay arguing Mathematics is not science and it could be applied to Computer Science (because I believe CS is a branch of Math). http://euclid.trentu.ca/math/sb/misc/mathsci.html

    But, it doesn’t matter if it is science or not. How we acquire knowledge is the point. Scientific Methods. That’s the course.

  • http://willyfeng.blogspot.com/ Willy

    It’s a very interesting question. I believe everyone has his or own answer. For me, Computer Science is definitely not science; science is about revealing and interpreting natural phenomena. In this sense, Mathematics is not science either, but rather a kind of theology, though it is fundamental and essential to Science.

    Here is a good essay arguing Mathematics is not science and it could be applied to Computer Science (because I believe CS is a branch of Math). http://euclid.trentu.ca/math/sb/misc/mathsci.html

    But, it doesn’t matter if it is science or not. How we acquire knowledge is the point. Scientific Methods. That’s the course.

  • http://www.wretch.cc/blog/spart spart

    呵呵 真有趣

    從來就不認為電腦科學不是科學

    可以被反覆實驗印證的東西 應該就算是了吧

    雖然永恆不變性很重要,不過因應時代改變的應變性,也不錯啦:)

    至少電腦科學對人類的生活也有很大的貢獻 呵呵~

  • http://www.wretch.cc/blog/spart spart

    呵呵 真有趣

    從來就不認為電腦科學不是科學

    可以被反覆實驗印證的東西 應該就算是了吧

    雖然永恆不變性很重要,不過因應時代改變的應變性,也不錯啦:)

    至少電腦科學對人類的生活也有很大的貢獻 呵呵~

  • anrris

    這個話題的癥結端看 “科學” 的定義在哪裡 …. ^^

    如果科學的定義是不明確的, 那麼這個問題的答案也是讀確定的

  • anrris

    這個話題的癥結端看 “科學” 的定義在哪裡 …. ^^

    如果科學的定義是不明確的, 那麼這個問題的答案也是讀確定的

  • http://fcamel.twbbs.org/archives/2007/04/03/351/ fcamel / chlo’s Blog » Computer Science? Computer Engineering?

    [...] 看到flyhermit提的一篇文章《Computer Science 算不算Science ?》,我覺得內文和comment都很有意思,像是comment提到: Science 和 Engineering 的不同不在難易、方法或甚至內容,不同之處在於目的。 [...]

  • http://pyridine.wordpress.com/ pyridine

    我想到了一個跟 The Art of Computer Programming 的笑話. 有一次 Steve Jobs 有機會見到 Knuth, 他立刻上前, 很大膽的說: “Knuth 教授, 我真是久仰您的大名. 您寫的書, 我每一本都有讀.” Knuth 說: “我打賭你是在放屁.” [抱歉, 跟主題無關, 不過你提到 Bill Gates 對 The Art of Computer Programming 的推崇, 我忍不住講個相關的笑話]

  • http://pyridine.wordpress.com/ pyridine

    我想到了一個跟 The Art of Computer Programming 的笑話. 有一次 Steve Jobs 有機會見到 Knuth, 他立刻上前, 很大膽的說: “Knuth 教授, 我真是久仰您的大名. 您寫的書, 我每一本都有讀.” Knuth 說: “我打賭你是在放屁.” [抱歉, 跟主題無關, 不過你提到 Bill Gates 對 The Art of Computer Programming 的推崇, 我忍不住講個相關的笑話]

  • http://mmdays.wordpress.com Mr. Saturday

    謝謝大家給的回應
    還有有趣的文章連結和笑話 XD
    這個問題我想的確是每個人心中都有一個答案
    而且答案或許真的不是那麼重要吧! :)
    就像spart講的 最重要的是電腦科學的確為人類做出了貢獻
    這才是真正的永恆的價值~~~

  • http://mmdays.wordpress.com Mr. Saturday

    謝謝大家給的回應
    還有有趣的文章連結和笑話 XD
    這個問題我想的確是每個人心中都有一個答案
    而且答案或許真的不是那麼重要吧! :)
    就像spart講的 最重要的是電腦科學的確為人類做出了貢獻
    這才是真正的永恆的價值~~~

  • http://trapeze.wordpress.com/ cat428

    interesting question.
    其實,從來想過這個問題。
    演算法真的是一個充滿奧秘的東西。
    永恆,這世界上,真的有永恆嗎?
    我們追求的科學,真的是永恆的嗎?

  • http://trapeze.wordpress.com/ cat428

    interesting question.
    其實,從來想過這個問題。
    演算法真的是一個充滿奧秘的東西。
    永恆,這世界上,真的有永恆嗎?
    我們追求的科學,真的是永恆的嗎?

  • http://surreal.afuro.holyou.net/forum/ LungZeno

    傳統科學(例如生物、化學、物理)的理論和概念也有被推翻或修正的時候,就是人們認為「超然永恆」的數學也有被推翻或修正的時候,如果以是否永恆來衡量是不是科學,是不是有點說不通?
    電腦科學只是讓這一切變得更快而已。

  • http://surreal.afuro.holyou.net/forum/ LungZeno

    傳統科學(例如生物、化學、物理)的理論和概念也有被推翻或修正的時候,就是人們認為「超然永恆」的數學也有被推翻或修正的時候,如果以是否永恆來衡量是不是科學,是不是有點說不通?
    電腦科學只是讓這一切變得更快而已。

  • oversky

    文中世紀十二大科學書籍之一之連結已失效,請問您還留有書單嗎?

blog comments powered by Disqus