免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4660 | 回复: 2
打印 上一主题 下一主题

函数式编程functional programming的特点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-10 11:59 |只看该作者 |倒序浏览
以Erlang为代表的面向功能语言functional programming(FP)越来越热门,虽然本身有比较难学等缺点,
Where functional programming fits in一文总结总结了FP适合哪些场合?

Java平台的Scala,.NET的F#都是FP语言,而Ruby因为包含一些FP特点受到欢迎。
FP特点:
1.FP代码没有边界影响“side effects.”(目的明确,是一就是一,不会因为捣蛋鬼调用导致其他功能实现)
2.没有literal值, 简单的功能只是返回相同值。
3.许多FP语言有“lazy evaluation,”(类似懒加载机制),功能并不真正运行,直到他们被调用,比如你定义x = y +5,只有当x被使用时,才真正计算y+5,这个带来更好的性能boon和curse (有时不确定值),(注:这个和我们之前讨论的异步Domain Events好像类似,模型的值只有即时使用才访问数据库获得,我们也是为了获得更好地性能,见Domain Events异步应用)

FP语言的这些特性代表了思想的根本转变,但是使用FP语言,必须考虑是不是存在过度工程或overthinking的问题,因为这代码的其他维护者需要学习一个新的语言。

作者认为FP语言使用在算法应用领域比较好,在Xbox Live排名系统中,用F#替代C#重写,只用了10% 的代码量,节约了近90%的代码。

如果你使用现代主流的胶水库library glue code之类应用,如果你的代码是由一个个类组成的结构,而算法只是被融合在这些类之中,就没有必要使用FP语言。

论坛徽章:
0
2 [报告]
发表于 2010-11-16 23:38 |只看该作者
pure fp才是no side effect
scala不是pure的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2010-12-03 19:02 |只看该作者
通篇不提 Haskell 一个字,打回去重写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP