你们认为函数式编程语言未来可期吗?

2020-01-09 13:22:12 +08:00
 FaiChou

这几天有三个关于语言类讨论的帖子:

看了讨论内容或多或少都有些提到了 FP 的概念, 貌似 FP 概念在大众已经流行起来了?

结合今年我们老板发的一篇为什么函数式编程没有流行?, 以及今年我们公司全员学习和使用 Clojure, 博客最后有一段:

未来是 FP 的,现在已经是大概率事件。

OO -> 混合 -> FP

FP 这个词注定会被用烂,这是另外一个故事了。

想听一下大家对 FP 语言的看法, 未来发展如何, 以及你们平时使用过的 FP 语言有哪些? 对比 OO 有哪些优势劣势? 你们有在业务项目中使用 FP 语言吗?

(这不是一个关于某种语言讨论的帖子, 不想引起战争)

8533 次点击
所在节点    程序员
47 条回复
zjsxwc
2020-01-09 16:53:58 +08:00
得屌丝者得天下,曲高和寡很常见
autoxbc
2020-01-09 16:55:20 +08:00
纯函数式不好,就像纯素食不好一样
FaiChou
2020-01-09 17:16:55 +08:00
@zjsxwc #21 是这个道理



@autoxbc #22 欢迎提供更多的观点来证明, 最好不要直接发表类似「 A 不行, 就像 A'一样不行」这种结论.
autoxbc
2020-01-09 17:27:02 +08:00
cigarzh
2020-01-09 17:33:23 +08:00
前端娱乐圈
几个技术并没那么好的 KOL 瞎吹一顿吹火了而已
FP 又不是啥新东西,甚至比 OOP 更老一点
没想过为啥现在是 OO 的天下么?
每天都有人喊 Java 死了,Java 不还是老大哥?
mazyi
2020-01-09 18:12:34 +08:00
局部改良
zhuangzhuang1988
2020-01-09 18:23:46 +08:00
let char c (s : string) = seq { if s.Length > 0 && s.[0] = c then yield s.Substring(1) }

let (=>) l r s = seq { for sl in l s do for sr in r sl -> sr }

let (<|>) l r s = seq { yield! l s; yield! r s }

let rec (<*>) e s = seq { yield s; yield! (e => (<*>) e) s }

let (<+>) e = e => (<*>) e

// example c(a|d)+r
let pattern = char 'c' => (<+>) (char 'a' <|> char 'd') => char 'r'

再学点鬼画符.
lietoumai
2020-01-09 18:31:13 +08:00
玩 OCamel 的人应该不多吧,但是 JaneStreet 可挣钱了😄
TypeError
2020-01-09 18:47:38 +08:00
当然是混用最爽了,Java 8 Stream 不比一堆重复代码方便
xcstream
2020-01-09 19:01:37 +08:00
要等到 php 灭亡的那一天
wolfan
2020-01-09 19:14:04 +08:00
量子时代,函数式是不是会变的超牛逼呐?
araaaa
2020-01-09 19:23:20 +08:00
我现在写 java 同时在用函数式 反应式 面向对象混编🐶
swsh007
2020-01-09 19:25:01 +08:00
当年是这么吹 c++,opp,cmm5,java
现在大家都活着
Revenant
2020-01-09 20:03:47 +08:00
erlang 里的变量不可变真的难理解,还有"Let it Crash"的概念,我学了一阵之后弃坑了
bnm965321
2020-01-10 09:06:26 +08:00
纯函数式不会成为主流,因为路径依赖,而不是它不够好
lostpupil
2020-01-10 09:13:24 +08:00
@ma836323493 函数式的特点难道不是 data as code 吗。
lostpupil
2020-01-10 09:14:38 +08:00
Clojure 是个好语言,既有 JVM 平台优势,又有 Lisp 的优雅。
但是其实入门门槛高,并不适合所有人的。
小众语言不流行也是好事啊,物以稀为贵。
lostpupil
2020-01-10 09:21:32 +08:00
@luozic 缺点前两条并不认同,首先
> 1.纯函数式难以利用之前几十年大部分积累的面向对象的软件工程实践。

积累下来的实践并不是意味着最优解,很多也都是糟粕,就好比面向对象一半是显而易见的,一半显而易见是错的。

2. 纯函数式比较适合数据处理,不适合复杂业务建模。

> 模型本身不就是一个形式化的描述,函数式语言不是有更强的 DSL 吗。
Hoshinokozo
2020-01-10 10:46:44 +08:00
这个时候,我要搬出垠神的博客了 http://www.yinwang.org/blog-cn/2015/04/03/paradigms
fpure
2020-01-10 11:12:21 +08:00

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

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

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

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

© 2021 V2EX