電腦科學

出自維基百科,自由嘅百科全書
(由電算跳轉過來)
Jump to navigation Jump to search
large capital lambda Plot of a quicksort algorithm
Utah teapot representing computer graphics Microsoft Tastenmaus mouse representing human-computer interaction
電腦科學會研究「運算」呢樣嘢嘅理論特性以及實際應用。

電腦科學粵拼din6 nou5 fo1 hok6英文computer science),又有叫運算科學computation science / computing science),係專門研究電腦嘅一門科學工程學領域[1][2][3]。「電腦」廣義上指運算機械(computation machine),即係曉用數據做運算,並且俾出一啲有用結果嘅機械,簡單例子:而家手上有一柞「每個學生喺呢次考試當中攞到嘅分數」嘅數據,要用呢柞數字計出邊個考第一。而電腦科學就係集中思考運算機械點樣表示同儲起數據、用各種嘅演算法嚟處理數據、以及彼此之間傳送數據等等[4]

電腦科學係一個理論同實踐兼備嘅領域。一方面,電腦科學-好似一般嘅科學領域噉-包含一啲好抽象同理論化嘅研究,例如係運算理論(theory of computation)上對運算機械嘅研究噉,呢啲研究會將運算機械想像成好似以下噉嘅數學物體[5]

DFAexample.svg

上圖呢部機械會攞一串符號做輸入,再話俾用家知,串符號入面 0 嘅數量係咪雙數:部機開始於 S1 狀態;當部機讀到一個 0 嗰陣,會進入 S2 狀態,而當佢再讀到個 0 嗰時,會返去 S1 狀態;如果佢讀到嘅係 1 或者第啲符號嗰時,部機唔會改變狀態;喺部機讀完嗮串符號之後,如果串符號入面 0 嘅數量係雙數,佢會處於 S1 狀態,否則佢就會處於 S2 狀態。呢部抽象機械可以用多種唔同嘅物理機制實現-運算理論上嘅思考係抽象性(abstract)嘅[5][6]

另一方面,電腦科學又屬工程學嘅一門,包含實踐性嘅研究,思考點樣用運算機械造出有經濟價值嘅產品。應用電腦科學嘅例子有電腦圖像學(computer graphics)同電子遊戲開發(video game development)呢兩個領域。電腦圖像學顧名思義研究電腦圖像,諗點樣運用電腦做嘅運算嚟製造圖像,而呢啲圖像可以用嚟將數據視覺化,或者整動畫電子遊戲等嘅產品[7];電子遊戲開發就係思考點整電子遊戲(電子遊戲係一種用嚟做娛樂用途嘅電腦軟件),會運用電腦圖像、電腦編程(諗點樣俾指令教一部電腦做運算)、同人工智能(諗點樣用電腦運算令電腦做出有智能嘅行為)等電腦科學上嘅技術,務求製作出好玩同好賣嘅電子遊戲[8]。總括嚟講,廿一世紀嘅電腦科學係一個蓬勃嘅領域。

電腦科學哲學[編輯]

一般主流學界都認同,電腦科學包含咗多種唔同嘅研究範式(paradigm)[9][10],當中蘇聯出世嘅電腦科學家彼得·惠拿(Peter Wegner)就主張,電腦科學包含三大範式[11]

  • 數學:電腦科學,尤其係運算理論(theory of computation)等比較理論性嘅子領域,會運用好似數學噉嘅演繹推理方法(例如係數學證明),即係齋靠已有嘅知識去嘗試推理出新嘅知識;例子有停機問題(halting problem)嘅思考,喺解決呢個問題嘅過程入面,亞倫圖靈(Alan Turing)用咗反證法(proof by contradiction)證明呢個世界上冇可能有電腦能夠攞一個程式嘅做輸入,再俾出正確嘅「呢段碼會唔會停機」輸出-成個過程都係齋靠邏輯推理,就好似一般數學家嘅思考過程噉[12]
  • 科學:另一方面,電腦科學嘅某啲子領域又會運用科學方法做研究,即係唔係齋靠諗,而係去攞一啲描述現實世界嘅數據,再用數據驗證佢哋嘅假說;例子有人工智能(AI)上嘅研究,人工智能其中一個目的係要令電腦做出有智能嘅行為,所以人工智能領域嘅科學家好多時會做實驗-好似物理學自然科學領域噉-嘗試了解智能嘅本質,例如搵柞馬騮實驗室嗰度,觀察佢哋係點運用工具嚟解難嘅(一般認為,曉用工具係智能嘅表現),得到數據之後,嘗試編寫出能夠教電腦做出同樣行為嘅程式[13]
  • 科技:除此之外,電腦科學嘅研究好多時會似科技同工程學領域嘅噉,以「創造出最優質嘅技術或者產品」為目標;例子可以睇電子遊戲開發(video game development)呢個領域,電子遊戲開發嘅過程會用到好多涉及電腦嘅技術-電子遊戲本質上就係電腦軟件嘅一種,所以要製作一隻電子遊戲實要做大量嘅程式編寫,而且電子遊戲仲會用到電腦圖像(CG,用電腦造嘅圖像)同人工智能等嘅技術[14];所以遊戲製作研究會思考「一個遊戲程式用乜演算法行先會順暢」等嘅問題,而憑藉呢啲知識,遊戲製作師會以「製作出好玩(吸引到玩家俾錢)嘅遊戲」做目標工作-好似以「設計出最佳產品」為目標嘅工程師[15]

