我目前正在学习软件工程,我的一些课程包括计算理论和分析算法。例如,我发现很难将图灵机与软件工程或简单的编程联系起来。所以我的问题是:
为什么要把在计算机科学中扮演重要角色的理论科目包括在软件工程领域?或者我如何将PDA、TM、P、NP等知识应用到软件开发中?我看不出两者之间的联系。
发布于 2013-05-30 18:01:09
总是需要一点理论知识。它可以帮助你以正确的方式思考。我知道第一种方法看起来很超然,但是如果你能够领会它的真正含义,你就会有额外的魅力,特别是在你的领域。
例如,您提到的图灵机是一个经典的逻辑和数学模型,用于了解机械计算的局限性和潜力,以及研究算法复杂性。
当然,与科学家相比,软件工程师需要更少的理论和更多的技术,但这里我们谈论的是我们应该拥有的理论基础。
发布于 2013-05-30 21:42:13
将这些主题包括在内有两个原因。
我很少使用我在学习原始形式的软件工程时学到的任何理论-甚至是实践-科目。但我相信,对这些原则的良好基础知识会让我成为一名更好的工程师--也更具就业能力。
发布于 2013-06-01 04:21:21
好吧,软件工程教育是有问题的。计算机科学也是如此。
我认为学习图灵机并不会让你对算法的复杂性或计算的局限性有更多的了解。但他们是我们history.We的一部分,应该知道他们。至少我们应该知道阿兰·图灵:-)
并且很难谈论软件工程和计算机科学的“理论基础”。这也是不现实的,有些人会要求你解决NP困难先生,你会说“哦,这是NP problem.And先生”。许多软件开发人员做“例行开发”任务。
因此,你是“正确的感觉”。但软件开发不仅仅是“编写代码”或“学习新的时髦技术”。如果你只是这样做,你会让你的思考工具变得“无趣”。为了保持它们的敏捷性,考虑算法复杂性,像NP这样的问题分类和其他课程作为一种思考练习。为了开发你的想象力,你还可以选修其他系的一些有趣的课程,比如“弦理论”,物理学,或者理解人性,为什么不选修“人类学”课程呢?:-)
事实是,我们的教育是试图使瑞士刀从us.To知道从每件事一点,但不是一个真正的刀或真正的开罐器etc.no深厚的知识,他们认为,如果你认为是一个“真正的开罐器”,你可以开始与“微型开罐器”,他们证明给你。
https://stackoverflow.com/questions/16832302
复制相似问题