计算机科学和编程之间有什么区别?


32

我是计算机科学和编程的新手,我想知道,计算机科学和编程之间是否有区别?您会选择只在大学中学习其中之一,还是两者同时学习?


42
类比时间不好。
Mike Weller 2012年

10
建筑与建筑有什么区别?
奥德

6
他们在地质学和挖沟方面相距甚远
Steven A. Lowe 2012年

27
计算机科学是您要学习的东西。编程是您的报酬。
jfrankcarr 2012年

5
区别在于使您使用平滑排序而不是冒泡排序的原因。
deadalnix 2012年

Answers:


68

计算机科学是对计算机[可以]做什么的研究。编程是使计算机做事的实践。

查看您感兴趣的大学提供的课程/课程大纲,以了解该课程是CS课程,编程课程,其他课程(例如软件工程)还是以上课程的组合。标榜为“计算机科学”的许多课程都提供了重要的编程组件,可能使您可以将课程的理论部分付诸实践,也可以出于自己的目的而使您学习编写程序的技能。


1
很好的答案,虽然它不能回答问题的实际部分;)
back2dos 2012年

@ back2dos好,我扩展了答案。

需要注意的是,大多数计算机科学课程也完全不涉及理论CS,TCS与实用CS至少与CS与编程一样独立。
Ben Brocka'2

3
我认为您不应该将CS(尽管名称)与计算机联系得太紧:首先,这是对信息的研究。碰巧“计算机”一词包含了我们用来处理信息的大多数不同的物理工具,因此几乎所有的信息研究都将涉及对计算机进行编程。
Tikhon Jelvis

分类学可能适合信息科学的范畴。但这在CS下并不适合我。在跨学科的意义上很有用,但是CS在某种程度上与我们可以用IMO进行计算机处理有关。我可能会更笼统地定义“计算机”的定义,而不是CS的定义。
埃里克·雷彭

36

一个警告:“计算机科学”已成为现代泥泞的领域,因为(至少在美国)大学没有“程序设计”学位。这意味着对编程感兴趣的人必须注册计算机科学学位,并且作为对计算机科学程序越来越强调编程的回应。

就是说,计算机科学本身就是一门强大的数学科学-计算数学可能是一个更好的术语。它涉及图论,算法复杂性,形式逻辑,自动机的研究,以及一般而言可以描述对输入算法的转换或响应的任何逻辑结构-研究。经典意义上的计算机科学家可以推理出控制任何计算系统(包括现代计算机)的规则,而不必知道当前体系结构的实现细节。计算机科学的深厚背景使您能够开发(或调用)高效,可扩展的算法,预期逻辑上的简化并合理地推理出什么是易处理的。

相比之下,编程就是人们使用编程语言算法转换为机器可以完成的事情时所要做的事情。(这应该使与计算机科学的密切联系以及许多混乱的根源显而易见。)程序员(相对于环境和语言)应该能够采用几乎任何算法集并将它们转换为人类形式-并且通过编写代码可机读。强大的编程背景(正如大多数CS学士学位所提供的那样)使您能够编写更好的代码-更好的代码更容易为他人所理解,并且在表达所实现的算法方面更加成功。

当然,会有大量的串扰,并且其中一个人的高水平经验将与另一个人的开发经验高度对应-如前所述,CS专业几乎总是一名合格的程序员,并且经验丰富的程序员已经开始学习CS的许多原则。想想物理与工程。

记住差异的一个好方法是:如果需要一台计算机来查看其是否正常运行,那就是编程-如果可以用铅笔和纸来完成,那就是计算机科学。


4
是的,最后一句话是难道,不是吗?它让人联想起皱巴巴的教授的图像,头发卷曲,头发卷曲,手指在羊皮纸上挥舞着,用粉笔写着,并想到了这样的话:“计算机科学与计算机无关,天文学与望远镜无关。” 如果科学最终没有以某种方式使它成为一台机器,那又有什么意义呢?在他们的右脑中,哪位天文学家从未通过望远镜看到过?
罗伯特·哈维

在过去的30年中,我认为我从未被要求“将算法转换为机器可以完成的事情”。您所考虑的不是程序员,而是编译器。
gnasher729

2
@ gnasher729好,让我们说算法“对于列表中的每个单词,如果它以A开头,请将其移到开头。” 您会推荐什么编译器?
shanef22


11

在我看来,计算机科学应该是像物理学一样的硬科学。

它涉及对编译器和编译器生成器,硬件体系结构概念,各种形式的数字系统,算法和算法效率/性能以及对处理器进行算术运算的理论的研究。当我在大学学习CS时,我们花了很多时间来研究汇编程序,了解编译,链接和解释等之间的区别。

其中很多是通过编程完成的-即编写代码的行为,然后通过解释器编译或运行代码,目的是生成结果来解决问题。即,编程是解决问题的行为,可以用计算机科学的知识来描述。这有点像是纯数学/应用数学的分裂。

您不需要计算机科学学位即可成为程序员,但是具有CS背景的程序员可能会对计算机程序的行为有更深入的了解。


1
我认为CS学生不会比其他编程课程的学生更好。
Tjaart

5
我没有说更好,我说可能有更深刻的理解。
mcfinnigan

我会说@mcfinnigan,更容易被误导。在理论上扎根的CS学生倾向于较少的了解,因为他们实际上没有经验去了解计算机可以做什么,或者如何用各种语言到达那里。
Izkata 2012年

3
再一次,你误会了我。我的意思是,花时间学习一些实际CS 理论的程序员更有可能知道为什么在某些情况下Set比List更好,或者为什么浮点比较棘手。
mcfinnigan 2012年

