欢迎大家来到IT世界,在知识的湖畔探索吧!
被公认接受的对于具体的语言来说,指一个“一等函数”(first class function)。不过函数这个概念本身就比较混乱。
所以举例:
比如,C++的函数就不是一等的,因为对象类型的值能被传参能被返回,函数类型的值就不行(会退化为函数指针)。简单来说C++的内建的“函数”是阉割的。这类函数式语言一开始以Lisp为代表,基本的理论基础是λ演算。
然后是关于表达式和语句,一开始就是Fortran的语法。其实这种事没有必要的,因为脱离更基本的表达式语法,也没办法表示计算。Lisp就没有在语法上特意区分出语句。
函数式语言的语法设计习惯上不使用语句,因为具有一等函数的表达式的表达能力通常已经足够强。C这样的语言的“语句”除了表达确定的求值顺序外,也就是一种无谓地指令式风格的习惯罢了。
关于存储可变状态。修改状态(典型地,赋值)的程序是指令式范式的。函数式的范式通常避免无谓地修改状态。极端的情况是语义规则不提供修改状态的接口,如Haskell以及C++的模板元编程,这样的风格称为所谓的“纯函数式”。
我们如何学习函数式编程?
若想从思想入手,并且希望学的更深入,建议从:SICP(《计算机程序的构造和解释》)入手,Scheme语言是思想的锤炼。
如果用户是java程序员,建议看看clojure,这是个极具生产力的语言工具,它运行于java平台上的lisp,twitter的storm就是用它写的。clojure现在已经是黑客领域最耀眼的明星了。最重要的是clojure已经出版了很多本中文教材,可以入手学习了。
顺带加上SICP可以加快学习进度。以项目为中心可以选择《Clojure经典实例 功能性编程全面指南》、没有基础的可以选择《Living Clojure》(中文版)、老程序员可以参考《Clojure编程乐趣》中文版 。
若不为作项目,只是为了提升个人的能力或者编程思想,可以选择haskell语言,这个资料也比较多,无论书籍还是视频、文档等等 。简单说,”函数式编程”是一种”编程范式”(programming paradigm),也就是如何编写程序的方法论。
以上便是小编对“什么是函数式编程?我们怎么学习?”的大致介绍,希望对您有所帮助!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/76787.html