软件工程快速入门教程10- 函数式编程

作者 : 开心源码 本文共2462个字,预计阅读时间需要7分钟 发布时间: 2022-05-12 共215人阅读

什么是函数编程?

函数式编程(也称为FP Functional Programming)是一种通过创立纯函数来思考软件构造的方法。它避免了在面向对象编程中观察到的共享状态,可变数据的概念。

功能语言依赖于表达式和公告而不是执行语句。因而,与依赖于本地或者全局状态的其余过程不同,FP中的值输出仅取决于传递给函数的参数。

函数式编程的特点

  • 函数式编程方法侧重于结果,而不是过程
  • 重点是要计算的内容
  • 数据是不可变的
  • 函数式编程将问题分解为’函数
  • 它建立在数学函数的概念之上,它使用条件表达式和递归来执行计算
  • 它不支持迭代,如循环语句和条件语句,如If-Else

函数式编程的历史

  • 功能编程的基础是Lambda Calculus。它是在20世纪30年代开发的,用于功能应用,定义和递归
  • LISP是第一个函数式编程语言。麦卡锡于1960年设计了它
  • 在70年代后期,爱丁堡大学的研究人员定义了ML(元语言)
  • 在80年代早期,Hope语言为递归和等式推理增加了代数数据类型
  • 在2004年的功能语言创新’Scala’。

函数式编程语言

任何FP语言的目标都是模仿数学函数。但是,函数编程的基本计算过程是不同的。

这里是少量最着名的函数式编程语言:

  • Haskell
  • SML
  • Clojure
  • Scala
  • Erlang
  • Clean
  • F#
  • ML/OCaml Lisp / Scheme
  • XSLT
  • SQL
  • Mathematica

基本函数编程术语和概念

  • 不可变数据
    不可变数据意味着您应该能够轻松地创立数据结构,而不是修改已存在的数据结构。

  • 参考透明度
    功能程序应该像第一次那样执行操作。因而,您将理解在程序执行期间可能发生或者可能不发生的事情及其反作用。在FP术语中,它被称为参照透明度。

  • 板块化
    板块化设计提高了生产力。小板块可以快速编码并且具备更大的重复使用机会,这一定会导致程序的更快开发。除此之外,板块可以单独测试,这有助于您减少单元测试和调试所花费的时间。

  • 可维护性
    可维护性是一个简单的术语,这意味着FP编程更容易维护,由于您不必担心意外更改给定函数之外的任何内容。

First-class是一种定义,归因于对其使用没有限制的编程语言实体。因而,
First-class可以出现在程序的任何地方。

  • 闭包
    闭包是一个内部函数,即便在父函数执行后也可以访问父函数的变量。

  • 高阶函数
    高阶函数要么将其余函数作为参数,要么将它们作为结果返回。

高阶函数允许部分应用或者currying。此技术一次将一个函数应用于其参数,由于每个应用程序返回一个接受下一个参数的新函数。

  • 纯函数
    “纯函数”是一个函数,其输入被公告为输入,并且不应隐藏它们。
Function Pure(a,b){    return a+b;}
  • 非纯函数
    纯函数作用于它们的参数。假如不返回任何东西,它效率不高。而且,它为给定的参数提供相同的输出
int z;function notPure(){    z = z+10;}### 函数组合函数组合结合了两个或者更多功能来制作新功能。- 共享共享状态共享状态是OOP编程中的重要概念。它正在向对象增加属性。例如,假如HardDisk是对象,则可以将存储容量和磁盘大小增加为属性。反作用是在被调用函数之外发生的任何状态变化。任何FP编程语言的最大目标是通过将其与其余软件代码分离来最小化反作用。在FP编程中,从其余部分中消除反作用至关重要.### 参考资料- [python测试开发项目实战-目录](https://china-testing.github.io/practices.html)- [python工具书籍下载-持续升级](https://china-testing.github.io/python_books.html)- [python 3.7极速入门教程 - 目录](https://china-testing.github.io/python3_quick.html)-   探讨qq群630011153 144081101- [原文地址](https://china-testing.github.io/pptx.html)-   [本文涉及的python测试开发库]( china-testing/python-api-tesing) 谢谢点赞!-   [本文相关海量书籍下载]( china-testing/python-api-tesing/blob/master/books.md)### 函数式编程的好处- 允许您避免混淆代码中的问题和错误- 更容易测试和执行单元测试和调试FP代码。- 并行解决和并发- 热代码部署和容错- 使用更短的代码提供更好的板块化- 提高开发人员的生产力- 支持嵌套函数- 函数构造,如懒惰地图和列表等。允许有效使用Lambda Calculus功能编程的局限性函数式编程范式并不容易,因而初学者很难了解在编码期间很难维护尽可能多的对象需要大量的嘲弄和广泛的环境设置重用非常复杂,需要不断重构对象可能无法正确表示问题功能编程与面向对象编程功能编程OOPFP使用不可变数据。OOP使用Mutable数据。遵循基于公告式编程的模型。遵循命令式编程模型。重点是:“你在做什么。在计划中。”它的重点是“你如何进行编程”。支持并行编程。不支持并行编程。它的功能没有反作用。方法会产生很多反作用。使用带递归的函数调用和函数调用执行流控制。流控制过程使用循环和条件语句进行。陈述的执行顺序不是很重要。陈述的执行顺序很重要。支持“数据笼统”和“行为笼统”。仅支持“数据笼统”。结论功能编程或者FP是基于少量基本定义准则思考软件构建的一种方式功能编程概念侧重于结果,而不是过程任何FP语言的目标都是模仿数学函数少量最着名的函数式编程语言:1)Haskell 2)SM 3)Clojure 4)Scala 5)Erlang 6)清洁“纯函数”是一个函数,其输入被公告为输入,并且不应隐藏它们。产出也被宣布为产出。不可变数据意味着您应该能够轻松地创立数据结构,而不是修改已存在的数据结构允许您避免混淆代码中的问题和错误功能代码并不容易,因而初学者很难了解FP使用不可变数据,而OOP使用Mutable数据

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 软件工程快速入门教程10- 函数式编程

发表回复