软件工程中的计算机科学

时间:2013-05-30 09:21:25

标签: computer-science computation-theory

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

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

3 个答案:

答案 0 :(得分:4)

总是需要一点理论。它可以帮助您以正确的方式思考。 我知道在第一种方法中它似乎非常分离,但是如果你能够捕捉到它的真正含义,你就会有额外的魅力,特别是在你的领域。

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

答案 1 :(得分:2)

包含这些科目的原因有两个。

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

  2. 在尝试理解这些基本原则时,我们会发展我们的推理技巧,并将其应用于复杂的多学科问题。

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

答案 2 :(得分:1)

那么, 软件工程教育是有问题的。和计算机科学也。

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

很难谈论软件工程和计算机科学的“理论基础”。 someguy会要求你解决NP难题也是不现实的。你会说“哦,那是NP难先生”。许多软件开发人员都在做“常规开发”任务。

所以你“对你的感情”。但软件开发不仅仅是“编写代码”或“学习新的嗡嗡声技术”。如果你这样做,你会让你的思维工具变得“沉闷”。 为了保持敏锐,可以考虑算法复杂性,NP等问题分类和其他课程作为思考练习。为了发展你的想象力,还可以从其他部门学习其他一些有趣的课程,如“弦论”[物理]或了解人性,为什么不参加“人类学”课程。 :-)

事实是,我们的教育是试图从我们这里做出“强有力的瑞士刀”。从一点点了解,但不是真正的刀或真正的开罐器等[没有深刻的知识]他们认为,如果你认为是一个“真正的开罐器”,你可以从“微型开罐器”开始,他们会向你证明。