您的位置:网站首页 > Java软件 > 正文

函数式编程如何能在常规软件开发中占一席之地

类别:Java软件 日期:2018-7-25 1:21:56 人气: 来源:

  除非你生活中与世的深山老林里,否则你应该知道,在众多的所谓编程高手(alpha geeks)中,函数式编程是十分盛行的。也许你已经使用了某种函数式编程语言。如果你是在使用很传统的编程语言,例如Java或C#,你应该知道了,这些语言很快就将引入一些函数式编程特征。就在这美丽的新世界即将来到之际,就在我们摩拳擦掌打算大干一番之前,我想,现在应该是我们暂停一下、一下函数式编程在我们的日常应用开发中是否合适的好时机。

  什么是函数式编程?简单的回答:一切都是数学函数。 函数式编程语言里也可以有对象,但通常这些对象都是恒定不变的——要么是函数参数,要什么是函数返回值。函数式编程语言里没有for/next循环,因为 这些逻辑意味着有状态的改变。相替代的是,这种循环逻辑在函数式编程语言里是通过递归、把函数当成参数传递的方式实现的。

  者说函数式编程能开发出更高效的软件,而反对者说反之亦然。我感觉双方的观点都有问题。我可以轻松的证明函数式编程能使你更难写出针对编译器优化的代码,或者相较于传统语言的代码,JIT编译器对于函数式代码会编译出更慢的程序。命令式编程语言(imperative programming languages)语法跟底层的计算机硬件指令间有着很相似的对应关系,但函数式编程语言却没有这种特征。结果就是,编译器处理函数式编程语言时更费力。

  对于为什么要使用函数式编程,这有一个更好的论据,现代的应用程序都会牵涉到多核计算机上的并行运算功能,程序状态就成了一个问题。所有的命令式语 言,包括面向对象语言,在涉及多线程时,都会遇到共享对象的状态修改问题。这就是死锁、堆栈、低级处理器缓存命中率低等问题的根源。如果对象没有状 态,这些问题就不存在了。

  在很多地方使用函数式编程或函数式编程语言都常适合的,甚至是最好的选择。对于纯函数计算,函数式编程明显的比命令式编程更合适。但对于商业软件或其它普通应用软件,你不能不说这正好要过来。就像Martin Fowler著名的阐述,“傻子都能写出计算机可读懂的代码。优秀的程序员写出的是人能读懂的代码。”而函数式编程写出的代码就是让人一眼望去不可读。

  一个不怎么样的程序员一般都能从一段命令式的代码中很快的看出其基本的功用——甚至这是一种他从未见过的语言。然而虽然你也能从一段函数式代码里分 析出它的功用,但你绝对不可能简单几眼就能看出来。不像命令式代码,函数式代码并不体现出简单的语言结构。它展现的都是数学结构。

  我们的编程经历了从纸带打孔到汇编到宏汇编到C语言(高级宏汇编)再到抽象出了很多老实机器上复制运算的高等编程语言。每一步都使我们越来越接近《星际迷航4》里的场景:遇到麻烦的Scott对他的鼠标说出指令(“Hello computer“)。数十年的进步使得编程语言越来越容易被人类阅读和理解,函数式编程的语法是在把时钟指针往后拨。

  函数式编程能解决并行运算的状态问题,但付出的代价是失去人类可读性。函数式编程也许完全可以用于任何开发,它甚至可以通过定义面向领域(domain-specific)的编程语言来拉近人类语言和计算机语言之间的距离。但它糟糕的语法使得它极不适合常规目的的编程开发。

  本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人贵妇也疯狂劳动共创开源社区。

  我们的编程经历了从纸带打孔到汇编到宏汇编到C语言(高级宏汇编)再到抽象出了很多老实机器上复制运算的高等编程语言。每一步都使我们越来越接近《星际迷航4》里的场景:遇到麻烦的Scott对他的鼠标说出指令(“Hello computer“)。数十年的进步使得编程语言越来越容易被人类阅读和理解,函数式编程的语法是在把时钟指针往后拨。

  在很多地方使用函数式编程或函数式编程语言都常适合的,甚至是最好的选择。对于纯函数计算,函数式编程明显的比命令式编程更合适。但对于商业软件或其它普通应用软件,你不能不说这正好要过来。就像Martin Fowler著名的阐述,“傻子都能写出计算机可读懂的代码。优秀的程序员写出的是人能读懂的代码。”而函数式编程写出的代码就是让人一眼望去不可读

  国内炒FP大概是09年那会,现在好像已经不怎么提起了。另外,FP的确值得学习,即使只是工作之余看看,相信也会对现在工作中使用的语言有所帮助的。Java8- 除外:)

  看了这篇文章才觉得人真的要有自己的判断。我觉得FP还是好。不过我也没想着和其他人合作。FP是给高手准备的。

  相对于函数式编程而言的就是命令式编程,就是现在最流行的编程方式。而且现在,语言与语言之间的互相模仿、各种抄袭。导致的结果就是没有纯函数式的语言,文中举例的2个语言在很多方面是真的针对纯函数的,但是别的不说了,就说获取一个当前时间,就已经要完全了,纯函数式的编程方式,更不用说IO、web等等的开发了,虽然haskell有支持的方式,但给我的感觉那不是纯函数式的,跟自己鼓吹的纯函数式语言的理论相。而且,个人感觉这个世界上也 不存在纯函数的语言。

  总的来说函数式编程语言可能有是点难懂,但是我认为你学久了,还是比较容易理解的,毕竟命令行式编程已经在人们心里先入为主了,而去接受另一种编程思想,可能很难去接受它,因为它是一个怪胎.

  本文由 325游戏(m.325games.com)整理发布

关键词:软件怎么编程
0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved