冒号课堂节选:并发范式
2009-12-04 18:17
309 查看
并发范式
真正的并发式编程,绝不只是调用线程
API
或使用
synchronized
、
lock
之类的关键字那么简单。从宏观的架构设计,到微观的数据结构、流程控制乃至算法,相比通常的串行式编程都可能发生变化。随着硬件性能和用户需求的双重提升,并发式编程已成为不可回避的主题。毫不夸张地说,并发式编程是继
OOP
之后又一场思想和技术上的革命。只是相比
OOP
,尽管年龄相仿,但语言上不够支持,标准上不够统一,理论上不够完善,因而这场革命更具破坏性和建设性。
并发式编程以进程为导向(
Process-Oriented
),以资源共享与竞争为主线
。这意味着程序设计将围绕进程的划分与调度、进程之间的通讯与同步等等来展开。合理的进程设计应该能做到:
软件易于重用、维护、测试
公平有效地利用资源,优化程序性能如增大吞吐量、减少响应时间、提高效率等
保障进程安全,防止竞态条件(
Race Condition
)
保持进程活性,避免死锁、饥饿、活锁、资源枯竭等
减少锁开销、上下文切换等带来的性能损失
妥善处理多进程在算法、调试等方面带来的复杂性
并发式与前面提到的对象式有无共通之处?
“并发式与对象式虽是互相正交的两种范式,但有些相通呢。它们均与三大基本范式正交,并且越来越广泛地向它们渗透着;均为传统编程的一种推广——并发式进程的个数为一时即为传统的串行式编程,对象的方法个数为为零即为传统的数据结构;均将整个程序系统分解为若干独立的子系统,不同的是一个以任务为单位,一个以对象为单位;子系统之间均能交流与合作,不同的是一个以竞争为主题,一个以服务为主题。
如果将程序系统视作公司,那么并发式系统是产品型公司,每个进程是一名工人,其职责是执行单一任务;对象式系统是服务型公司,每个对象是一名服务员,其职责是提供系列服务。由此可见,一名优秀的程序设计师也应该是一名优秀的管理者。”
过程式:以过程为模块的君主体系,模块之间互相授命与听命
函数式:以函数为模块的数学体系,模块之间互相替换与合成
逻辑式:以断言为模块的逻辑体系,模块之间互相归纳与演绎
对象式:以对象为模块的民主体系,模块之间互相交流与服务
并发式:以进程为模块的生产体系,模块之间互相竞争与合作
真正的并发式编程,绝不只是调用线程
API
或使用
synchronized
、
lock
之类的关键字那么简单。从宏观的架构设计,到微观的数据结构、流程控制乃至算法,相比通常的串行式编程都可能发生变化。随着硬件性能和用户需求的双重提升,并发式编程已成为不可回避的主题。毫不夸张地说,并发式编程是继
OOP
之后又一场思想和技术上的革命。只是相比
OOP
,尽管年龄相仿,但语言上不够支持,标准上不够统一,理论上不够完善,因而这场革命更具破坏性和建设性。
并发式编程以进程为导向(
Process-Oriented
),以资源共享与竞争为主线
。这意味着程序设计将围绕进程的划分与调度、进程之间的通讯与同步等等来展开。合理的进程设计应该能做到:
软件易于重用、维护、测试
公平有效地利用资源,优化程序性能如增大吞吐量、减少响应时间、提高效率等
保障进程安全,防止竞态条件(
Race Condition
)
保持进程活性,避免死锁、饥饿、活锁、资源枯竭等
减少锁开销、上下文切换等带来的性能损失
妥善处理多进程在算法、调试等方面带来的复杂性
并发式与前面提到的对象式有无共通之处?
“并发式与对象式虽是互相正交的两种范式,但有些相通呢。它们均与三大基本范式正交,并且越来越广泛地向它们渗透着;均为传统编程的一种推广——并发式进程的个数为一时即为传统的串行式编程,对象的方法个数为为零即为传统的数据结构;均将整个程序系统分解为若干独立的子系统,不同的是一个以任务为单位,一个以对象为单位;子系统之间均能交流与合作,不同的是一个以竞争为主题,一个以服务为主题。
如果将程序系统视作公司,那么并发式系统是产品型公司,每个进程是一名工人,其职责是执行单一任务;对象式系统是服务型公司,每个对象是一名服务员,其职责是提供系列服务。由此可见,一名优秀的程序设计师也应该是一名优秀的管理者。”
过程式:以过程为模块的君主体系,模块之间互相授命与听命
函数式:以函数为模块的数学体系,模块之间互相替换与合成
逻辑式:以断言为模块的逻辑体系,模块之间互相归纳与演绎
对象式:以对象为模块的民主体系,模块之间互相交流与服务
并发式:以进程为模块的生产体系,模块之间互相竞争与合作
相关文章推荐
- 冒号课堂节选:对象范式
- 冒号课堂节选:泛型范式
- 冒号课堂§2.4:并发范式
- 冒号课堂节选:编程范式
- 常用范式---事件驱动 冒号课堂
- 冒号课堂§3.1:泛型范式
- 小课堂week17 编程范式巡礼第二季 并发那些事
- 冒号课堂节选:元编程范式
- 冒号和他的学生们(连载8)——并发范式
- 冒号课堂§4.2:逻辑范式
- 冒号课堂§3.2:超级范式
- 冒号课堂§4.3:汇总范式
- 冒号课堂§4.4:情景范式
- 冒号课堂§3.3:切面范式
- 冒号课堂§2.2:声明范式
- 冒号课堂§1.4:初识范式
- 好书记录 冒号课堂
- 小课堂week18 编程范式巡礼第三季 谈谈依赖反转
- 冒号和他的学生们(连载12)——情景范式
- 冒号课堂§1.1:开班发言