冒号课堂§2.4:并发范式 - 编程入门网
专门为并发式而设计的语言大多仅限于学术研究而非商业应用,Erlang语言[2]是少数的例外。顺带提一下,前面提到的声明式语言具有无副作用的特性,尤其适合于并发式编程。”
冒号课堂§2.4:并发范式(3)时间:2011-06-25 BlogJava xyz98问号提了一个听似奇怪的问题:“并发式与前面提到的对象式有无共通之处?” “并发式与对象式虽是互相正交的两种范式,倒真有些相通呢。”冒号回答,“它们均与三大核心范式正交,并且越来越广泛地向它们渗透着;均为传统编程的一种推广——并发式进程的个数为一时即为传统的串行式编程,对象的方法个数为为零即为传统的数据类型;均将整个程序系统分解为若干独立的子系统,不同的是一个以任务为单位,一个以对象为单位;子系统之间均能交流与合作,不同的是一个以竞争为主题,一个以服务为主题。如果将程序系统视作公司,那么并发式系统是产品型公司,每个进程是一名工人,其职责是执行单一任务;对象式系统是服务型公司,每个对象是一名服务员,其职责是提供系列服务。由此可见,一名优秀的程序设计师也应该是一名优秀的管理者。” 句号提出:“迄今为止我们谈到了五种范式,能否对它们简单概括一下?” “你提问的时机把握得不错嘛。”冒号开始如数家珍,“为便于记忆,我们不妨用‘一二三四五’来概括编程范式之最:最传统的一个是命令式;最基本的两个是命令式和声明式;最核心的三个是命令式、函数式和逻辑式;最主要的四个是命令式、函数式、逻辑式和对象式;最重要的五个是命令式、函数式、逻辑式、对象式和并发式。最后,我们来对比一下五大范式。” 少顷,黑板上出现几行排比句—— 过程式:以过程为模块的君主体系,模块之间互相授命与听命 函数式:以函数为模块的数学体系,模块之间互相替换与合成 逻辑式:以断言为模块的逻辑体系,模块之间互相归纳与演绎 对象式:以对象为模块的民主体系,模块之间互相交流与服务 并发式:以进程为模块的生产体系,模块之间互相竞争与合作 “说回并发式编程,它要求我们摆脱以往习惯的按部就班的思维方式,对编程提出了更高的挑战。程序世界与现实世界一样,呈百舸争流、千帆竞发之势,不进则退啊!”言讫,冒号宣布,“第二堂课到此为止,欢迎下次光临。” ,插语 [1] 并发式编程中以进程(process)或线程(thread)为基本单位。尽管它们有很大的差异,但为简明起见,这里不加区分地交替使用两个术语。 [2] Erlang是由爱立信开发的一种通用编程语言,支持函数式和并发式。 。总结 并发式编程以进程为导向、以任务为中心、以资源共享与竞争为主线。 并发式编程有助于提高运行效率、充分利用资源、提高软件的响应能力、改善用户体验,同时以进程为单位将系统模块化,更加真实地模拟现实世界。 合理的并发式设计应该做到:软件易于重用、维护和测试;有效地利用资源,优化程序性能;保障进程安全和活性;减少性能损失和复杂度。 对象式和并发式在传统编程的基础上,分别从不同的方向进行拓展:对象式在数据类型上进行推广——允许运算作为数据类型的成员;并发式在执行顺序上进行推广——允许不同运算的执行在时间上交替或者重合。它们与三大核心范式一道,组成了最重要的五大编程范式。 冒号课堂§2.4:并发范式(4)时间:2011-06-25 BlogJava xyz98五大重要范式对比:
|
||||||||||||||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |