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




  

相关话题

  人工智能趋势下,孩子学习编程有哪些意义,对未来发展有好处吗? 
  多核和分布式的编程环境促使产生了并发编程语言,那么它和传统的编程语言有什么本质的不同? 
  如何用一句话说明什么是面向对象思想? 
  为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习? 
  为什么国外大学计算机系本科生培养如此强调函数式编程? 
  能看得懂编程,但自己写却一点都写不出来怎么办? 
  如何快速地在每个函数入口处加入相同的语句? 
  win7笔记本,外接扩展显示器,如何在不缩小外接显示器像素的同时去除外接显示器的桌面背景黑边? 
  一般编程的时候,使用汇编能比使用高级语言(比如C,C++,java等)有更高的运行效率吗?高能高出多少呢? 
  作为一名程序员,最大的成就感来自哪里? 

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





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