2

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

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

4

3 回答 3

5

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

例如,您提到的图灵机是一种经典的逻辑和数学模型,用于理解机械计算的极限和潜力以及算法复杂性的研究。
当然,与科学家相比,软件工程师需要更少的理论和更多的技术,但这里我们谈论的是我们应该拥有的所有理论基础。

于 2013-05-30T10:01:09.197 回答
2

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

  1. 正如 Ggiolo 所说,这些构成了我们可以说都应该拥有的理论基础。

  2. 在试图理解这些基本原理的过程中,我们发展了我们的推理能力,并将其应用于复杂的多学科问题。

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

于 2013-05-30T13:42:13.407 回答
1

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

我认为研究图灵机不会让您更深入地了解算法复杂性或计算限制。但它们是我们历史的一部分。我们应该了解它们。至少我们应该知道艾伦·图灵 :-)

而且软件工程和计算机科学的“理论基础”也很难讲。某些人会要求您解决 NP 难题也是不现实的。您会说“哦,那是 NP 难题先生”。许多软件开发人员做“日常开发”任务。

所以你“对你的感觉是正确的”。但软件开发不仅仅是“编写代码”或“学习新的流行技术”。如果你只是这样做,你会让你的思维工具变得“乏味”。为了使它们保持敏锐,请考虑将算法复杂性、问题分类(如 NP)和其他课程作为思考练习。为了发挥您的想象力,还可以参加其他部门的一些其他有趣的课程,例如“弦理论”[物理学],或者了解人性为什么不参加“人类学”课程。:-)

事实是,我们的教育是试图从我们身上制造 一把瑞士刀。从一切中了解一点,但不是真正的刀或真正的开罐器等。[没有深入的知识] 他们认为,如果你认为是“真正的开罐器”您可以从“微型开罐器”开始,他们会向您提供。

于 2013-05-31T20:21:21.253 回答