计算机科学-wiki百科


计算机科学

  • 1 历史
    • 1.1 主要成就
  • 2 哲学
  • 3 计算机科学的领域
    • 3.1 理论计算机科学
      • 3.1.1 数据结构和算法
      • 3.1.2 计算理论
      • 3.1.3 信息论与编码理论
      • 3.1.4 编程语言和编译器
      • 3.1.5 形式化方法
    • 3.2 计算机系统
      • 3.2.1 计算机体系结构与计算机工程
      • 3.2.2 操作系统
      • 3.2.3 并发、并行与分布式系统
      • 3.2.4 计算机网络
      • 3.2.5 计算机安全和密码学
      • 3.2.6 数据库
    • 3.3 计算机应用技术
      • 3.3.1 计算机图形学
      • 3.3.2 科学计算
      • 3.3.3 多媒体技术
      • 3.3.4 人工智能
    • 3.4 软件工程
  • 4 学术界
    • 4.1 会议
    • 4.2 期刊
  • 5 作为高等教育的二级专业
  • 6 工业界
  • 7 参考文献
  • 8 延伸阅读
    计算机科学(英语:Computer science,有时缩写为CS)是系统性研究信息与计算的理论基础以及它们在计算机系统中如何实现与应用的实用技术的学科。
    [7] [8]它通常被形容为对那些创造、描述以及转换信息的算法处理的系统研究。计算机科学包含很多分支领域;
    有些强调特定结果的计算,比如计算机图形学;
    而有些是探讨计算问题的性质,比如计算复杂性理论;
    还有一些领域专注于怎样实现计算,比如编程语言理论是研究描述计算的方法,
    而程序设计是应用特定的编程语言解决特定的计算问题,
    人机交互则是专注于怎样使计算机和计算变得有用、好用,以及随时随地为人所用。
    计算机科学被认为比其它科学学科与数学的联系更加密切,一些观察者说计算就是一门数学科学。
    [12] 早期计算机科学受数学研究成果的影响很大,如库尔特·哥德尔、艾伦·图灵、路莎·彼得,阿隆佐·邱奇等数学家的研究,
    这两个领域在某些学科,例如数理逻辑、范畴论、域理论和代数,也不断有有益的思想交流。

    历史

    早期计算机科学创建的基础得追溯到最近电子计算机的发明。那些计算固定数值任务的机器,比如算盘,自古希腊时期即已存在,而用于加快计算的算法更是在算盘等古老的计算仪器发明之前就已被广泛使用。
    
    Wilhelm Schickard在1623年设计了世界上第一台机械计算器,但没有完成它的建造。[13]布莱兹·帕斯卡在1642年设计并且建造了世界上第一台可以工作的机械计算器Pascaline。1673年,莱布尼兹开始了步进计算器的建造工作并于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年代后期,计算机科学学科还在发展阶段,这种问题在当时是一件很常见的事情。
    
    随着时间的推移,计算机科学技术在可用性和有效性上都有显著提升。现代社会见证了计算机从仅仅由专业人士使用到被广大用户接受的重大转变。最初,计算机非常昂贵,要有效利用它们,某种程度上必须得由专业的计算机操作员来完成。然而,随着计算机变得普及和低廉,已经几乎不需要专人的协助,虽然某些时候援助依旧存在。

    主要成就

    虽然计算机科学被认定为一门正规学科的历史很短暂,但它对科学和社会做出了许多根本性的贡献ー事实上,计算机科学与电子学一样,是信息时代的奠基科学,也是信息革命的驱动力,被视为继工业革命(公元1750-1850年)和新石器革命(公元前8000-5000年)之后人类技术进步的第三次重大飞跃。
    
    这些贡献包括:
  • 开启“数字化革命”,包括当今的信息时代和互联网。[22]
  • 对计算和可计算性的形式定义,证明了存在计算上不可解及难解型问题。[23]
  • 提出编程语言的概念,作为一种使用不同的抽象层次来精确表达进程的工具。[24]
  • 在密码学领域,恩尼格玛密码机的破译被视为盟军在二战获取胜利的重要因素。[21]
  • 科学计算让分析实际中非常复杂的过程和场景成为可能,可以完全借助软件来进行一些实验。同时也实现了对人类思想的深入研究,使得人类基因组计划绘制人类基因成为可能。[22] 还有探索蛋白质折叠的分布式计算项目Folding@home。
  • 算法交易通过使用人工智能、机器学习和其他大规模的统计和数值方法,提高了金融市场的效率和流通性。[25] 高频率的算法交易也会加快波动性。[26]
  • 计算机图形和电脑成像(CGI)在现代娱乐中无处不在,尤其是在电视、电影、广告、动画和视频游戏中。即便是没有用到CGI技术的电影,通常也是用数字相机拍摄,或者使用数字视频编辑器剪辑或后期处理过的。[27][28]
  • 仿真各种过程,包括计算流体动力学、物理、电气和电子系统和电路,以及同人类居住地联系在一起的社会和社会形态(尤其是战争游戏,war games)。现代计算机能够对这些设计进行优化,如飞机设计。尤其在电气与电子电路设计中,SPICE软件对新的物理实现(或修改)设计具有很大帮助。[29] 它包含了针对集成电路的基本设计软件。[来源请求]
  • 人工智能变得越来越重要,因为它变得更加高效和复杂。人工智能的应用有很多,其中一些可以在家里看到,比如机器人吸尘器。它也出现在视频游戏和现代战场上的无人机、反导弹系统和小队支持机器人中。[30]
  • 人机交互将新颖的算法与设计策略相结合,可实现快速的人类绩效,低错误率,易于学习和高度满意度。研究人员利用人种学观察和自动化数据收集来了解用户需求,然后进行可用性测试来完善设计。关键的创新包括直接操纵、可选择的网页链接、触摸屏设计、移动应用程序和虚拟现实。
  • 哲学

    Peter Wegner提出计算机科学可以分成三个领域:数学、工程学、科学。Amnon H. Eden提议了三种范式应用于计算机科学的各个领域:[31]
  • “理性主义范式”,将计算机科学看作是数学的分支,在理论计算机科学中很流行,主要利用演绎推理。
  • “技术专家范式”,这类范式有着很明显的工程学倾向,尤其是在软件工程领域。
  • “科学范式”,人工智能的某些分支可以作为这类范式的代表(比如说对于人工生命的研究)。

    计算机科学的领域

