什么是函数式编程?我们怎么学习?

被公认接受的对于具体的语言来说,指一个“一等函数”(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://kuaibao.qq.com/s/20190327A06NY100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券