理論電腦科學[編輯]

內文: 理論電腦科學

電腦系統[編輯]

應用電腦科學[編輯]

人工智能[編輯]

內文: 人工智能

軟件工程[編輯]

內文: 軟件工程

歷史[編輯]

電腦科學可以追返上去未有現代電腦嘅時代。人類諗咗好多架生來計數,就好似古代已經發明咗算盤輔助我哋做加減乘除。古時人類已經搵到無數嘅演算法,時間仲早過發明各色各樣嘅計數架生。

威廉嶭卡(Wilhelm Schickard)1623年起咗第一部可用嘅機械計數機。1673年Gottfried Leibniz展示咗一部叫Stepped Reckoner嘅機械計數機。Gottfried Leibniz被視為第一個電腦科學家同資訊學家,原因之一係因為佢完善咗二進制系統。1820年Thomas de Colmar發表Arithmometer之後就開始量產機械計數機,佢係世界上第一部足夠可靠同實淨到可以喺日常辦工室之類嘅環境用嘅計數機。1822年Charles Babbage開始設計第一部自動機械計數機差分機(Difference engine),過程中令佢有咗第一部可編程機械計數機Analytical Engine嘅構想。1843年佢開始研究Analytical Engine,兩年之間佢就諗到好多被視為配代電腦特徵嘅功能。好重要嘅一步就係用咗Jacquard loom嘅打孔卡系統,令到部嘢基本上可編程。1843年,喺翻譯一篇關於Analytical Engine嘅法文文章時,Ada Lovelace喺佢加入嘅譯者筆記入面記錄咗一個計白努利數嘅演算法,被視為世上第一個電腦程式。1885年Herman Hollerith發明咗tabulator,一部用打孔卡來處理統計數據嘅野,佢間公司之後成為IBM嘅一部份。1937年,Howard Aiken說服IBM整佢部超大型可編程計數機ASCC/Harvard Mark I。

1940年代間,有人整咗一部又新又勁嘅計數機,大家叫電腦(computer),嗰時開始只係指佢而唔係之前嗰啲計數機。大家開始明白到電腦唔只可以計數,仲可計各種唔同嘢,電腦科學呢門學問開始變成研究所有同運算有關嘅嘢。1945年,IBM畀錢成立咗紐約市哥倫比亞大學嘅華生科學運算實驗室。紐約市哥倫比亞大學同埋IBM千絲萬縷嘅研究關係催生咗一門新嘅學科,而紐約市哥倫比亞大學就喺1946年推出咗第一個有學分嘅電腦科學課程。五十年代至六十年代早期電腦科學開始獨立,1953年劍橋大學推出咗電腦科學第一個文憑課程。

雖然一開始大家都唔認為電腦科學可以獨立成為一門科學學問,但係五十年代後期開始學術界都接受咗電腦科學係一門獨立嘅科學學問。

睇埋[編輯]

[編輯]

  1. "Computer science is the study of information" Department of Computer and Information Science 互聯網檔案館歸檔,歸檔日期2009年5月29號,., Guttenberg Information Technologies
  2. "Computer science is the study of computation." Computer Science Department, College of Saint Benedict 互聯網檔案館歸檔,歸檔日期2007年2月3號,., Saint John's University
  3. "Computer Science is the study of all aspects of computer systems, from the theoretical foundations to the very practical aspects of managing large software projects." Massey University 互聯網檔案館歸檔,歸檔日期2006年6月19號,.
  4. Definition - What does Computer Science mean?. Technopedia.
  5. 5.0 5.1 John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman (2000). Introduction to Automata Theory, Languages, and Computation (2nd Edition). Pearson Education.
  6. Anderson, James A. (2006). Automata theory with modern applications. With contributions by Tom Head. Cambridge: Cambridge University Press.
  7. James D. Foley, Andries Van Dam, Steven K. Feiner and John F. Hughes (1995). Computer Graphics: Principles and Practice. Addison-Wesley.
  8. Bethke, Erik (2003). Game development and production. Texas: Wordware Publishing, Inc.
  9. Denning, P.J.; Comer, D.E.; Gries, D.; Mulder, M.C.; Tucker, A.; Turner, A.J.; Young, P.R. (January 1989). "Computing as a discipline". Communications of the ACM. 32: 9–23.
  10. Turner, Raymond, Angius, Nicola , Primiero, Giuseppe. (Spring 2019). "The Philosophy of Computer Science", The Stanford Encyclopedia of Philosophy, Edward N. Zalta (ed.),
  11. Wegner, P. (October 13–15, 1976). Research paradigms in computer science. Proceedings of the 2nd international Conference on Software Engineering. San Francisco, California, United States: IEEE Computer Society Press, Los Alamitos, CA.
  12. Church, Alonzo (1936). "An Unsolvable Problem of Elementary Number Theory". American Journal of Mathematics. 58 (58): 345–363.
  13. Eden, A.H. (2007). "Three Paradigms of Computer Science" (PDF). Minds and Machines. 17 (2): 135–167.
  14. McShaffry, M. (2014). Game coding complete. Nelson Education.
  15. Jenkins, H. (2004). Game design as narrative. Computer, 44(53), 118-130.

[編輯]