计算机科学

计算机科学计算信息自动化的研究。计算机科学跨越理论学科(例如算法计算理论信息理论),以应用学科(包括硬件软件的设计和实施)。尽管经常被认为是一门学科,但计算机科学与计算机编程密切相关。

算法数据结构是计算机科学的核心。计算理论涉及可以使用它们来解决的计算和一般问题的摘要模型密码学计算机安全的领域涉及研究用于安全通信和防止安全漏洞的手段。计算机图形计算几何形状解决图像的产生。编程语言理论考虑了描述计算过程的不同方法,数据库理论涉及数据存储库的管理。人与计算机的交互研究人类和计算机相互作用的界面,软件工程专注于开发软件的设计和原理。诸如操作系统网络嵌入式系统等领域研究了复杂系统背后的原理和设计。计算机架构描述了计算机组件和计算机操作设备的构建。人工智能机器学习旨在综合目标的过程,例如解决问题,环境适应,计划和学习,在人类和动物中发现。在人工智能中,计算机视觉旨在了解和处理图像和视频数据,而自然语言处理旨在了解和处理文本和语言数据。

计算机科学的基本关注点是确定什么可以和不能自动化的。图灵奖通常被认为是计算机科学中最高的区别。

历史

Gottfried Wilhelm Leibniz (1646–1716)在二元编号系统中开发了逻辑,并被称为“计算机科学的创始人”。
查尔斯·巴比奇有时被称为“计算之父”。
Ada Lovelace发布了第一个用于在计算机上处​​理的算法

成为计算机科学的最早基础早于现代数字计算机的发明。用于计算固定数值任务(例如算盘)的机器自上古以来就已经存在,有助于计算(例如乘法和划分)。自上古以来,即使在开发复杂的计算设备之前,也存在用于执行计算的算法

Wilhelm Schickard在1623年设计并构建了第一个工作机械计算器。 1673年, Gottfried Leibniz展示了一个数字机械计算器,称为阶梯型Reckoner 。莱布尼兹(Leibniz)可能被视为第一个计算机科学家和信息理论家,这是由于各种原因,包括他记录了二进制编号系统的事实。 1820年,托马斯·德·科尔玛(Thomas de Colmar)发明了简化的算术计,这是第一台计算机,这是第一台计算机的强度足以每天在办公室环境中使用。查尔斯·巴巴奇(Charles Babbage)于1822年开始设计了第一个自动机械计算器,他的差异引擎,最终使他成为了第一个可编程机械计算器,即他的分析引擎的想法。他于1834年开始开发这台机器,“在不到两年的时间里,他勾勒出了现代计算机的许多显著特征”。 “至关重要的步骤是采用了源自jacquard织机的打孔卡系统”,使其无限地编程。 1843年,在翻译有关分析引擎的法国文章时,艾达·洛夫莱斯(Ada Lovelace)在她包括的众多音符之一中写道,一种计算伯努利号码的算法,该算法被认为是专门针对实施的第一个发布的算法在计算机上。 1885年左右,赫尔曼·霍勒里斯(Herman Hollerith)发明了制表师,该制表器使用打孔卡来处理统计信息。最终,他的公司成为IBM的一部分。在巴巴奇(Babbage)之后,尽管没有意识到他的早期作品,但珀西·卢德盖特(Percy Ludgate)在1909年发表了历史上仅有的两种机械分析引擎设计的两个设计。 1914年,西班牙工程师Leonardo Torres Quevedo发表了他的关于自动化的文章,并受Babbage的启发,这是一种理论上的机电计算机,该计算机将由仅阅读程序控制。该论文还介绍了浮点算术的想法。 1920年,为了庆祝算术计发明的100周年,托雷斯在巴黎呈现了机电算术计,该原型表明了机电分析引擎的可行性,可以在该机电上键入命令,并自动打印结果。 1937年,即Babbage不可能做梦的一百年,霍华德·艾肯(Howard Aiken)说服了IBM,该公司正在制造各种打孔器的纸牌设备,并且还从事计算器业务,以开发其巨大的可编程计算器,基于Babbage的Ascc/Harvard Mark I ,基于Babbage的分析。发动机本身使用了卡和中央计算单元。当机器完成后,有些人称其为“ Babbage的梦想成真”。

