计算机科学家和计算机程序员的区别

28

计算机科学家和计算机程序员之间有什么区别?他们在实际工作中(而不是学术界)做的工作有什么不同?您能提供一些真实世界的例子吗?


我倾向于将“软件工程师”也加入其中。快速搜索表明,在英国(可能在其他地方也是如此),它是一门被认可的学位科目,与计算机科学有着不同的课程设置。我猜测(希望!)它涉及的不仅仅是批处理COBOL编程。 - Mike Woodhouse
3
一个去上了大学,另一个读了那种“21天学会......”的书。 :-) - Scott Smith
"开发者"怎么样?http://qweop.com/xa - Pacerier
现在还有“DevOps”。 - Pacerier
12个回答

36

计算机科学是一门学术领域,有点类似于数学研究。它是研究算法、数据结构等方面的内容。

计算机程序员编写程序;这个术语通常用于描述工业界的人,当然计算机科学家也会编写程序。

一个典型的计算机科学家可以是像唐纳德·克努斯这样的人。他在算法方面的工作是传奇的。

一个典型的计算机程序员可能是杰夫·阿特伍德。我们现在正在使用他的网站。


6
像戴克斯特拉这样的人可能更具代表性,作为一名计算机科学家。 - mhmhmhmh
15
唐·诺思(Don Knuth)是少有的人之一(在我所知道的人中仅有他),既是计算机科学家,也是一位优秀的程序员。他编写了TeX(当前每发现一个漏洞可获得327.68美元的奖励),以及CWEB,并创造了“文学编程”的实践方法。 - ShreevatsaR
我自己是唐纳德·克努斯的超级粉丝。 - Umair Ahmed
2
迪科斯彻本人即使已经停止使用计算机,仍然认为自己是一名程序员!(请参阅他的《卑微的程序员》、《编程作为一种人类活动》等著作。) - ShreevatsaR
@ShreevatsaR 哇,一个漏洞就能拿到327.68美元? - Pacerier

9
现如今,即使只会VBScript,一个人也可以自称为计算机程序员。抛开玩笑,我对行业术语有些不满意,例如“计算机程序员”或“软件开发人员”。
请参见软件工程师的定义程序员和工程师的区别 虽然科学家和工程师之间的区别非常明显,但两者都需要了解计算机科学。科学家的主要关注点是扩展科学知识体系,而工程师则专注于将这些知识应用于实际系统中。

谢谢。你刚刚帮我省掉了写同样答案的麻烦。只不过我会使用物理学家和电气工程师之间的类比。 - John Saunders

8

我是一名计算机科学家(我的学位上这样写,所以这一定是真的!)拥有26年的工作经验。在这段时间里,我可能只花了5%的时间编写程序;其余时间主要用于:

  • 对其他人编写的应用程序进行性能测试,并在发现问题时推荐解决方案
  • 在大型公司中建立测试能力组
  • 运行运营团队
  • 运行研发团队
  • 软件架构
  • 调查和批准适合我工作的组织的架构解决方案(最近,包括Ruby,F#,Erlang)
  • 设计基础设施解决方案
  • 运行技术培训课程
  • ……

现在我编写代码主要是为了让自己在工作中更轻松,或者出于个人兴趣;我不是“编码员”,很少依靠我的编码技能赚钱。

如果你正在寻找行业差异的简单解释,我建议程序员主要关注做什么和何时完成,而计算机科学家主要关注如何完成和为什么。我很想听听其他人对这种区别是否符合他们的经验。


7

*戴上不认真的回答帽子*

一个是务实的,另一个不是。


7

这就像是工程师和技工一样。不幸的是,我认为我是一个技工 :P


11
实际上,我倾向于将其视为物理学家和工程师。通过理解物理学,我们可以构建更好的桥梁,有些东西如果不进行基础研究是无法建造的。尽管如此,我仍然更愿意雇用土木工程师来建造桥梁。 - HerbN

5
你可以将其类比为数学和应用数学。前者能够探索和研究新的数学模型和定理,而后者则是如何在实践中使用和应用它们。因此,计算机科学和计算机编程也是如此。前者探索新的计算机科学领域定理和高效数据结构,而后者更多地关注如何有效地利用科学成果。

4

3
我对那篇维基百科关于计算机科学家的文章唯一的问题是它说他们可能会专注于软件工程。在我看来,这两个领域非常不同,一个研究了真正的计算机科学的人不一定适合从事软件工程师的工作。 - Thomas Owens
1
好的,这是维基百科,如果你的观点充分证明,你总是可以进行编辑。 - Kostas Konstantinidis
1
我认为软件工程是计算机科学的一个分支,就像流体动力学是物理学的一个领域一样。当然,有些计算机科学家专注于软件工程,而其他人对此知之甚少。 - Michael Borgwardt
1
在我看来,计算机科学是一个非常广泛的不同学科领域。人工智能、神经网络、算法等等,应有尽有。而程序员则在软件生产模型的某个特定领域内具有专业化的技能,虽然仍然可以涉猎很多领域。 - Kostas Konstantinidis
1
@R. Pate 实际上,错误信息在维基百科上存活不了太久。 - Kostas Konstantinidis
显示剩余4条评论

3
我会用建房子的人与设计房子的人来打比方。
现在有第三种类别,就是寻找实施房屋设计的方法的人。
所以,我认为程序员往往是程序的建造者,而科学家则专注于找到实现细节的方法。大多数情况下,程序员使用科学家的工作来完成他们的工作。
具体来说,程序员实现快速排序算法,而计算机科学家则发现了这个算法。

3
曾经有一个笑话是这样的:
问:猿和计算机科学教授有什么区别?
答:猿不认为自己能编程。
这对计算机科学教授来说有点刻薄,其中许多人实际上可以编程。然而,并不是所有人都习惯于定期进行编程。在理论端,你会看到一些本质上是数学家的人。一些人机交互领域的人更多地处于应用心理学的空间而非编程。还有其他这种类型的例子 - 计算机科学远不止于编程。
另一方面,许多实践程序员缺乏基本的计算机科学理论知识,例如大O符号。无论一个人对是否应该具备此类知识持何种观点,它肯定不会阻止人们成为程序员。
因此,我们可以认为计算机科学家和计算机程序员并不是同一回事,尽管它们并不完全互斥。一个人既可以是计算机科学家,也可以是计算机程序员。

1
对于说计算机科学家可能不会编程这一说法,我觉得有点不公平。也许他们不能在合理的时间内交付真实世界的系统,但这与说“他们不会编程”是完全不同的。 - Andrew not the Saint
足够正确。原始笑话确实是指能够制作可工作的交付成果,而不是编程本身。我认为这里的关键点是,一个人可以成为计算机科学家,而不必经常编写大型生产应用系统。 - ConcernedOfTunbridgeWells

2

一个词:科学家或程序员。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接