计算机科学属于什么学科?[关闭]


15

是计算机科学,应用数学,工程学,艺术,哲学吗?“其他”?

为了提供背景知识,这是史蒂文·沃蒂克(Steven Wartik)在《科学美国人》上发表的博客文章,标题是“ 我不是真正的科学家,没关系。” 本文涵盖了该问题的一些不错的主题,但开放性远远超出了答案。

如果您能想到该学科,计算机科学将如何适应其定义?计算机科学的学科应该基于程序员的工作还是学者的工作?您从似乎对此有深刻思考的人那里得到什么样的答案?他们给出什么原因?


1
我见过的任何学者都说计算机科学是一门科学,它有完全不同的理由来解释为什么。
Macneil 2010年

5
计算机科学是政治学,少了一些政治学。
工作

1
计算机科学是应用数学的一个分支。“科学”指的是使用科学方法,这在计算机科学中是不存在的。但是,当每一个新学科都希望在其名称的末尾加上“科学”一词时,就将其命名。
红色污垢

2
@ red-dirt不正确。CompSci中有科学的方法。您可以进行实验,形式证明等。大多数铁杆计算机科学家都喜欢数学和形式逻辑(请参阅:lambda演算,停顿问题等),并在同行评审的期刊上发表论文。不要将他们与发明“方法”的人混淆,“方法”一词在任何意义上都不是科学家。
Andres F.

1
@ red-dirt与AndresF相似,在更实际的应用程序方面,调试过程中会使用基本的科学方法(假设,测试,检查,重复)-这通常会占用大部分编程时间。
Izkata 2012年

Answers:


30

有两种不同的IT学科:

  • 计算机科学-是使用科学方法进行计算机和计算的学科研究。

  • 软件工程-是遵循正确的工程原理设计和实施软件的学科。

两者有些重叠,但是区别实际上是科学与工程的预期结果。科学学科的理想结果是知识。工程学科的理想结果是行之有效。

因此,回答您的问题:

是计算机科学,应用数学,工程学,艺术,哲学吗?“其他”?

正确完成计算机科学就是科学。但是,像其他学科一样,CS与数学,工程学,物理科学,社会科学,哲学等学科重叠。

我还要补充一点,大多数程序员所做的既不是计算机科学也不是软件工程。它更像是工匠所做的。

而痛心地说,无论是学术计算机科学或软件工程专业是一样严格的旧的科学和工程学科。(计算机科学领域历来是严格的;例如,具有强大的数学基础的领域。但是对于许多领域,对真正重要的问题进行适当的科学研究实在太困难/太昂贵了。)


1
还有硬件工程-必须设计出物理计算机才能运行该软件-这实际上是电子工程的(主要)子学科。
多纳研究员

对于工匠类比+1,我意识到这是解释软件工程师CS所做工作的最精确概念。这是O'Reilly的免费书籍链接。 apprenticeship-patterns.labs.oreilly.com/ch01.html
romeroqj 2011年

“而痛心地说,无论是学术计算机科学或软件工程专业是一样严格的年长科学与工程学科”:我不同意这种说法。除其他事项外,如果计算机科学不严格,我们将不会在编程语言,编译器(及其背后的所有形式语言理论),密码学等方面取得进步。所有这些应用程序都具有坚实的基础,而该基础已经在学术界得到了广泛的发展。
Giorgio

@Giorgio-很可惜您没有读完我引用的句子后我写的东西……
Stephen C

@Stephen C:我确实读过它,但我仍然不相信计算机科学不比其他科学严谨(但是,我当然可能错了)。或者,也许应该首先定义一个人认为什么是“科学的”和“严谨的”,而不是什么,但是我想这可能需要长时间的讨论。
Giorgio

12

程序员很少“做计算机科学”。他们主要使用显然, “软件工程”的结果,这是一门工程学科。

除此之外,计算机科学是应用数学。如果将CS与应用数学中不可或缺的东西进行比较,您会发现很多相似之处。

计算机科学家设计和研究了计算方式(算法),并从数学(逻辑,图论,组合数学等)中吸取了大部分理论,并同时对此做出了贡献。就像其他应用数学一样。

他们从理论上评估这些模型和算法的属性,并进行建模实验(编写测试程序)。就像应用数学家在群集上模拟管中液体的流动一样,计算机科学家也使用计算机来实验其算法的实现。这些实验的结果直接进入生产:炼油厂或库存分析软件。

在我完成的大学中,甚至没有专门的计算机科学系:在非计算机领域,计算机科学系主任是应用数学系的一部分。


但在其他大学中,计算机科学是数学学院内的一个独立系,是工程学院,科学系的一个部门,或者...以上都不是。这些是行政/组织问题,与实际主题材料无关。
斯蒂芬·C

@Stephen,这就是我指定大学的原因,而不是说“在大多数大学中”或“在许多大学中” :-)这只是一个小例子,而不是答案的要旨。
P Shved

