函数式编程
2023-02-18 15:31:00 时间
本章我们介绍Java的函数式编程。
我们先看看什么是函数。函数是一种最基本的任务,一个大型程序就是一个顶层函数调用若干底层函数,这些被调用的函数又可以调用其他函数,即大任务被一层层拆解并执行。所以函数就是面向过程的程序设计的基本单元。
Java不支持单独定义函数,但可以把静态方法视为独立的函数,把实例方法视为自带this
参数的函数。
而函数式编程(请注意多了一个“式”字)——Functional Programming,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算。
我们首先要搞明白计算机(Computer)和计算(Compute)的概念。
在计算机的层次上,CPU执行的是加减乘除的指令代码,以及各种条件判断和跳转指令,所以,汇编语言是最贴近计算机的语言。
而计算则指数学意义上的计算,越是抽象的计算,离计算机硬件越远。
对应到编程语言,就是越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Lisp语言。
函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
函数式编程最早是数学家阿隆佐·邱奇研究的一套函数变换逻辑,又称Lambda Calculus(λ-Calculus),所以也经常把函数式编程称为Lambda计算。
Java平台从Java 8开始,支持函数式编程。
相关文章
- Java使用echarts记录
- uniapp打开外部链接方式
- 领券网添加领取外卖优惠券修改-【凯哥自己的领取各大电商优惠券】
- Echarts漏斗图形的,怎么保障当数据是0的时候,漏斗图形一直存在。
- Echarts图表的柱状图和漏洞图形怎么将数据值显示出来
- 如何让AI具有通用能力?新研究:让它睡觉
- 解决org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException
- Stable Diffusion 2.0来了!网友:太快了,V1还没整透彻,V2就来了
- 【图文教程】怎么使用postman测试文件上传
- 点外卖等琐事到底能不能靠AI?我们找5款语音助手聊了500句话
- 【若依系统-前后端不分离版本的】怎么在列表中直接修改某个字段的值?
- 微众银行揭晓微众学者计划,支持科研实干者研以致用
- Hubbell EDI 855 采购订单确认报文详解
- 若依系统:怎么设置表头字段默认隐藏
- yum命令无法使用问题的解决
- 图算法在风控场景的应用
- 做中国人自己的三维CAD,国产工业软件正打破恶性循环
- 从NeurIPS论文来看,中美学者很少互相引用
- NeurIPS 2022 | 视觉长尾学习模型为何无法较好地落地?
- NineData:强大的ClickHouse图形客户端工具