编程范式:命令式编程(Imperative)、声明式编程(Declarative),函数式编程(fp)

2023-11-06 02:59

本文主要是介绍编程范式:命令式编程(Imperative)、声明式编程(Declarative),函数式编程(fp),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考比较好的博客:https://www.cnblogs.com/sirkevin/p/8283110.html

下面是我自己的总结

命令式编程

命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。对应英文即为How,如何实现(Imperative is How to do)

eg1. 命令式事务,使用者自行实现

@Component
public class Utils {@Autowiredprivate DataSourceTransactionManager dataSourceTransactionManager;// 开启事务public TransactionStatus openTx() {return dataSourceTransactionManager.getTransaction(new DefaultTransactionAttribute());}// 提交事务public void commitTx(TransactionStatus ts) {dataSourceTransactionManager.commit(ts);}// 回滚事务public void rollbackTx(TransactionStatus ts) {dataSourceTransactionManager.rollback(ts);}
}@Service
public class RegisterServiceImpl implements RegisterService {@Autowiredprivate Utils utils;@Overridepublic void programming(String name,String age,String studentId) {TransactionStatus ts = null;try {// 开启事务ts = utils.openTx();registerMapper.programming( name, age, studentId);int a=1/0;registerMapper.programming( name, age, studentId);if (ts != null) {// 提交事务utils.commitTx(ts);}} catch (Exception e) {if (ts != null) {// 回滚事务utils.rollbackTx(ts);}}}
}

eg2.The following example shows how to use Spring Retry in its imperative style ,此例子帮助理解(这里针对的实现重试功能)

RetryTemplate template = RetryTemplate.builder().maxAttempts(3).fixedBackoff(1000).retryOn(RemoteAccessException.class).build();template.execute(ctx -> {// ... do something
});

声明式编程

声明式编程是以数据结构的形式来表达程序执行的逻辑。它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做。对应英文即为What,要做什么东西(Declarative is What to do)

eg1. 在Spring框架中,声明式编程只能体现的即为注解式编程,如事务@Transactional注解,即表示此方法具有什么功能,使用者不关心实现

@Transactional
public void executeSkill() { 
... 
}

eg2.The following example shows how to use Spring Retry in its declarative style,此例子帮助理解(这里针对的实现重试功能)

@Configuration
@EnableRetry
public class Application {@Beanpublic Service service() {return new Service();}}@Service
class Service {@Retryable(RemoteAccessException.class)public void service() {// ... do something}@Recoverpublic void recover(RemoteAccessException e) {// ... panic}
}

区别比较,,,引出函数式编程

在这里插入图片描述
备注:
面向对象编程(object oriented programming)(OOP)
函数式编程(functional programming)(FP)


面向对象编程对象之间是如何关联起来的呢?共用数据状态,即State,数据状态相关依赖(面向过程编程POP是代码相互依赖)

而函数式编程是不会出现数据状态相互依赖,每个函数功能都是独立的,那么也就是说不存在数据共享的问题,既然不存在数据共享,那么就衍生出了函数式编程

函数式编程

一大特点是不修改状态,那么它就天然的支持多线程编程,且此种编程方式绝对的,即函数式编程为并发编程的一种安全处理手段。

讨论到此即可

这篇关于编程范式:命令式编程(Imperative)、声明式编程(Declarative),函数式编程(fp)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354094

相关文章

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

MySQL中REPLACE函数与语句举例详解

《MySQL中REPLACE函数与语句举例详解》在MySQL中REPLACE函数是一个用于处理字符串的强大工具,它的主要功能是替换字符串中的某些子字符串,:本文主要介绍MySQL中REPLACE函... 目录一、REPLACE()函数语法:参数说明:功能说明:示例:二、REPLACE INTO语句语法:参数

python中update()函数的用法和一些例子

《python中update()函数的用法和一些例子》update()方法是字典对象的方法,用于将一个字典中的键值对更新到另一个字典中,:本文主要介绍python中update()函数的用法和一些... 目录前言用法注意事项示例示例 1: 使用另一个字典来更新示例 2: 使用可迭代对象来更新示例 3: 使用

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

Python lambda函数(匿名函数)、参数类型与递归全解析

《Pythonlambda函数(匿名函数)、参数类型与递归全解析》本文详解Python中lambda匿名函数、灵活参数类型和递归函数三大进阶特性,分别介绍其定义、应用场景及注意事项,助力编写简洁高效... 目录一、lambda 匿名函数:简洁的单行函数1. lambda 的定义与基本用法2. lambda

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

MySQL中DATE_FORMAT时间函数的使用小结

《MySQL中DATE_FORMAT时间函数的使用小结》本文主要介绍了MySQL中DATE_FORMAT时间函数的使用小结,用于格式化日期/时间字段,可提取年月、统计月份数据、精确到天,对大家的学习或... 目录前言DATE_FORMAT时间函数总结前言mysql可以使用DATE_FORMAT获取日期字段