百科问答小站 logo
百科问答小站 font logo



什么是 Functional Programming? 第1页

  

user avatar   jiyinyiyong 网友的相关建议: 
      

本来你就是不想折腾汇编的。发现 OOP 挺实用的拿来写写业务,就是代码真那个啰嗦了点。

看看 FP 有什么不一样的招...

然后你就想引入函数一等公民,高阶函数,借助闭包的能力做大量函数代码复用来减少工作量。就是逻辑复杂了点。

然后你就想引入 immutable data,这样逻辑可以尽情复杂,因为数据不可变,那么就不会有数据改变导致的这一类各种 bug 了。就是不可变数据这个性能费心一点。

然后你就想引入 memoization 对程序逻辑进行性能优化,而这一般需要是 pure function,这样才能用前次计算结果替代原来的表达式,才能在函数风格代码当中发挥出 memoization 的效力,同时进一步梳理程序结构,让 pure functions 呈现出数据流的层次。此时程序中的 effects 就需要被分离出来管理了。就是绕了点。

然后你就想用 FP 的思路重新审视内存和 effects,一方面熟悉内存操作以便从底层对数据的内部结构进行优化,定位性能瓶颈从内存相关的算法当中找到优化方案,一方面思考程序中无处不在的 effects 怎样能在跟计算分离的同时,按照业务需求跟各个 module 的生命周期准确对应上,并以此推广开对程序各个部分进行约束。就是涉及到的方面多了点。

然后你就想引入 algebraic data types 对程序进行指导和约束,也通过编译器基于类型的自动匹配,进一步压缩手工的逻辑代码,并依靠编译器保证代码的正确性。这下 monad 就被编译器凸显出来了,你发现自己得补一点学校也没教到的领域的数学知识。就是抽象了点。

然后你就发现 functional programming 标杆语言 haskell 被人吐槽类型系统不够强大,无法表达 λp 的类型... 你也发现 haskell 当中的函数实际上更多指的是组合子,那些柯理化函数往源头追踪过去是逻辑学当中的组合子... 你还发现一碰到逻辑学术语不是一般的多,别人不再给你推荐 GitHub 上什么什么项目了直接就是给你 paper....

然后你想去知乎看看有没有简单点的版本,点开个问题,什么是 functional programming 呢?




  

相关话题

  对于程序员是全栈好?还是专注一个领域好? 
  中文编程什么时候才能在中国崛起?英文编程是不是总有一个学习转换的过程使慢一拍? 
  学习机器学习应该看哪些书籍? 
  过度依赖框架有什么不好? 
  求BAT代码或C语言代码如何自动复制剪切板文本并分行保存一个txt? 
  C#下有什么办法可以实现毫秒级的计划任务? 
  如何评价「线程的本质就是一个正在运行的函数」? 
  C#里面将对象实例赋值为null会否加速GC释放资源? 
  为什么我写代码时总是手滑把main打成mian? 
  共轭函数的意义? 

前一个讨论
如何看待“6岁女童遭邻居13岁男孩侵害,处女膜裂口,男孩家人却说:初一正学人体构造,愿赔5千”的行为?
下一个讨论
血液循环理论可证伪吗?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利