為什麼把「計算機科學(Computer Science)」稱為「科學(Science)」,而不是「工程(Engineering)」?
在一節「電路原理」的課程里,老師在講到「Electric Engineering」時提到一個問題,即為什麼研究計算機領域的學科叫做「Science」,而不是「Engineering」?
實際上 Computer Engineering (計算機工程) 做為一門單獨的學科也是存在。高校的課程設置里 Computer Science 和 Computer Engineering 側重點不同。CS 側重計算原理、演算法等偏理論的,而 CE 側重硬體、電路等偏實用的。此外還有強調計算方法、數值計算等的 Computing Science (計算科學)和強調軟體工程、項目管理的 Software Engineering (軟體工程)。
- RIO那個回答很好很全面。
- 這裡主要是舉例說明CS和CE(EE)兩專業的差異。
- 此文術語縮寫較多,非內行理解可能有難度。不會查英漢詞典的理解也有難度。
- 反對請不懂別亂點,贊同隨意。
- 1. From the occupation"s point of view:
- 1.1. 學計算機科學/CS的人都去了(微軟IBM,谷歌百度,Facebook/Twitter)等等軟體開發公司。
- 如圖:Paradise of CS - Facebook office
- 1.2. 學CE or EE 的都去了英特爾AMD,蘋果黑莓,思科華為等硬體設計生產企業。
- 如圖:The Hall of EE - MIT EE lab
- 注意看圖中的示波器,晶元等等。
- 2. From the deliverables" point of view:
- 2.1. CS - all sorts of computing:
- 2.2. EE - All sorts of chips:
- 3. From a normal(自) outsider(黑).
- 計算機科學的人最多學個數字電路神馬的,但也就那麼一兩門。整天拿個鍵盤不知道敲啥玩意兒的。
- 而EE的夥計那可不得了,從模電數電學到單片機編譯原理,然後大小晶元做了一堆。
這個問題我可以思考過,因為上學期遇到了一個麻煩,就是之前我們學校的CS屬於art and science department裡面的,今年扔到了engineering裡面之後所有的ta都被弄暈了。但其實真正對computer science這個命名產生質疑的不是science這個詞,是computer。關於計算機科學最經典的一句話是Dijkstra說的,叫做:「Computer Science is no more about computers than astronomy is about telescopes.」在很多國家裡面,計算機科學並不叫做這個名字,命名大多偏向兩個辭彙,「信息」和「數據」,而迴避了計算機這個辭彙。說到底程序的思想就是處理信息和數據的,和計算機的關係並沒有想像中的那麼大。在這裡面,計算機是一個輔助工具,並不是思路和思想的主題。因為計算機科學的獨特學科安排,一度別人問我學什麼的我都是說我是學數學的。所以一門純粹的理論學科被叫做數學,應該也沒有問題。
我們學校的計算機學院分成了computer science 和 computer engineering。science 會比較偏向於軟體,而engineering會比較偏向於硬體。
也正如@采銅 所說,在《黑客與畫家》一書當中,作者提到,「Computer Science」這個劃分是不恰當的,因為在它的名義下,數學家,計算機博物學家,和黑客,不得不在呆在一起。
正好手邊有一本《計算機科學概論》(Brookshear那本),摘抄一段文字:
計算機科學這門學科,是要為計算機設計、計算機程序設計、信息處理、問題的演算法解決方案和演算法過程本身等主題建立科學的基礎。計算機科學既是當今計算機應用的支柱,又是今後計算基礎設施的基礎。
而科學的含義:http://zh.wikipedia.org/wiki/%E7%A7%91%E5%AD%A6
1、致力於揭示自然真象,而對自然作理由充分的觀察或研究。這一觀察,通常指可通過必要的方法進行的,或能通過科學方法——一套用以評價經驗知識的程序而進行的。
2、通過這樣的研究而獲得的有組織體系的知識。
可見,計算機科學是滿足這樣過程的,對演算法、對軟體工程、對人工智慧、等等這些理論的研究與理論形成,都屬於科學。雖然,我們在日常中對計算機的直觀感受是來自應用,難免會感覺這應該是Engineering而非Science,可這個領域確實很大,但我們日常接觸的東西不過是其中很小的一部分。
繼續摘抄:數據存儲;數據操控;操作系統;組網與網際網路;演算法;程序設計語言;軟體工程;數據抽象;資料庫系統;計算機圖形;人工智慧;計算理論。
這是開頭提到那本書的各個章節,很多很雜,有種說法「計算機科學是人類科學研究的集大成者也是各個領域的重要交集。」
同樣,它給人類社會帶來的變化,總所周知吧。所以,這樣一個領域不能算作科學?還能算作啥呢。當然,「科學(原句是「物理」這裡改做「科學」也是是通的)的盡頭是數學,數學的盡頭是哲學,哲學的盡頭是神學。」我們學校分CS和CE,都屬於CSE的Department,而且都在College of Engineering
「因為有了『計算理論』,從此計算機不僅僅只是一門工程了,而是變為科學了。」——我們「計算理論」老師如是說。
我認為是專業設置的不合理。目前計算機科學下屬分支太多,很大一部分根本稱不上是科學。應該把系統設計,軟體開發,網路,分散式,資料庫等等分支單獨拿出來成立一個學科,那計算就科學就名副其實了。
俺們學校CS 和 CE是分開的,EE和CE是一個系. CS是單獨一個系
另外,其實也有EECS(Electrical Engineering and Computer Science)或者也有CSE(把CS和CE)和在一起的系。出於交叉學科的發展和創新。
我們學校也是把CS和CE分開,簡單來說,CS以後做軟體,CE以後做硬體。
我們學校是分為CS和SE(Software Engineering)的我們這些Cser的人讀的東西都很泛 編程語言學 電路邏輯什麼的也學 但是側重點感覺還是偏向硬體方面 所以我覺得Computer Science更能體現出這個專業所具有的特點吧 軟硬結合 科學發展 而不單單只是象SE那樣開發軟體 測試軟體 和 資料庫研究而已
推薦閱讀:
※信息的運動遵不遵循牛頓定律?
※為什麼國外實驗室的氣場高大上?
※把一隻從未見過大海的鳥空降在大海,那麼這隻鳥能自己飛回大陸嗎?
※神經科學相關領域用於共享或討論的平台或工具有哪些?
※氫可以看成氣態的鹼金屬嗎?