2
@TikhonJelvis:工程学采用数学,但距离两步之遥。CS是数学的一个分支。
凯文·克莱恩

3

我想将您的问题改写为“计算机科学与软件工程之间的区别是什么?” 毕竟两者都涉及编程。

计算机科学是关于什么是计算,什么是可能,什么是不可能的理论研究。它看起来像Godels定理和Halting问题。

软件工程是一种编写程序的方法,该程序可以执行设计和维护的任务。


否。为什么要重提他的问题?他问他问什么。软件工程不同于编程,并且也引起争议,因为它在不同国家(例如美国和加拿大)的含义不同
道格拉斯(Douglas

2

计算机科学是编程理论。编程就是实现。

计算机科学 ...是计算及其应用的科学和实用方法。一位计算机科学家专门研究计算理论和计算系统的设计。

它的子领域可以分为多种理论和实践学科。一些领域,例如计算复杂性理论(探讨计算问题的基本属性),是高度抽象的,而诸如计算机图形学等领域则强调现实世界中的视觉应用。还有其他领域专注于实现计算的挑战。例如,编程语言理论考虑了各种描述计算的方法,而计算机编程本身的研究则研究了使用编​​程语言和复杂系统的各个方面。人机交互考虑了使计算机对人类有用,可用和普遍访问的挑战...


12
老实说,我相信计算机科学不仅仅是编程。
Ubermensch '02

2
@Ubermensch:老实说,我相信编程不仅仅是计算机科学。
Michael Borgwardt 2012年

1
@MichaelBorgwardt实际上,我们两个观点都是正确的。但是计算机科学仍然比编程要大得多(您也可以反过来争论)。尼尔·玻尔(Niehls Bohr)的一句名言:“真理有两种,小真理和大真理。您可以识别小真理,因为它的对立是虚假。大真理的对立是另一种真理。”
Ubermensch '02

@Ubermensch您的信念是事实。计算机科学不仅仅是编程理论。计算机科学早于计算机出现。
Casey Patton 2012年

1

如果编程是木工,那么计算机科学就是架构/设计。

编辑

更多信息:在木工行业中,您对诸如建筑的顺序感兴趣(框架,底层地板,内墙,干墙等)。如何构建它,以减少构建时间,但以后可以进行修改。

就建筑而言(无论如何,它的一部分都像CS),您关心的是诸如材料的功能是什么,需要支撑多大的横梁?

类似地,CS与计算机的理论能力有关,而编程与该知识的实际应用有关。


3
打个比方。如果编程是木工,那么软件设计就是架构/设计。在这方面,计算机科学更像是树状学,或者一般而言是生物学。
back2dos 2012年

好的,也许我不清楚,所以让我解释一下为什么我认为您的类比是行不通的。关注材料的功能是材料科学,而结构的稳定性是静态。它们实际上都不是设计的本质,它们只是限制了它。设计(软件或建筑物或其他任何东西)是要考虑所有要求和约束(技术,财务,心理等),并设计出满足这些要求和约束的解决方案。
back2dos 2012年

1

计算机科学就像编程一样,物理就像是机械工程一样。

计算机科学是理论上的,它采用科学和数学的方法来处理信息及其计算。

计算机编程是实用的,它是设计,编写,测试,调试和维护计算机程序源代码的过程。

它们是不同的,但是相关的领域。双方都受益匪浅。


0

计算机科学学位的范围更广,涵盖了计算背后的理论。一个在计算机编程的程度,另一方面,是专注于在不同的编程语言把他们培养发展学生的编码或编程技能。如果您感到困惑,可以在圣地亚哥的加利福尼亚学院浏览这两个程序的详细信息。这可以使您对这些学位的范围有所了解!


0

计算机科学:这是使用计算机/计算方法解决问题的研究。

计算机编程:解决问题的过程就是组成计算机科学领域的一部分。计算机编程只是计算机科学的一小部分。


-1

编程是关于人的。人们阅读,编写和维护代码。计算机科学是关于数学的,它们实现和描述算法。


3
@ SK-logic和DeadMG。我删除了所有这些评论。如果您希望进行讨论(或确实要辩论),请转至其他地方。
克里斯·

1
那有点狭窄。至少,我大学的“算法,机器和人员”实验室不赞成:)。该实验室包含一些顶尖的CS研究人员。到处都是HCI人。我有点开玩笑,但CS确实比算法和数学更广泛。
Tikhon Jelvis

-1

编程(开发)是关于赚钱。科学就是发现新事物。


7
有人忘了告诉开源社区。
webbiedave 2012年

2
@webbiedave-好吧,那里可能有一两个真正的利他主义者,但是最终开源也意味着赚钱。我敢说大多数参与开源项目的人都这样做是为了提高他们的技能和/或简历,并提高他们未来的收入潜力。许多开源项目也产生商业/企业版本以从该项目中产生收益。因此,开源社区在赚钱方面
pap

科学不是一样的吗?;)
webbiedave 2012年

@webbiedave-不,我不同意。尽管金钱可能是科学的副产品,但它不是(也不应该是)主要目标。科学本身就是为了发现。公司进行研发,但这并不是发现新事物,而是将已经发现的事物货币化。
pap

大多数科学家想要更多资金的唯一原因是,他们可以进行更多的研究。我认为开源同样重要。做开源来增强您的简历对我来说,这听起来像一条通往失败的道路。它应该与好奇心,发现和and痒有关。
Tjaart
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.