1
确定这是一个“小例子”,但我的观点是这不是一个有代表性的例子,它与您的论点甚至没有特别的关系。为了说明这一点,我工作的大学正在改组各系……不是因为对与什么有关的任何深刻思考…… 而是为了降低管理成本。几年前,出于同样的原因,CS和Elec Eng学校合并在一起。
斯蒂芬·C

正如我在最初的答复中所述,计算机科学是一门应用数学学科,涉及计算自动机的设计和应用。编程不是计算机科学。软件是一种实现计算自动机而无需动动烙铁的方法(只要有足够的空间,任何程序都可以使用顺序和组合逻辑来实现)。冯·诺依曼架构与之前的架构不同,它是通用自动机,可作为创建“软”专用自动机的基础。
bit-twiddler

1
@ bit-twiddler-您的定义太狭窄。它不包括许多传统上被归类为“计算机科学”的学术领域。
Stephen C

5

如今,计算机科学这个术语涵盖了许多很多方面:

  • 大师级工匠根据他们在工具方面的经验(以及有学徒等)为他人工作。
  • 工具匠为工匠发明和创造新工具
  • 研究人员为工具匠开发了新的合金和其他材料,例如塑料。
  • 理论科学家弄清楚了材料如何工作,以便合金制造商知道他们的工具如何工作。

请注意,以上所有内容具有独特的命名方式,而不仅仅是“计算机科学家”。区别仅在于计算机科学太新了,无法命名。


点2更像是一个工具匠cent,但是这个答案是对的:)
ZJR

1

首先,它是计算机科学。这涉及计算背后的数学。
还有其他一些学科更注重工程学。

区别与任何相关的科学和工程学科相同。一个是关于准确性,另一个是关于准确性。计算科学是理论性的,其他则是应用于问题的科学:工程学的分支。


1
麻省理工学院不同意您的意见eecs.mit.edu
Armand

@Alison,请同时修复Wiki条目(en.wikipedia.org/wiki/Computer_science)。
CMR


0

计算机科学是应用数学的一个分支,涉及计算自动机的设计和应用。软件工程是计算机科学的适当子集,它处理冯·诺依曼体系结构的代码的正式设计和构造。冯·诺依曼架构只是实现计算机的一种方式。例如,用于破解Enigma编码消息的机器不是von Neumann机器。

软件工程是一门实践学科。计算机科学是面向研究的学科。大多数计算机科学专业的本科生最终都从事软件开发,因为研究需要至少拥有硕士学位,这进一步证明了计算机科学是光荣的编程证书。


3
我不认为许多学术计算机科学家会接受如此狭义的CS定义。
Stephen C

0

在我检查过的大多数大学中,最准确地称为“计算机科学”的学科是一门类似于工程学科的应用科学。如果您主修该课程,您将获得“ BS”或“ MS”。德克萨斯理工学院的CS学位由工程学院提供。正如所教授的,该学科大部分是理论性的;您将学习图灵机,DA / NDA以及其他一些基本概念,而这些“日常”程序员实际上并不需要在他们的头骨上四处乱窜。您还会得到更高的数学要求。得克萨斯理工学院CS学位,我也会打赌其他很多人,几乎会给你一个数学辅修课程。为此,大多数大学的学位课程都大量增加了实际的低层次应用。您会学习汇编语言,第三代语言,

但是,大多数以代码为生的人不是“计算机科学家”,而是“计算机科学家”。严格来说,他们是“软件开发人员”或(当您添加分析/设计时)“软件工程师”;这项工作的硬件水平要低得多(尽管您必须了解该基础知识),而系统分析,设计和直接编码则要多得多。为此,许多大学有不同的发展方向。在德州理工大学,它被称为“信息系统管理”,并且是商业学位(BBA / MBA)。该课程在高等数学上比较轻松(关于代数的知识和微分/积分calc被压缩为“商务数学”的两个学期,并且不包括向量/张量calc,线性代数等),在金融数学(每学期统计和金融,会计和经济学各两个)。在操作系统上更轻,在“堆栈”技术上更重,例如数据库,Web服务器,网络和常规系统管理。轻度使用低级语言,电路设计和AI,重度使用第3代和第4代语言,系统分析和项目管理。我是从德州理工学院获得这个学位的,到我离开时,我至少有一个学期的Java,VB,C#和Web语言(HTML / CSS / PHP),再加上一年的OOA&D和其他各种课程在IT项目管理中。

在现实世界中哪个更好?我获得了MIS BBA,我的兄弟获得了CS BS,并且我们两个人的薪资水平都与高级软件工程师大致相同(根据生活成本进行调整)。他必须学习很多在工作中必需的OOA&D,并且必须从他的基本C ++知识中快速学习C#/ Java。就我而言,我希望我有两个学期的概念算法研究,这是他在我被商务管理课程卡住时获得的(是的,MIS是“管理”学位,但我发现我有99%的知识是关于如何通过示例学习管理和管理其他人)。

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.