计算机科学的定义是什么,计算机科学中的科学是什么?


39

我正在攻读计算机科学学士学位,但是我还处于初期阶段,并且我相信我会为自己的选择感到满意,因为这似乎是一种学术上和职业上灵活的教育。

话虽如此,关于计算机科学在学术界,私营部门和“计算机科学”中实际的“科学”方面的真正定义似乎有各种各样的定义,我想得到答案(或共同思考)关于可以应用计算机科学教育的事物的广度,以及最终计算机科学领域所追求的各种途径。


1
计算机科学在哪里?:cacm.acm.org/magazines/2012/10/…–
avi

另请参阅CS meta 什么是计算机科学
vzn 2014年

Answers:


38

计算机科学是用词不当-计算机科学实际上没有“科学”,因为计算机科学与观察自然无关。相反,计算机科学的一部分是工程学,一部分是数学

计算机科学的更多理论部分是纯数学的。例如,什么是好的排序算法?我们如何定义编程语言的语义?我们如何确定密码系统是安全的?

应用计算机科学后,它变得更像工程学。例如,实现矩阵乘法算法的最佳方法是什么?我们应该如何设计一种计算机语言来帮助编写大型程序?我们如何设计一种密码系统来保护网上银行?

相反,科学与自然法则有关,更广泛地说与自然现象有关。计算机科学中涉及的现象是人为的。在这种意义上,计算机科学的某些方面可以看作是实验性的,例如对社交网络的实证研究,对计算机网络的实证研究,对病毒及其传播的实证研究以及计算机教育(教授计算机科学和使用计算机)教其他科目)。这些示例大多数是边界计算机科学,并且更恰当地说是多学科的。与计算机科学中的科学方法最接近的方法可能是对网络和其他硬件设备的研究,这是在非正式地称为“系统”的子区域中的主流。

尽管有这些示例,但计算机科学的大多数核心根本不是科学。计算机科学只是一个名字-不需要说得通。

至于计算机科学的范围,最好的定义可能是:计算机科学家所做的定义。像所有其他学术学科一样,计算机科学是一个广阔的领域,很难完全绘制图表。如果您想了解人们对计算机科学的看法,可以查看教师的研究领域。


4
这是我见过的计算机科学家最诚实的评论之一。谢谢。
scaaahu

21
这实际上与哲学有关,而不是与计算机科学有关,但是我不同意这个答案。计算机科学是计算科学的误称,而计算科学则是与力学相同的科学。有较强的数学基础,但这个基础受制于经验验证-我们专注于图灵可计算性,因为这是世界如何,似乎工作,我们做研究其他的概念,因为图灵可计算不会将所有真实世界的计算现象建模。
吉尔斯(Gilles)'所以

3
我认为只有观察自然现象的东西才是实际科学的观点是唯物主义思想的产物,许多人会不同意这一观点。从词源上讲,科学是知识的聚集,尽管有人说所有数学都是重言式,但我怀疑其中任何一个都将数学归为“非知识”。
G. Bach 2013年

2
@吉尔斯你不能当真。除了进行超计算能力的人以外,没有人反对图灵的可计算性概念。关于有效可计算性的概念(在多时表示有效),可以提出更好的观点,但是没有人再尝试在合理的计算模型中捕获效率-理论上的人们忽略了模型的问题,而实践中的人们却忽略了模型。
Yuval Filmus 2013年

2
@YuvalFilmus仅举两个例子,图灵机还不足以对分布式或同步系统进行建模。
吉尔(Gilles)'“ SO-不要邪恶”

11

让我们以现代计算机科学之父之一的话作为开始:“计算机科学与计算机无关,天文学与望远镜无关”-Edsger Wybe DIJKSTRA

因此,实际上,如果您对计算机和编程感兴趣,那么您对计算机科学并不真正感兴趣:-)

我认为Wikipedia有最好的描述之一:“计算机科学(简称CS或CompSci)是计算及其应用的科学和实践方法。它是对方法过程的可行性,结构,表达和机械化的系统研究。 (或算法)构成信息的获取,表示,处理,存储,通信和访问的基础,无论这些信息是按位和字节编码在计算机内存中还是在人类细胞中转录了引擎和蛋白质结构。专攻计算理论和计算系统设计”

但是实际上,正如尤瓦尔所说的那样,大多数大学/学院都已经脱离了理论/纯计算机科学,而计算机科学现在是科学,数学和工程学的混合体。不仅向我们传授纯计算机科学知识,而且向我们传授使用现代计算机,编程语言,操作系统和软件应用程序解决这些问题和其他问题的实践技能。


3
您说搬走了,但是他们曾经纯粹是理论上的吗?
阿戈斯

