当前位置: 首页 > news >正文

编程范式—命令式编程与函数式编程

编程范式

编程范式就是编程的基本风格

 

编程语言根据编程范式可以分为命令式编程语言函数式编程语言

函数式编程和命令式编程同样具有非常久远的历史

 

命令式编程语言是完全根植于冯诺依曼体系结构的

 

 

为什么沉寂了多年的函数式编程,在近几年突然升温了呢?

        因为多核CPU的全面普及,使得现在函数式编程迅速崛起

        传统的命令式编程不能充分利用多核CPU的并发能力。因为在命令式编程中,很多变量都是共享的。也就是说,多个线程会去访问同一个对象,而共享变量多线程去访问的话,必须要保证数据的一致性——加锁机制。

        但是一旦采用加锁机制,会导致并发度降低。因为某个线程把变量锁住了,那么其他线程就只能等它把锁释放掉。

 

       函数式编程的最大特点是很多变量是不可修改的。一旦设定它的值,后面就不允许变更。这样就不存在什么并发控制和枷锁的问题,这样多线程之间就可以并行去处理。

   

相关文章:

  • Scala语言(二)
  • Scala语言(三)
  • Python——virtualenv/virtualenvwrapper
  • Python多进程(multiprocessing)(mp)(一) —— 进程的创建 join()方法
  • Python多进程(multiprocessing)(mp)(二) —— 创建多进程 继承process类 进程池(Pool)
  • Python多进程(multiprocessing)(mp)(三) —— 进程间通信 Queue队列(Manager)
  • Python多线程(二): 线程同步 生产者消费者模式 ThreadLocal线程局部变量
  • 爬虫url去重策略
  • 爬虫中的深搜和广搜
  • Objective-C
  • MyOS(四):让内核突破512字节的限制
  • Go语言实现并发(协程)
  • 汇编语言相关知识
  • 面向对象的意义
  • 文本大数据挖掘项目(Go语言)
  • Android优雅地处理按钮重复点击
  • HTTP--网络协议分层,http历史(二)
  • Python - 闭包Closure
  • windows下mongoDB的环境配置
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 老板让我十分钟上手nx-admin
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 目录与文件属性:编写ls
  • 前端面试题总结
  • 译有关态射的一切
  • 积累各种好的链接
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​TypeScript都不会用,也敢说会前端?
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​人工智能书单(数学基础篇)
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • (2)(2.10) LTM telemetry
  • (vue)页面文件上传获取:action地址
  • (剑指Offer)面试题34:丑数
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转)程序员疫苗:代码注入
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转)树状数组
  • ./configure,make,make install的作用(转)
  • .Net mvc总结
  • .net 后台导出excel ,word
  • .Net 路由处理厉害了
  • .NET/C# 的字符串暂存池
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .net项目IIS、VS 附加进程调试
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .py文件应该怎样打开?
  • /*在DataTable中更新、删除数据*/
  • @Repository 注解
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @Resource和@Autowired的区别
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林