函数式编程(留着后用)

http://zty.5d6d.com/thread-357-1-1.html 

引用摘自 晚上 跟大师聊天.  拍脑袋想出来的. .大师觉得只有结果没意思..

    说说我自己的理解. 关于未来的web领域. 开发上无疑是往更"敏捷"方向发展. 快速开发成为一个标配..笨重的Java正在被web领域逐渐抛弃. 而web领域在做大了之后都会面临一个问题.服务器支撑不了这么多pv .这么多人跑上来服务器就要挂掉. twitter面临到了.Javaeye也面临到了.越来越多的公司都面临这个问题..所以肯定要想办法去解决. Twitter是用scala . 一些公司选择了Erlang .为什么 .. 其实FP功不可没..

    命令式编程的祖宗是图灵机. 图灵机是什么. 就想象成一个机器. 然后一个无限长的纸帯穿过机器.就行了. 图灵机所依赖的状态的判定以其达到正确的执行结果.而函数试语言的鼻祖lambda演算并不是一个具体的有一个实物可以想象的..但是后来 邱奇跟图灵还是发现其实他们做的是一个东西..这两个东西实际上是等价的..能力上等价证明了函数式编程能做出来的命令式语言也能做出来. 因为他们等价. 但是 . 实际上他们在哲学上是有差别的..

    未来是 面向多核的. 面向并发的. pure的函数式语言天生的没有"副作用"..导致他在开发的时候没有命令式语言大量的状态保存.在函数式编程的世界里. 只要我写定一个function .那这个function不管我传多少次相同的值进去.我所得到结果都是一样的.换句话说. 命令式语言实际上依靠的就是状态的变更来让程序达到想要的结果...本来纯的函数式语言里面根本就没有变量这一个概念..函数式语言的起源是lambda演算. lambda演算是什么. 就是 一个函数定义式跟一条变换规则. 所以最早的那批语言里面 像scheme 连for循环都没有.因为用递归就可以实现. 这也从侧面说明了为什么尾递归优化对于函数式语言至关重要.对于状态的变更其实函数式语言也是支持的..在不纯的函数式语言其实也可以 set!. 而纯的里面要想达到状态的变更. 一般有两个方法. 一个是通过递归(对还是递归).将返回值再作为参数传递. 而另一种就是利用Monad. 用T1大大的解释.要理解monad. 先把近世代数的群论 跟 范畴论 搞清楚. 对我这个数学专业的孩子来说. T1大大的文章也只是勉强读懂.. 暂时将 monad 归为引入副作用. 和保持函数式语言的纯洁性. 其他暂且不表.当然. 函数式编程也还是有缺点的. 那就是学习门槛有点高.以及程序本身可读性的质疑(但实际上我觉得这个不是问题.) 但带来的是什么?并发的良好支持..(完全可以甩开命令式语言几条街..命令式语言在并发上那么困难.究其根本还是"副作用"的关系.程序之间为了state. 不得不增加锁机制..来保证状态的变更顺序等等..).程序鲁棒性的提升. 伸缩性的良好提升.

   Erlang(ps: 跟我念 /air-lang/)采用的并发模型. 轻量级进程 各进程独享自己的内存空间. 通过消息传递的方式的 这种模型. 再加上Erlang本身成熟的OTP库.太合适了大型互联网公司了.. 你用命令式语言在里面搞并发.lock过来lock过去的.一会就把自己lock住了..想死的心都有了. ..也为难那么多大佬们写了那么多命令式语言多线程开发的书..  而scala(ps: 跟我念 /sgale/  如果你跟上面的Erlang都念错了的话. 那恭喜你. 跟我一个水平了.)由于是oo+fp的..采用了actor模型后在twitter上大放异彩. 说实话.我现在不肯定 oo + fp的方式会怎么样. 但是如果不做规范的话. 将来可能会在开发上有麻烦.  而ruby .说白了. 我暂时把他当作是Java的一种"敏捷"替代. 他提高了我们效率.让我们快乐编程. 但在思想上. 并没有跳出编程所谓的固定思维.

   最近. 越来越多的发现. 冒出来的命令式语言其实都参杂了很多的fp的东西. 从简单的闭包.到lambda表达式. 未来是混合编程的时代.是多核.并发的时代. 到底是糅合oo和fp的类scala的时代 . 还是oo 与 fp 继续分开的混合编程时代. 都值得我们期待. 无疑. fp会在未来占据越来越重要的位置. .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值