@Agos我同意您的观点,从来没有一个真正的纯理论时期,但是我想说,随着时间的流逝,业务需要更多的程序员和更少的计算机科学家,学位/文凭从理论到实践的转变越来越多。我并不是说一个比另一个更好,只是观察一下。
AquaAlex

1
@AquaAlex我认为这可能是描述现代计算机科学与当今计算机科学之间截然不同的最佳方法:它已完全转向实际应用,以适应行业需求。

为什么“纯”计算机科学只能是理论?据我所知,这从来没有很好地描述什么是计算机科学。实际的问题总是向该领域通报。
拉斐尔

@Raphael这一切都取决于您认为“实用”是什么。编写计算机程序不是CS的实际应用。大多数科学都使用该理论来解决现实世界/实际问题,并且许多科学都使用计算机和程序来完成此任务。
AquaAlex

11

值得一提的是,“计算机科学”的德语术语是 Informatik,它融合了InfomationMathematik。我认为这是对计算机科学的简要描述。(意大利语术语是informatica,而且我敢肯定,还有很多其他语言遵循同一行)。


Wikipedia的有关计算机科学的文章中有关于不同名称的部分,网址en.wikipedia.org/wiki/Computer_science#Name_of_the_field-就我而言,我不喜欢“计算机”部分,而不是“科学”部分。我还没有找到如今比我少使用计算机的科学领域。
直线加速器

2
@linac:其他领域使用计算机学习其他内容。计算机科学最终使用计算机来研究计算。在这两种情况下,我们都可以卸下计算机,但仍然可以完成工作,只是速度较慢。请记住,这实际上是一个非常现代的想法,即“计算机”仅指实现某些能够执行计算的硬件的实际盒子,而计算机科学中的“计算机”实际上指的是计算本身。
Phoshi

也许名称“ Informatik”的派生是错误的。德语Wiki提及“信息和自动提要”,但可能仅仅是“信息+ -tik”
miracle173

@ miracle173确实,“ Information und Automatik”中有很多关于“ Information und Automatik”的内容,他们在法语和意大利语Wiki中也提到了它。我不记得我是在哪里第一次读到“ Information und Mathematik”派生词的,但是我敢肯定我自己没有发明它……
john_leo

6

您可能对我们在meta上的讨论感兴趣特别是,我坚持我的回答,转载于此:

计算机科学是计算科学。这似乎很清楚。还不清楚如何以有用和有意义的方式定义科学和计算。

通常,我们可以根据两种分类对科学进行划分:形式分类与经验分类,纯粹分类与应用分类。形式科学(例如数学和许多计算机科学)依赖于假设的事实的演绎推理,而经验科学(例如物理学和化学)则依赖于观察到的现象的归纳推理。纯粹科学的目标是促进科学理解的状态,而应用科学的目标是利用这种理解来利用自然的力量(从最广泛的意义上来说)来实现其他目标。

我们可能将计算定义为应用于一条信息的转换。从广义上讲,计算就是导致宇宙发生变化的任何过程。不需要提供任何比这更详细的定义。

然后,计算机科学由满足以下条件的人类活动组成:

  • 这是科学,即:

    • 它是(1)形式的或(2)经验的:

      1. 从假定的事实中运用演绎推理
      2. 从观察到的现象中运用归纳推理
    • 它可以是(1)纯或(2)应用

      1. 寻求促进科学理解的状态
      2. 寻求运用科学知识来利用自然力量
  • 它研究计算,即:

    • 它研究(1)转换或(2)信息
      1. 将信息从一种形式映射到另一种形式的过程
      2. 转换对象

感谢您提出经验方面,它也参与了高级TCS研究!例如,CS论文中的经验结果
vzn

5

我想对“科学”一词添加一个观点,该观点太长了,无法发表评论。

人们说计算机科学不是传统方式的科学,因为(在这里简化)我们要么做数学,要么做工程。那不是真的。我们可以运用科学的方法-可以说是科学的基石-这是

系统的观察,测量和实验,以及假设的表述,测试和修改。
(通过维基百科的牛津英语词典 )

实际上,一些最早的算法工作都遵循这一原理。由于某些原因,某些方法已“丢失”,但我们仍然可以使用它。

基本过程¹如下所示:

  • 请注意我们要使用计算机解决的问题。
  • 提出一个算法。
  • 分析算法的数学模型。
  • 根据您的分析,预测算法的(预期)运行时间(在给定的一组输入和给定的计算机上)。
  • 通过实验确认或伪造您的预测。

O

顺便说一句,请不要相信我。罗伯特·塞奇威克(Robert Sedgewick)和菲利普·弗拉霍莱特(Philippe Flajolet)一直在致力于将科学重新纳入计算机科学领域,主要是通过开发能够提供可检验假设的分析组合的正式框架。您可以找到Sedgewick提供的视频和MOOC,它们可以告诉您更多信息。