在1940年代,随着新型和更强大的计算机的开发,例如Atanasoff – Berry计算机ENIAC计算机一词来指代机器,而不是其人类的前辈。很明显,计算机不仅可以用于数学计算,还可以将计算机科学领域扩展到总体上研究计算。 1945年, IBM纽约市哥伦比亚大学创立了沃森科学计算实验室。曼哈顿西侧的翻新兄弟会房屋是IBM的第一个专门研究纯科学的实验室。该实验室是IBM研究部门的先驱,该部门今天在世界各地运营研究设施。最终,IBM和哥伦比亚大学之间的密切关系在出现新科学学科方面发挥了重要作用,哥伦比亚在1946年提供了计算机科学的首批学术学学课程之一。 1950年代和1960年代初。世界上第一个计算机科学学位课程,剑桥计算机科学文凭,于1953年始于剑桥大学计算机实验室。美国第一个计算机科学系于1962年在普渡大学成立。计算的应用已成为其自身权利的不同研究领域。

词源和范围

尽管“计算机科学”一词首次提议,但在1959年的ACM通讯中出现了一词,其中路易斯·费恩(Louis Fein通过争辩说,像管理科学一样,本质上应用和跨学科的主题是合理的,同时具有学术学科的典型特征。他的努力以及其他其他分析师乔治·福赛斯(George Forsythe)等其他人的努力得到了回报:大学继续创建了这样的部门,从1962年开始从普渡大学开始。尽管有大量计算机科学,但大量的计算机科学并不涉及对计算机本身的研究。因此,已经提出了几个替代名称。主要大学的某些系更喜欢计算科学一词,可以准确强调这种差异。丹麦科学家彼得·诺尔(Peter Naur)建议使用数据法,以反映以下事实:科学纪律围绕数据和数据处理,同时不一定涉及计算机。第一个使用该术语的科学机构是哥本哈根大学的数据学系,成立于1969年,彼得·诺尔(Peter Naur)是数据学的第一任教授。该术语主要用于斯堪的纳维亚国家。诺尔(Naur)也提出的另一种术语是数据科学。现在,它用于数据分析的多学科领域,包括统计和数据库。

在计算初期,在ACM的通信中建议了计算领域的实践者的许多术语 - TuringineerTurmosticsFlow-Charts-ManApplied Meta-MeadermaticiansApplied Cepistemsosic 。三个月后,在同一篇期刊上,建议伴侣,紧随其后的是拟师。还提出了一词计算在欧洲,经常使用源自“自动信息”(例如 Informazione automatica”)或“信息与数学”一词的合同翻译的术语), Informática (西班牙语,葡萄牙语), Informatika斯拉夫语言匈牙利语)或pliroforikiπληροφmotbictionborem- ,意思是Informatics )。英国也采用了类似的话(如爱丁堡大学信息学院一样)。 “但是,在美国,信息学与应用计算或在另一个领域的上下文中的计算有关。”

Edsger Dijkstra通常归因于(肯定不是首先提出的)的民俗引文,他指出:“计算机科学不再是计算机,而是天文学与望远镜有关。”计算机和计算机系统的设计和部署通常被认为是计算机科学以外的其他学科省。例如,计算机硬件的研究通常被认为是计算机工程的一部分,而商用计算机系统及其部署的研究通常称为信息技术或信息系统。但是,各种与计算机相关的学科之间已经交流了想法。计算机科学研究也经常与其他学科相交,例如认知科学语言学数学物理学生物学地球科学统计哲学逻辑

与许多科学学科相比,某些人认为计算机科学与数学有更紧密的关系,一些观察者说计算是一门数学科学。早期计算机科学受到数学家工作强烈影响理论,领域理论代数

计算机科学与软件工程之间的关系是一个有争议的问题,这一问题因“软件工程”一词的含义以及计算机科学的定义方式进一步弥补。戴维·帕纳斯(David Parnas)从其他工程和科学学科之间的关系中得到了提示,他声称,计算机科学的主要重点是研究计算的属性,而软件工程的主要重点是设计特定计算的设计,以实现实用性目标,使这两个分开但互补的学科。

计算机科学的学术,政治和资金方面倾向于取决于一个部门是否以数学重点或工程重点形成。具有数学重点和数值取向的计算机科学部门考虑与计算科学的一致性。两种类型的部门倾向于在所有研究中都在教育上弥合现场。

哲学

计算机科学认识论

尽管以“科学”为名,但关于计算机科学是否是科学,数学还是工程学的学科仍存在争议。艾伦·纽厄尔(Allen Newell)赫伯特·A·西蒙(Herbert A. Simon)于1975年辩称

计算机科学是一门经验学科。我们会称其为实验科学,但是像天文学,经济学和地质一样,其独特的观察和经验形式并不适合实验方法的狭窄刻板印象。但是,它们是实验。构建的每台新机器都是一个实验。实际构建机器对自然提出了一个问题。然后,我们通过观察操作中的机器并通过所有分析和测量方法来聆听答案。

