计算机科学(英語:Computer science,有时缩写CS)是系统性研究信息计算的理论基础以及它们在计算机系统中如何实现与应用的实用技术的学科。[7] [8]它通常被形容为对那些创造、描述以及转换信息的算法处理的系统研究。计算机科学包含很多分支领域;有些强调特定结果的计算,比如计算机图形学;而有些是探討计算问题的性质,比如计算复杂性理论;还有一些领域專注于怎样实现计算,比如程式語言理論是研究描述计算的方法,而程式设计是应用特定的程式語言解决特定的计算问题,人机交互则是專注于怎样使计算机和计算变得有用、好用,以及随时随地为所用。

「计算机科学」的各地常用別名
中国大陸计算机科学
臺灣計算機科學[1][2]、電腦科學
港澳計算機科學[3][4]、電腦科學[5]
馬新电脑科学[6]
日本計算機科学

有时公众会误以为计算机科学就是解决计算机问题的事业(比如信息技术),或者只是与使用计算机的经验有关,如玩游戏、上网或者文字处理。其实计算机科学所关注的,不仅仅是去理解实现类似游戏、浏览器这些软件的程序的性质,更要通过现有的知识创造新的程序或者改进已有的程序。[9]

尽管计算机科学(computer science)的名字里包含计算机这几个字,但实际上计算机科学相当数量的领域都不涉及计算机本身的研究。因此,一些新的名字被提议出来。某些重点大学的院系倾向于术语计算科学(computing science),以精确强调两者之间的不同。丹麦科学家Peter Naur建议使用术语"datalogy",以反映这一事实,即科学学科是围绕着数据和数据处理,而不一定要涉及计算机。第一个使用这个术语的科学机构是哥本哈根大学Datalogy学院,该学院成立于1969年,Peter Naur便是第一任教授。这个术语主要被用于北欧国家。同时,在计算技术发展初期,《ACM通讯》建议了一些针对计算领域从业人员的术语:turingineer,turologist,flow-charts-man,applied meta-mathematician及applied epistemologist。[10] 三个月后在同样的期刊上,comptologist被提出,第二年又变成了hypologist[11] 术语computics也曾经被提议过。在欧洲大陆,起源于信息(information)和数学或者自动(automatic)的名字比起源于计算机或者计算(computation)更常见,如informatique(法语),Informatik(德语),informatika(斯拉夫语族)。

著名计算机科学家艾兹赫尔·戴克斯特拉曾经指出:“计算机科学并不只是关于计算机,就像天文学并不只是关于望远镜一样。”("Computer science is no more about computers than astronomy is about telescopes.")设计、部署计算机和计算机系统通常被认为是非计算机科学学科的领域。例如,研究计算机硬件被看作是计算机工程的一部分,而对于商业计算机系统的研究和部署被称为信息技术或者信息系统。然而,现如今也越来越多地融合了各类计算机相关学科的思想。计算机科学研究也经常与其它学科交叉,比如数学工程学认知科学经济学等。

计算机科学被认为比其它科学学科与数学的联系更加密切,一些观察者说计算就是一门数学科学。[12] 早期计算机科学受数学研究成果的影响很大,如库尔特·哥德尔艾伦·图灵路莎·彼得英语Rózsa Péter阿隆佐·邱奇等数学家的研究,这两个领域在某些学科,例如数理逻辑范畴论域理论代数,也不断有有益的思想交流。

历史

早期计算机科学建立的基础得追溯到最近电子计算机的发明。那些计算固定数值任务的机器,比如算盘,自古希腊时期即已存在,而用于加快计算的算法更是在算盘等古老的计算仪器发明之前就已被广泛使用。

Wilhelm Schickard在1623年设计了世界上第一台机械计算器,但没有完成它的建造。[13]布莱兹·帕斯卡在1642年设计并且建造了世界上第一台可以工作的机械计算器Pascaline。1673年,莱布尼兹开始了步进计算器英语Stepped reckoner的建造工作并于1694年竣工,他也因为记录了二进制系统而被认为是第一个计算机科学家和信息理论家。埃达·洛夫莱斯协助查尔斯·巴贝奇维多利亚时代设计了差分机[14][15]。1900年左右,打孔机问世[16]。然而以上这些机器都局限在只能完成单个任务,或者充其量是所有可能任务的子集。

到了20世纪40年代,随着更新更强大的计算机器(如ABC计算机电子数值积分计算机)被发明,术语“计算机”开始用于指代那些机器而不是它们的祖先。[17]计算机的概念变得更加清晰,它不仅仅用于数学运算,总的来说计算机科学的领域也扩展到了对于计算的研究。20世纪50年代至20世纪60年代早期,计算机科学开始被确立为不同种类的学术学科。[18] 世界上第一个计算机科学学位点由普渡大学在1962年设立。[19]随着实用计算机的出现,很多计算的应用都以它们自己的方式逐渐转变成了研究的不同领域。

虽然最初很多人并不相信计算机可能成为科学研究的领域,但是随后的50年里也逐渐被学术界认可。[20]IBM公司是那段时期计算机科学革命的参与者之一。在那段探索时期,IBM(International Business Machines的缩写)发布的IBM 704以及之后的IBM 709计算机被广泛使用。“不过,使用IBM电脑工作仍然是一件很沮丧的事情。如果你弄错了一条指令中的一个字母,程序将会崩溃,而你也得从头再来。”[20]20世纪50年代后期,计算机科学学科還在发展階段,这種問題在当时是一件很常見的事情。

随着时间的推移,计算机科学技术在可用性和有效性上都有显著提升。现代社会见证了计算机从仅仅由专业人士使用到被广大用户接受的重大转变。最初,计算机非常昂贵,要有效利用它们,某种程度上必须得由专业的计算机操作员来完成。然而,随着计算机变得普及和低廉,已经几乎不需要专人的协助,虽然某些时候援助依旧存在。

主要成就

 
军在二战时用于加密通信的恩尼格玛密码机。恩尼格玛加密信息在布莱切利园被大量破译被认为是帮助盟军在二战中获胜的重要因素。[21]

虽然计算机科学被认定为一门正规学科的历史很短暂,但它对科学和社会做出了许多根本性的贡献ー事实上,计算机科学与电子学一样,是信息时代的奠基科学,也是資訊革命的驱动力,被视为继工业革命(公元1750-1850年)和新石器革命(公元前8000-5000年)之后人类技术进步的第三次重大飞跃。

这些贡献包括: