相关疑难解决方法(0)

OOP有什么意义?

据我所知,尽管花费了数百万或数十亿美元用于OOP教育,语言和工具,但OOP并未提高开发人员的工作效率或软件可靠性,也没有降低开发成本.很少有人在任何严格的意义上使用OOP(很少有人坚持或理解LSP等原则); 人们对问题域建模所采用的方法几乎没有统一性或一致性.这个课程常常仅用于语法糖; 它将记录类型的函数放入它们自己的小命名空间中.

我为各种各样的应用程序编写了大量代码.虽然有些地方真正的可替代子类型在应用程序中发挥了重要作用,但这些都非常特殊.总的来说,虽然谈到"重复使用"的口号很多,但实际情况是,除非一段代码完全符合您的要求,否则几乎没有成本效益的"重复使用".设计类以正确的方式扩展是非常困难的,因此扩展的成本通常很高,以至于"重用"根本就不值得.

在许多方面,这并不让我感到惊讶.现实世界是不是"OO",这种想法在OO隐含的 - 我们可以用一些类分类模型的事情 - 在我看来非常根本性的缺陷(我可以坐在桌子上,一个树桩,一个车盖某人的膝盖 - 但不是其中一个 - 一把椅子).即使我们转向更抽象的领域,OO建模通常也很困难,违反直觉,最终无益(考虑圆/椭圆或正方形/矩形的经典例子).

那我在这里错过了什么?哪里是OOP的价值,为什么所有的时间和金钱,没有作出任何软件好?

language-agnostic oop

126
推荐指数
24
解决办法
3万
查看次数

什么是"总和产品"数据结构?

对威廉库克Fusings最近的一篇博客中提到:

关键点在于Ensō中的结构被整体地视为图形,而不是单个值或传统的和产品数据结构.

他所指的传统的产品和产品数据结构是什么?

types type-systems programming-languages algebraic-data-types data-structures

44
推荐指数
3
解决办法
6274
查看次数

数据结构分化,直觉建构

根据这篇论文,差异化对数据结构起作用.

根据这个答案:

区分,数据类型D的导数(给定为D')是具有单个"洞"的D结构的类型,即,不包含任何数据的区别位置.这令人惊讶地满足了与微积分差异相同的规则.

规则是:

 1 = 0
 X? = 1
 (F + G)? = F' + G?
 (F • G)? = F • G? + F? • G
 (F ? G)? = (F? ? G) • G?
Run Code Online (Sandbox Code Playgroud)

参考文章对我来说有点过于复杂以获得直觉.这在实践中意味着什么?一个具体的例子太棒了.

haskell algebraic-data-types data-structures

17
推荐指数
2
解决办法
1342
查看次数

代数数据类型的概念是否类似于OO语言中的类定义?

这两个概念都允许创建新的数据类型.我能看到的唯一区别是,在函数式语言中,可以对代数数据类型执行模式匹配.但OO语言没有类似的简洁功能.这是一个准确的陈述吗?

functional-programming algebraic-data-types

6
推荐指数
2
解决办法
1963
查看次数