作为一个学科,计算机科学涵盖了从算法的理论研究和计算的极限,到如何通过硬件和软件实现计算系统。[32][33] CSAB(以前被叫做Computing Sciences Accreditation Board),由Association for Computing Machinery(ACM)和IEEE计算机协会(IEEE-CS)的代表组成[34],确立了计算机科学学科的4个主要领域:计算理论,算法与数据结构,编程方法与编程语言,以及计算机组成与架构。CSAB还确立了其它一些重要领域,如软件工程,人工智能,计算机网络与通信,数据库系统,并行计算,分布式计算,人机交互,计算机图形学,操作系统,以及数值和符号计算。

理论计算机科学

广义的理论计算机科学包括经典的计算理论和其它专注于更抽象、逻辑与数学方面的计算。

数据结构和算法

  • 算法分析
  • [算法] image
  • 数据结构image
  • 计算几何image
  • 图论image
    算法指定义良好的计算过程,它取一个或一组值作为输入,经过一系列定义好的计算过程,得到一个或一组输出。
    算法是计算机科学研究的一个重要领域,也是许多其他计算机科学技术的基础。算法主要包括数据结构、计算几何、图论等。除此之外,算法还包括许多杂项,如模式匹配、部分数论等

计算理论

按照Peter J. Denning的说法,计算机科学的最根本问题是“什么能够被有效地自动化?”
计算理论的研究就是专注于回答这个根本问题,关于什么能够被计算,去实施这些计算又需要用到多少资源。
为了试图回答第一个问题,递归论检验在多种理论计算模型中哪个计算问题是可解的。
而计算复杂性理论则被用于回答第二个问题,研究解决一个不同目的的计算问题的时间与空间消耗。
  • 著名的“P=NP?”问题,千禧年大奖难题之一,是计算理论的一个开放问题。
    • 自动机理论
    • 递归论
    • 计算复杂性理论
    • 密码学
    • 量子计算论

      信息论与编码理论

      信息论与信息量化相关,由克劳德·香农创建,用于寻找信号处理操作的根本极限,比如压缩数据和可靠的数据存储与通讯。
      编码理论是对编码以及它们适用的特定应用性质的研究。编码(code)被用于数据压缩,密码学,前向纠错,近期也被用于网络编码。
      研究编码的目的在于设计更高效、可靠的数据传输方法。

      编程语言和编译器

      编程语言理论是计算机科学的一个分支,主要处理编程语言的设计、实现、分析、描述和分类,以及它们的个体特性。
      它属于计算机科学学科,既受影响于也影响着数学、软件工程和语言学。
      它是公认的计算机科学分支,同时也是活跃的研究领域,研究成果被发表在众多学术期刊,计算机科学以及工程出版物。
  • 类型论
    image
  • 编译器设计
    image
  • 程序设计语言
    image

形式化方法

