首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >软件工程中的计算机科学

软件工程中的计算机科学
EN

Stack Overflow用户
提问于 2013-05-30 17:21:25
回答 3查看 337关注 0票数 1

我目前正在学习软件工程,我的一些课程包括计算理论和分析算法。例如,我发现很难将图灵机与软件工程或简单的编程联系起来。所以我的问题是:

为什么要把在计算机科学中扮演重要角色的理论科目包括在软件工程领域?或者我如何将PDA、TM、P、NP等知识应用到软件开发中?我看不出两者之间的联系。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-30 18:01:09

总是需要一点理论知识。它可以帮助你以正确的方式思考。我知道第一种方法看起来很超然,但是如果你能够领会它的真正含义,你就会有额外的魅力,特别是在你的领域。

例如,您提到的图灵机是一个经典的逻辑和数学模型,用于了解机械计算的局限性和潜力,以及研究算法复杂性。

当然,与科学家相比,软件工程师需要更少的理论和更多的技术,但这里我们谈论的是我们应该拥有的理论基础。

票数 5
EN

Stack Overflow用户

发布于 2013-05-30 21:42:13

将这些主题包括在内有两个原因。

  1. 正如Gengiolo所说,这些构成了我们都应该拥有的理论基础。
  2. 在试图理解这些基本原则的过程中,我们发展了推理技能,并可以将它们应用于复杂的多学科问题。

我很少使用我在学习原始形式的软件工程时学到的任何理论-甚至是实践-科目。但我相信,对这些原则的良好基础知识会让我成为一名更好的工程师--也更具就业能力。

票数 2
EN

Stack Overflow用户

发布于 2013-06-01 04:21:21

好吧,软件工程教育是有问题的。计算机科学也是如此。

我认为学习图灵机并不会让你对算法的复杂性或计算的局限性有更多的了解。但他们是我们history.We的一部分,应该知道他们。至少我们应该知道阿兰·图灵:-)

并且很难谈论软件工程和计算机科学的“理论基础”。这也是不现实的,有些人会要求你解决NP困难先生,你会说“哦,这是NP problem.And先生”。许多软件开发人员做“例行开发”任务。

因此,你是“正确的感觉”。但软件开发不仅仅是“编写代码”或“学习新的时髦技术”。如果你只是这样做,你会让你的思考工具变得“无趣”。为了保持它们的敏捷性,考虑算法复杂性,像NP这样的问题分类和其他课程作为一种思考练习。为了开发你的想象力,你还可以选修其他系的一些有趣的课程,比如“弦理论”,物理学,或者理解人性,为什么不选修“人类学”课程呢?:-)

事实是,我们的教育是试图使瑞士刀从us.To知道从每件事一点,但不是一个真正的刀或真正的开罐器etc.no深厚的知识,他们认为,如果你认为是一个“真正的开罐器”,你可以开始与“微型开罐器”,他们证明给你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16832302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档