函数式编程functional programming的特点
以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语言。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
通篇不提 Haskell 一个字,打回去重写。
pure fp才是no side effect
scala不是pure的