形式化方法是一种特别的基于数学的技术,用于软件和硬件系统的形式规范、开发以及验证。
在软件和硬件设计方面,形式化方法的使用动机,如同其它工程学科,是通过适当的数学分析便有助于设计的可靠性和健壮性的期望。
但是,使用形式化方法会带来很高的成本,意味着它们通常只用于高可靠性系统,这种系统中安全或保安(security)是最重要的。
对于形式化方法的最佳形容是各种理论计算机科学基础种类的应用,特别是计算机逻辑演算,形式语言,自动机理论和形式语义学,此外还有类型系统、代数数据类型,以及软件和硬件规范和验证中的一些问题。

计算机系统

计算机体系结构与计算机工程

计算机系统结构,或者数字计算机组织,是一个计算机系统的概念设计和根本运作结构。它主要侧重于CPU的内部执行和内存访问地址。
这个领域经常涉及计算机工程和电子工程学科,选择和互连硬件组件以创造满足功能、性能和成本目标的计算机。

操作系统

操作系统是管理电脑硬件与软件资源的电脑程序,同时也是电脑系统的核心与基石。
作业系统需要处理如管理与配置记忆体、决定系统资源供需的优先次序、控制输入与输出设备、操作网路与管理文件系统等基本事务。
作业系统也提供一个让用户与各电脑设备互动的操作接口。

并发、并行与分布式系统

并发性(concurrency)是系统的一种性质,这类系统可以同时执行多个可能互相交互的计算。
一些数学模型,如Petri网、进程演算和PRAM模型,被创建以用于通用并发计算。
分布式系统将并发性的思想扩展到了多台由网络连接的计算机。
同一分布式系统中的计算机拥有自己的私有内存,它们之间经常交换信息以达到一个共同的目的。

计算机网络

计算机网络是管理遍及全球的计算机连接成的网络的计算机科学分支。

计算机安全和密码学

计算机安全是计算机技术的一个分支,其目标包括保护信息免受未经授权的访问、中断和修改,同时为系统的预期用户保持系统的可访问性和可用性。
密码学是对于隐藏(加密)和破译(解密)信息的实践与研究。
现代密码学主要跟计算机科学相关,很多加密和解密算法都是基于它们的计算复杂性。

数据库

数据库是为了更容易地组织、存储和检索大量数据。数据库由数据库管理系统管理,通过数据模型和查询语言来存储、创建、维护和搜索数据。

计算机应用技术

计算机图形学

计算机图形学是对于数字视觉内容的研究,涉及图像数据的合成和操作。
它跟计算机科学的许多其它领域密切相关,包括计算机视觉、图像处理、计算几何与可视化,同时也被大量运用在特效和电子游戏。

科学计算

科学计算(或者计算科学)是关注构建数学模型和量化分析技术的研究领域,同时通过计算机分析和解决科学问题。
在实际使用中,它通常是计算机模拟和计算等形式在各个科学学科问题中的应用。
  • 数值分析
  • 计算物理学
  • 计算化学
  • 生物信息学

多媒体技术

多媒体技术是指通过计算机对文字、数据、图形、图像、动画、声音等多种媒体信息进行综合处理和管理,使用户可以通过多种感官与计算机进行实时信息交互的技术,又称为计算机多媒体技术。

人工智能

这个计算机科学分支旨在创造可以解决计算问题,以及像动物和人类一样思考与交流的人造系统。
无论是在理论还是应用上,都要求研究者在多个学科领域具备细致的、综合的专长,
比如应用数学,逻辑,符号学,电机工程学,精神哲学,神经生理学和社会智力,用于推动智能研究领域,
或者被应用到其它需要计算理解与建模的学科领域,如金融或是物理科学。
人工智能领域开始变得正式源于Alan Turing这位人工智能先驱提出了图灵试验,
以回答这样一个终极问题:“计算机能够思考吗?”

软件工程

软件工程是对于设计、实现和修改软件的研究,以确保软件的高质量、适中的价格、可维护性,以及能够快速构建。它是一个系统的软件设计方法,涉及工程实践到软件的应用。
计算机科学和软件工程的关系是一个有争议的话题,随后关于什么是“软件工程”,计算机科学又该如何定义的争论使得情况更加混乱。
David Parnas从其它工程和科学学科之间的关系得到启示,宣称计算机科学的主要重点总的来说是研究计算的性质,而软件工程的主要重点是具体的计算设计,以达到实用的目的,这样便构成了两个独立但又互补的学科。

作为高等教育的二级专业

  • 在中国,“计算机科学”或“计算机科学与技术”是工科(一级门类)下的二级专业。一般可细分为三级专业:

    • 计算机软件:围绕着软件开发、软件工程、编程语言等
    • 计算机应用:计算机的各种应用算法、技术。如:模式识别、计算视觉、计算机图形学等等。
    • 计算机体系结构:关于计算机或计算机信息系统的“硬件”。

文章作者: rudy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 rudy !
  目录