此后,人们认为计算机科学可以被归类为一种经验科学,因为它利用经验测试来评估程序的正确性,但是在定义计算机科学的法律和定理(如果存在的话)上仍然存在问题并定义计算机科学实验的性质。支持计算机科学为工程学科的支持者认为,计算系统的可靠性的研究方式与航空航天工程中的土木工程和飞机中的桥梁相同。他们还认为,尽管经验科学观察了目前的存在,但计算机科学观察到了可能存在的东西,尽管科学家从观察中发现法律,但在计算机科学中却没有找到适当的法律,而是关注创造现象。

将计算机科学分类为数学纪律的支持者认为,计算机程序是数学实体和程序的物理实现,可以通过数学形式方法推论。计算机科学家Edsger W. DijkstraTony Hoare将计算机程序的说明视为数学句子,并将编程语言的正式语义解释为数学公理系统

计算机科学范式

许多计算机科学家争论了计算机科学中三个独立范式的区别。彼得·韦格纳(Peter Wegner)认为,这些范式是科学,技术和数学。彼得·丹宁(Peter Denning)的工作组认为,它们是理论,抽象(建模)和设计。 Amnon H. Eden将它们描述为“理性主义者范式”(将计算机科学视为数学的分支,在理论计算机科学中很普遍,主要采用演绎推理),“技术官僚范式”(在工程中可能发现在软件工程中最突出的方法和“科学范式”(从自然科学的经验角度来看,它可以在人工智能的某些分支中识别出与计算机相关的伪影)。计算机科学专注于人工制造的计算系统的设计,规范,编程,验证,实施和测试的方法。

字段

作为一门学科,计算机科学涵盖了一系列主题,从算法的理论研究以及计算限制到在硬件和软件中实施计算系统的实际问题。 CSAB ,以前称为计算科学认证委员会(由计算机机械协会(ACM)的代表组成, IEEE计算机协会(IEEE CS)组成,它确定了这对计算机科学学科至关重要的四个领域:理论:理论:理论:理论:计算算法和数据结构编程方法和语言以及计算机元素和体系结构。除这四个领域外,CSAB还将软件工程,人工智能,计算机网络和通信,数据库系统,并行计算,分布式计算,人与计算机交互,计算机图形,操作系统以及数值和符号计算等领域确定字段是计算机科学的重要领域。

理论计算机科学

理论上的计算机科学在精神上是数学和抽象的,但它从实际和日常的计算中得出了动力。其目的是了解计算的性质,并因此提供了更有效的方法。

计算理论

根据彼得·丹宁(Peter Denning)的说法,计算机科学的基本问题是:“什么可以自动化?”计算理论的重点是回答有关可以计算的内容以及执行这些计算需要多少资源的基本问题。为了回答第一个问题,计算理论研究了在各种计算理论模型中可以解决哪些计算问题。第二个问题是由计算复杂性理论解决的,该理论研究了与解决多种计算问题的不同方法相关的时间和空间成本。

著名的p = np?问题是千年奖的问题之一,是计算理论中的一个空缺问题。

自动机理论 正式语言 计算理论 计算复杂性理论
计算模型 量子计算理论 逻辑电路理论 蜂窝自动机

信息和编码理论

信息理论与概率统计密切相关,与信息的量化有关。这是由克劳德·香农(Claude Shannon)开发的,目的是在信号处理操作(例如压缩数据以及可靠地存储和通信数据)上找到基本限制。编码理论是对代码的属性(将信息从一种形式转换为另一种形式的系统及其适合特定应用程序的属性的研究。代码用于数据压缩密码学错误检测和校正,以及最近也用于网络编码。研究代码是为了设计高效且可靠的数据传输方法。

编码理论 通道容量 算法信息理论 信号检测理论 Kolmogorov的复杂性

数据结构和算法

数据结构和算法是对常用计算方法及其计算效率的研究。

On 2
算法分析 算法设计 数据结构 组合优化 计算几何形状 随机算法

编程语言理论和形式方法

编程语言理论是计算机科学的一个分支,涉及编程语言及其个人特征的设计,实现,分析,表征和分类。它取决于数学,软件工程和语言学,都属于计算机科学的学科。这是一个活跃的研究领域,拥有许多专门的学术期刊。

正式方法是一种针对软件和硬件系统的规范,开发和验证的特定类型的基于数学的技术。将正式方法用于软件和硬件设计的动机是由于在其他工程学科中,进行适当的数学分析可以有助于设计的可靠性和鲁棒性。它们构成了软件工程的重要理论基础,尤其是在涉及安全或保障的情况下。正式方法是软件测试的有用辅助手段,因为它们有助于避免错误,并且还可以为测试提供框架。为了工业用途,需要工具支持。但是,使用正式方法的高成本意味着它们通常仅用于开发高融合性和至关重要的系统,而安全或安全至关重要。正式方法最好被描述为相当广泛的理论计算机科学基础知识的应用,尤其是逻辑计算,形式语言自动机理论程序语义,但也将系统代数数据类型键入软件和硬件规范中的问题和代数数据类型确认。

正式语义 类型理论 编译器设计 程式设计语言 正式验证 自动定理证明

应用计算机科学

计算机图形和可视化

计算机图形是对数字视觉内容的研究,涉及图像数据的综合和操纵。该研究与计算机科学中的许多其他领域有关,包括计算机视觉图像处理计算几何形状,并在特殊效果和视频游戏的领域中大量应用。

2D计算机图形 计算机动画 渲染 混合现实 虚拟现实 固体建模

图像和声音处理

信息可以采用图像,声音,视频或其他多媒体的形式。一些信息可以通过信号流传输。它的处理信息学的核心概念,即欧洲计算的观点,它独立于信息载体的类型研究信息处理算法 - 无论是电气,机械还是生物学。该领域在信息理论电信信息工程中起着重要作用,并且在医学图像计算语音综合等中都有应用。快速傅立叶变换算法的复杂性的下限是什么?理论计算机科学中未解决的问题之一。

FFT算法 图像处理 语音识别 数据压缩 医疗图像计算 语音综合

计算科学,金融和工程

科学计算(或计算科学)是与构建数学模型定量分析技术并使用计算机分析和解决科学问题的研究领域。科学计算的主要用法是对各种过程的模拟,包括计算流体动力学,物理,电气,电子系统和电路,以及社会和社交状况(尤其是战争游戏)以及他们的栖息地等。现代计算机可以优化完整飞机等设计。电气和电子电路设计中值得注意的是香料,以及用于实现新(或修改)设计的物理实现的软件。后者包括用于集成电路的基本设计软件。

数值分析 计算物理 计算化学 生物信息学 神经信息学 心理信息学 医学信息学 计算工程 计算音乐学

社交计算和人类计算机互动

社交计算是与社会行为与计算系统相交的领域。人与计算机交互研究开发了用户界面设计师的理论,原理和指南。

软件工程

软件工程是设计,实施和修改软件的研究,以确保其具有高质量,负担得起,可维护和快速构建。这是一种系统的软件设计方法,涉及将工程实践应用于软件。软件工程涉及软件的组织和分析 - 它不仅涉及新软件的创建或制造,而且还涉及其内部安排和维护。例如,软件测试系统工程技术债务软件开发过程

人工智慧

人工智能(AI)旨在或需要综合目标的过程,例如解决问题,决策,环境适应,学习以及人类和动物中的沟通。从其起源于控制论达特茅斯会议(1956年)中,人工智能研究必然是跨学科的,借鉴了诸如应用数学符号逻辑,符号逻辑电气工程思想哲学神经物理学和社会生理学和社会生理学和社会生理学和社会生理学和社会生理学和社会生理学,社会生理学和社会哲学,符号逻辑,符号逻辑,符合专业知识领域智力。 AI与机器人开发相关联,但实际应用的主要领域是软件开发领域的嵌入式组件,这些组件需要计算理解。 1940年代后期的起点是艾伦·图灵(Alan Turing)的问题“计算机能想到吗? ”,尽管图灵测试仍用于根据人类智能的规模评估计算机输出,但问题仍然有效地没有得到答案。但是,评估和预测任务的自动化越来越成功,可以代替人类监测和干预涉及复杂现实数据的计算机应用领域。

计算学习理论 计算机视觉 神经网络 计划和计划
自然语言处理 计算游戏理论 进化计算 自主计算
表示和推理 模式识别 机器人技术 群体智能

计算机系统

计算机架构和组织

计算机架构或数字计算机组织是计算机系统的概念设计和基本操作结构。它主要集中在中央处理单元内部执行并访问内存中的地址的方式。计算机工程师研究计算机硬件计算逻辑和设计,从单个处理器组件,微控制器个人计算机超级计算机嵌入式系统。计算机文献中的“体系结构”一词可以追溯到1959年IBM主要研究中心机器组织部门的Lyle R. Johnson和Jr. Lyle R. Johnson和Jr.的工作。

处理单元 微结构 多处理 处理器设计
普适计算 系统体系结构 作业系统 输入输出
嵌入式系统 实时计算 可靠性 口译员

并发,并行和分布式计算

并发是系统的属性,其中几个计算同时执行,并可能相互交互。已经开发了许多数学模型,用于一般并发计算,包括Petri网过程骨化并行随机访问机模型。当使用并发时,在网络中连接多台计算机时,这被称为分布式系统。该分布式系统中的计算机具有自己的私人记忆,可以交换信息以实现共同的目标。

计算机网络

计算机科学的这个分支旨在管理全球计算机之间的网络。

计算机安全和密码学

计算机安全性是计算机技术的一个分支,目的是保护信息免受未经授权的访问,中断或修改,同时维护系统对其预期用户的可访问性和可用性。

历史密码学是写作和解密秘密信息的艺术。现代密码学是对可能受到攻击的分布式计算问题的科学研究。现代密码学研究的技术包括对称和不对称加密数字签名加密哈希功能键合协议区块链零知识证明乱码电路

数据库和数据挖掘

数据库旨在轻松组织,存储和检索大量数据。使用数据库模型和查询语言使用数据库管理系统来管理数字数据库。数据挖掘是在大数据集中发现模式的过程。

发现

计算Bill Rapaport的哲学家指出了计算机科学的三个重要见解

关于任何可计算问题的所有信息都可以使用0和1表示(或任何其他可以在两个易于区分的状态之间触发的Bissable对,例如“ ON/OFF”,“磁化/去磁化”,“高” - 电压/低压”等)。
每种算法都可以用一种语言来表示仅包含五个基本说明的计算机:
  • 向左移动一个位置;
  • 向右移动一个位置;
  • 在当前位置读取符号;
  • 在当前位置打印0;
  • 在当前位置打印1。
  • CorradoBöhm和Giuseppe Jacopini的洞察力:将这些动作(成更复杂的操作)组合为三种方法,以使计算机可以做“任何事情”。
仅需要三个规则才能将任何一组基本说明组合到更复杂的指令中:
  • 序列:首先这样做,然后执行此操作;
  • 选择:如果是这样,那就这样做,否则请执行此操作;
  • 重复:虽然是这种情况,但要这样做。
Boehm和Jacopini的洞察力的三个规则可以通过使用GOTO进一步简化(这意味着它比结构化编程更重要)。

编程范例

编程语言可用于以不同的方式完成不同的任务。常见的编程范例包括:

  • 功能编程,一种构建计算机程序的结构和元素的风格,将计算视为评估数学功能并避免状态和可变数据。这是一个声明的编程范式,这意味着编程是用表达式或声明而不是语句进行的。
  • 命令编程,一种使用改变程序状态的语句的编程范式。与自然语言中的命令式情绪相同的方式几乎相同,一个命令程序由计算机执行的命令组成。当务之急的编程重点是描述程序的运作方式。
  • 以对象为导向的编程,一种基于“对象”概念的编程范例,该概念可能包含数据,以字段的形式,通常称为属性;和代码,以程序的形式,通常称为方法。对象的一个​​功能是,对象的过程可以访问并经常修改与其关联对象的数据字段。因此,面向对象的计算机程序是由相互交互的对象制成的。
  • 以服务为导向的编程是一种使用“服务”作为计算机工作单位的编程范式,用于设计和实施集成的业务应用程序和任务关键软件程序

许多语言为多种范式提供了支持,这使得与技术功能的区别更具风格。

研究

会议是计算机科学研究的重要事件。在这些会议期间,公共和私营部门的研究人员介绍了他们最近的工作和开会。与大多数其他学术领域不同,在计算机科学中,会议论文的声望大于期刊出版物的声望。为此,提出的解释是,对这个相对较新的领域的快速发展需要快速审查和分配结果,这是会议比期刊更好地处理的任务。

教育

自从批处理处理标记敏感卡纸带标记敏感的卡和纸带以来,以其近乎同义词,计算计算机研究而闻名的计算机科学,但通常是针对少数学生的。 1981年,英国广播公司(BBC)生产了一个微型计算机课堂网络,计算机研究变得很常见于GCE O水平的学生(11-16岁),计算机科学成为水平的学生。它的重要性得到了认可,并成为国家课程的强制性部分,对于第3阶段和第4阶段。2014年9月,它成为4岁以上所有学生的权利。

美国,有14,000个学区决定课程,规定被破裂。根据2010年计算机机械协会(ACM)和计算机科学教师协会(CSTA)的一份报告,在50个州中,只有14个已经采用了高中计算机科学的重要教育标准。根据2021年的报告,美国祇有51%的高中提供计算机科学。

以色列,新西兰和韩国将计算机科学包括在其国家中等教育课程中,其他几个人都在关注。

也可以看看