所有希望都不会丢失。


  1. 当然,这只是制定的wrt算法。您还可以研究图模型是否适合现实(例如,在围绕社交网络的工作中完成,尽管通常比从科学上来说更为经验),或者网络吞吐量是否达到了预期,或者还有许多其他事情。

“所有的希望都不会丧失。” –如果计算机科学不是一门科学(除了用词不当的话),那会是一件坏事吗?
k.stm

@ k.stm在我看来,是的。为什么要减价?
拉斐尔

数学不是一门科学,但是它从未因为不合而遭受苦难。当然,无论是数学还是计算机科学,都不是没有科学就比科学“少”。也许您在数量上是“少”的意思,例如“计算机科学不亚于数学,工程科学”?但是即使那样,我仍然认为在科学之外再也没有继承性收益。为什么会有呢?是否需要科学地进行计算推理?
k.stm

@ k.stm是的。并非所有CS都可以是数学,也不是全部都可以(或想要)是工程学。目前都不是的部分并不总是科学的。那是个大问题。示例:实验算法。数学分析是棘手的,工程原理不适用。然后,我们实际上是在程序上进行科学实验-但是我们通常不使用科学原理。(有多少CS主义者甚至不知道基本统计信息?)
拉斐尔

好的,所以您说的是“我们还需要科学地进行计算推理,因为在某些情况下最有效(或完全不起作用)”,我是否正确理解您?如果是这样的话,我可以理解您的观点–但这并不意味着计算机科学真正成为一门科学具有继承优势。事实证明,这样会更好……
k.stm

3

这可能是一个长期争论的古老问题,可以追溯到计算机科学的起源。研究/回答问题的一种自然方法是通过发表有关该主题的文献。怀疑有很多好的参考文献被埋在文献中,但尚未被引用。同样,与此相关的答案/观点也可能随着时间的推移而发生变化,也就是在该领域有些普遍的库恩氏位移,可能比其他科学领域更为普遍。研究此问题的另一个角度是如何在学术界教授该主题,以及如何使其适应现有的部门结构,该部门结构也随着时间而变化。

这是该领域权威Denning撰写的一些不错的论文/文章,直接解决了这个问题,是开始更多参考的好地方。两者均发表在该领域主要学术学会的期刊CACM上

信息处理和计算继续在许多领域的深层结构中找到。计算不是(实际上从来没有)只是一种人工科学。

计算机科学满足成为科学的每个标准,但是它有一个自我强加的可信度问题。


丹宁将“计算”定义为有效的“计算研究”。显然,对事物的研究与对事物的研究并不相同。我对在不眨眼的情况下接受基本类别错误的程度感到惊讶。
reinierpost 2013年

并不完全同意论文中的所有内容,但是认为您引用的是上下文之外的内容
vzn

2

科学的定义出发

  1. 知识或研究的一个分支,处理系统地安排的事实或真相,并显示一般法则的运行:数学科学。
  2. 通过观察和实验获得的关于物理或物质世界的系统知识。
  3. 自然科学或自然科学的任何分支。
  4. 一般的系统化知识。
  5. 事实或原则方面的知识;通过系统学习获得的知识。
  1. 计算机科学与数学紧密相连,涉及大量研究(例如研究)。

  2. 计算机科学在许多方面与物理学有着广泛的联系。例如计算的物理/热力学,量子计算作为物理定律的P =?NP相变

  3. 它是系统化的知识。

  4. 它经过系统的研究即研究。

术语“计算机科学”强调该领域不仅仅是关于已知原理的应用,例如在工程中。关于计算机科学,有很多关于土地的知识,该领域的许多基本问题尚未解决。全世界的研究人员数量很难估计,但数量却超过数千或数万。

但是,请注意,计算机科学的更多科学方面并没有在本科阶段真正受到过太多的教育/曝光,这可能会导致一些困惑。似乎也没有很多作为科学的高水平的实施例/庆祝/拥护者/拥护者,例如与LHC和希格斯玻色子的发现等其他领域形成对比[尽管CS在其发现!],或著名的卡尔·萨根(Carl Sagan)或霍金(Hawking)般的人口人物。但是,例如,看到启发CS的科普书籍


1
还是取决于计算机科学的子领域,与数学的真正区别是什么?:-)
Juho

另一个因素是计算机科学具有非常强的跨学科方面。一个具有强烈的科学气息,大数据
vzn13年

需要考虑的另一方面。研究的主要CS目的,图灵机被称为&是嵌合状的理论和物理设备之间的交叉。
vzn

图灵机是理想的设备。它们在现实中不存在。即使作为模型,它与“实际”完成计算的方式也不太接近。
Yuval Filmus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.