百科问答小站 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 呢?




  

相关话题

  TDD(测试驱动开发)是否已死? 
  解 ACM 题的能力真的代表编程能力吗? 
  只靠读代码 debug 不会单步调试能当编程高手吗? 
  函数式编程的核心价值是什么? 
  如何看待JetBrains 遭美国调查? 
  如何评价 Clean Code 作者对 Swift 与 Kotlin 的看法? 
  如何看待 Dark lang? 
  做游戏不仅要编程能力还要计算机其它方面的知识吗? 
  在公司里开发软件 和学校有什么不同? 
  电脑点击“关机”后,电脑如何实现自动切断电源? 

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





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