Dijkstra 迪克斯特拉酒店;“软件工程”;

Dijkstra 迪克斯特拉酒店;“软件工程”;,dijkstra,Dijkstra,Edsger Dijkstra有时会有些粗暴(他称之为“卡尔·弗里德里希·高斯,数学家之王,但也有点胆小鬼”)在他的文章《论真正教授计算科学的残忍》(the Crucity of really teaching computing science)中说: 许多这样的现象都被冠以“软件”的名称 工程”。正如经济学被称为“悲惨的科学”,软件 工程学应该被称为“命中注定的学科”,命中注定是因为 它甚至无法接近自己的目标,因为它的目标是自相矛盾的。 当然,软件工程是另一个有价值的领域 原因,但这是洗眼水

Edsger Dijkstra有时会有些粗暴(他称之为“卡尔·弗里德里希·高斯,数学家之王,但也有点胆小鬼”)在他的文章《论真正教授计算科学的残忍》(the Crucity of really teaching computing science)中说:

许多这样的现象都被冠以“软件”的名称 工程”。正如经济学被称为“悲惨的科学”,软件 工程学应该被称为“命中注定的学科”,命中注定是因为 它甚至无法接近自己的目标,因为它的目标是自相矛盾的。 当然,软件工程是另一个有价值的领域 原因,但这是洗眼水:如果你仔细阅读它的文献和 分析它的爱好者们实际做了什么,你会发现这个软件 工程部已经接受“如果你不能,如何编程”作为其章程。
这是真的吗?我不同意。对我来说,软件工程是如何着手解决复杂的问题并完成一些事情,而不仅仅是在这里或那里编写一些代码

即使你可以编程,你也需要了解大型学科等。将科学引入工程是指利用现有技术在实践基础上做出决策,并组建一个团队(大型、小型或单一团队),设计和生产在此时此地有效的产品

在进行软件开发时,计算机科学是一个非常狭窄的领域,不是一个日常问题

(这当然取决于你的产品。有些产品比其他产品有更多的技术和科学,不管它们是软件、硬件、建筑、自行车、汽车还是太空火箭。)

我有点好奇--

这个问题应该保留在这里,留给后人。收集与该主题直接相关的人的所有意见,为那些查阅他引用的解释的人收集意见

你会发现软件工程已经接受了“如果你不能的话如何编程”作为它的章程


我想我同意这一点。至少当我反思我们所学的内容和大量的文学作品时,我有点意识到它的目的是指导那些不会编程的人。

哇,17分钟内投了一个反对票和四个接近票。软件开发人员确实仍然讨厌Dijkstra。这真的很主观,请把它变成一个wikiNo,我们只是讨厌非问题。这是一个严肃的问题。公平地说,堆栈溢出不适用于没有简单答案的问题吗?@CurtSampson:是的,这是真的。不过没人在乎。教软件行业所需要的那么多人如何成为称职的程序员根本不划算。平心而论,我们的主要限制之一是工具的原始性:我们需要强制执行前置和后置条件,但我们不使用依赖类型。我们需要保证资源得到适当的清理,但我们不使用线性类型。见鬼,如果我们真的做类型,我们设计的类层次结构主要是基于“直观”的事实,而这些事实在极端情况下是不成立的。好的结果不可能通过坏的手段来实现。除了,一旦他们在团队中开发一个太大的软件,以至于一个人无法编写或维护,那些认为他们可以编程的人通常会发现,根据这个定义,他们不能-如果他们谦逊地接受这一点的话。@MichaelBorgwardt完全同意,软件工程在这门学科的人文领域大放异彩。它有助于回答和研究“人们如何共同工作来制作软件?”这一问题。我更希望有一位了解软件工程科学的程序员/开发人员来做这些决定,而不是一位只做过程序员/开发人员甚至根本没有做过的经理。