将软件工程与土木工程进行比较时,我惊讶地发现了另一种思维方式:任何土木工程师都知道,如果您想在花园中建造一个小木屋,则只需获取材料并进行建造,而如果您要建造一栋10层高的房子(或类似这样的房子),您需要做一些数学运算以确保它不会崩溃。
相反,在与一些程序员交谈或阅读博客或论坛时,我经常发现一种广泛的观点,可以或多或少地提出如下观点:理论和形式方法适用于数学家/科学家,而编程则更多地是要把事情做好。
这里通常暗示的是编程是非常实用的东西,即使形式方法,数学,算法理论,简洁/连贯的编程语言等可能是有趣的主题,但如果所有人都想得到东西,通常就不需要它们了。完成。
根据我的经验,我想说的是,虽然您不需要太多理论来编写100行脚本(小屋),但是要开发复杂的应用程序(10层建筑),则需要结构化的设计,定义的方法,良好的编程语言,可在其中查找算法的良好教科书等。
因此,IMO(适量的)理论是完成任务的工具之一。
我的问题是,为什么有些程序员认为理论(形式方法)与实践(完成任务)之间存在差异?
与土木工程(房屋)相比,软件工程(房屋软件)是否被许多人认为 容易?
还是这两个学科真的不同(除了关键任务软件,软件故障比构建故障更容易接受)?
我尝试总结一下,到目前为止,我已经从答案中了解了什么。
- 与软件工程相反,在土木工程中,对于特定任务需要多少理论量(建模,设计)更加清楚。
- 部分原因是因为土木工程与人类一样古老,而软件工程仅存在了几十年。
- 另一个原因是软件是一种更具可变性的人工产品,具有更灵活的要求(可能会崩溃),不同的营销策略(可以牺牲良好的设计以便快速将其投放市场)等。
结果,要确定在软件工程中合适的设计/理论量是非常困难的(太少->凌乱的代码,太多->我永远无法完成),因为没有通用规则,而只有(很多)经验可以提供帮助。
因此,如果我正确地解释了您的答案,那么 对于真正需要多少理论的不确定性会导致一些程序员对理论的爱恨交加。