近期与同事讨论,函数式(FP)正在缓慢取代面向对象(OOP)?

345 天前
 raycake
请关注问题,别抨击提题问题的人和问题本身(狗头保命)。
10964 次点击
所在节点    程序员
90 条回复
Azone
344 天前
现在的语言不都是多范式的吗,为啥要纠结这个,而且现在新兴的还有 POP
songray
344 天前
恰恰相反,业界已经几乎没有纯 fp 或纯 oop ,大多数情况下,最佳实践都是某种比例的糅杂。
lxdlam
344 天前
先问是不是再问为什么。

FP 跟 “OOP” 本来就是正交的概念,与 FP 相对的是 Imperitive Programming ,而 FP 可以看作一种 Declartive Programming 。在 1994 年确定的 ANSI Common Lisp 标准中,Common Lisp Object System ( CLOS )已经被完整定义,这是一个完整的对象系统,而被广泛实现的 Meta Object Protocol ,更是后面 Java AOP 的真正前驱。同样,1996 年 OCaml 继承 Caml 衣钵,在 StandardML 基础上发展出了完整的 Object 系统,这也是一个完整的 OOP 系统。而 Scala 跟 Clonjure 这种本身就诞生于 JVM 的语言,更是天生就具有 OOP 能力。
charlie21
344 天前
在 存在一个极为明显的继承关系 的时候
继承是有用的

- 比如本站名帖: 继承 nannanziyu site:v2ex.com /t/761625
- 比如在尝试基于第三方库制作自己项目用到的一些极为基础的类的时候 ,此时 第一件事情就是 创建新 class 继承原有的类,然后稍加修改
charlie21
344 天前
基础库里经常看到类的拓展 例如
https://afterlogic.com/aurora-files-api/index.html
https://afterlogic.com/aurora-files-api/Aurora.Modules.Core.Models.Tenant.html

如果现在你想要使用这个第三方库作为自己的项目的基础类 你也会先创建类并 extends 某个 class

也就是说,如果在极为表面的 app 层工作的人,那么很有可能是几乎用不到类继承的! 他们不用,不代表别人不用
charlie21
344 天前
这是一个项目的继承关系树

https://afterlogic.com/aurora-files-api/tree.html

比如 Aurora\Modules\Core\Models\User 继承了 Aurora\System\Classes\Model ,而后者继承了 laravel 的 Illuminate\Database\Eloquent\Model 。也就说 这个项目基于 laravel 框架定制了自己的一套基础类,自定义的基础类是业务模型类的基类 。

换作是别的后端项目 大概是也类似的 ... 吧
locochen
344 天前
@SergeGao 后端用的不多
tyzandhr
344 天前
ocaml 式的 fp 远比 haskell 更受人欢迎。

事实上无论什么语言都能写纯函数。只要把项目分成可变的外部世界和不可变的数学世界两部分就算是函数式编程。
headwindx
343 天前
存在即合理,现实世界需要多元化,不要局限在一个坑里,探出头看看其他坑,找到最适合你的
xfun
343 天前
试试 Rust 的组合,各个部分只是资源

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1089413

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX