冒号课堂§4.3:汇总范式

第四课 重温范式(3)

4.3汇总范式——一张五味俱全的大烙饼

形者神之质,神者形之用                       ——《范缜·神灭论》

关键词:   编程范式,设计模式

摘要:  总结编程范式

?提问

l    编程范式与设计模式有什么区别?

l    编程范式的核心价值是什么?

l    总结前面介绍的编程范式,它们各自有哪些代表语言?核心概念和运行机制是什么?针对的问题和主要的目的是什么?实现原理是什么?常见的应用有哪些?有什么不足之处?

:讲解

稍事休整后,大家重新团结在以冒号为中心的周围。

问号再度发问:“编程范式与设计模式都是一种抽象的软件思想,都有一套具体的实现方法。单从字面上看,‘编程’与‘设计’、‘范式’与‘模式’的区别似乎也不太大。它们究竟有什么不同呢?”

“这个问题有点意思。”冒号颔言,“设计模式一般针对某一特定场景的问题,而编程范式针对的是广泛得多的问题领域,通常有一整套的思想和理论体系,具有全局性、系统性和渗透性,这一点在五大重要范式中显得尤为突出。因此,编程范式更普适更抽象,涉及的深度和广度也是设计模式难以比拟的。”

引号不免有些疑问:“但事件驱动式不是也能作为设计模式吗?”

冒号解疑:“这倒并不矛盾。同样的思想用在整体系统的结构设计上,则称为架构模式;用在局部模块的细节实现上,则称为设计模式[1];用在引导编程实践上,则称为编程范式。”

句号的武侠瘾又犯了:“设计模式好比组合套路,能在一些特定场合下克敌制胜;编程范式则好比武功门派,博大精深且自成体系。”

“很形象的比喻。”冒号赞赏道,“设计模式是遵循设计原则的一些具体技巧,以保证代码的灵活性、扩展性和可重用性为目的。它重在设计,对语言一般没有要求[2]。编程范式则不同,对语言往往有专门的要求。通常所说的某某范式的语言,即指该语言对该范式在语法上有明确充分的支持,不需要借助其他的范式或工具。事实上,语言本来就是围绕其所倡导的核心范式来设计的[3]。”

逗号询问:“如果一种语言不支持某种范式,那么还能用这种范式编程吗?”

“语言不直接支持范式,只是说明它不属于该范式的语言,但还是可能求助工具来应用该范式。比如元编程可以借助Yacc或ANTLR来完成,AOP可以借助一些库或框架来实现。”冒号道,“正是依靠语言和工具的支持,编程范式得以建立起一套独特而完善的抽象机制和方法体系,从而为所倡导的世界观与方法论奠定基石。”

叹号请求:“能不能帮我们理清一下思路,把学过的范式一并汇总比较?”

时间: 2024-08-03 09:12:24

冒号课堂§4.3:汇总范式的相关文章

冒号课堂§4.1:函数范式

第四课 重温范式(1) 课前导读 本课对函数式编程与逻辑式编程作了更详细的展开,并对前面介绍的范式进行了汇总分析,最后用情景式编程贯穿所学范式. 本课共分四节-- 函数范式 逻辑范式 汇总范式 情景范式 4.1 函数范式--精巧的数学思维 知不知,上:不知不知,病 --<老子·德经> 关键词:编程范式,函数式编程,Haskell,Groovy 摘要: 再谈函数式编程 ?提问 掌握编程范式对编程语感的提高有什么作用? 为什么声明式程序一般比命令式程序更简洁? 函数式编程有哪些特征?为何简洁而不失

冒号课堂§4.4:情景范式

第四课 重温范式(4) 4.4情景范式--餐馆里的编程范式 理论是认生的孩童,多陪他玩玩,自会活泼起来 --题记 关键词: 编程范式,情景编程 摘要: 编程范式在餐馆中的应用 ?提问 l 什么是闭包?为什么被称为闭包?它有什么作用? l 规则引擎有何用处? l 能否设想一个生活中的场景,把介绍的九种编程范式都用上? :讲解 叹号摘下眼镜,揉了揉眼:"范式再好,多了也难免有些审美疲劳." 逗号也搓着太阳穴:"这段时间脑子被灌得沉甸甸的." "彼此彼此!你们的

冒号课堂§4.2:逻辑范式

第四课 重温范式(2) 4.2逻辑范式--当算法失去了控制 道常无为而无不为 --<老子·道经> 关键词: 编程范式,逻辑式编程,Prolog,算法,逻辑,控制 摘要: 再谈逻辑式编程 ?提问 衡量软件复杂度是由代码的长度决定的吗? 为什么逻辑式的编码一般比过程式的更简洁? 逻辑式编程相比命令式编程有哪些优势和劣势? :讲解 问号提出:"逻辑式编程不是也很特别吗?前面似乎介绍得也不多." "那我们就用逻辑式语言Prolog再实现一次quicksort吧."

冒号课堂§3.3:切面范式

第三课 常用范式(3) 3.3 切面范式--多角度看问题 横看成岭侧成峰 --<苏轼·题西林壁> 关键词:编程范式,SoC,DRY,AOP,Aspect,join point,pointcut,advice,OOP 摘要:AOP简谈 ?提问 什么是SoC和DRY? 如何有效地避免紊乱.松散.重复的代码? 抽象与分解的原则是什么? 什么是横切关注点? 接入点与切入点有何区别? 什么是编织?有哪些不同的编织方法? 实施AOP有哪些步骤? 为什么说AOP是OOP的一种补充? 为什么提倡尽可能地阅读原

冒号课堂§3.2:超级范式

第三课 常用范式(2) 3.2 超级范式--提升语言的级别 智能繁衍:机器人生产机器人 --题记 关键词:编程范式,模板元编程,元编程,语言导向式编程,产生式编程 摘要:元编程简谈 ?提问 什么是元编程?它与通常的编程有何不同? 元编程有何用处?它有哪些应用? 相比自编的元程序,用IDE自动生成的代码有什么缺陷? 语言导向式编程有何优点?它与元编程有何关系? 元编程与产生式编程有何异同? 为什么说元程序是一种最高级的程序? :讲解 问号忽然想起一事,问道:"有一本名为<C++模版元编程&g

冒号课堂§3.1:泛型范式

第三课 常用范式(1) 课前导读 这一课介绍了四个常用的编程范式:泛型式.元编程.切面式和事件驱动式. 本课共分四节-- 1.泛型范式 2.超级范式 3.切面范式 4.事件驱动 3.1泛型范式--抽象你的算法 以类行杂,以一行万 --<荀子•王制篇> 关键词:编程范式,泛型编程,STL,算法 摘要:泛型式编程简谈 ?提问 泛型编程有哪些优点? STL有哪些要素?各自有什么作用? 泛型编程的泛化对象是什么? 泛型编程的核心思想是什么? :讲解 冒号重新开讲:"你们会不会经常遇到这样的情

冒号课堂§2.4:并发范式

第二课 重要范式(4) 2.4 并发范式--合作与竞争 在合作中竞争,在竞争中合作 --<竞合> 关键词:编程范式,并发式编程,线程,进程,过程式,函数式,逻辑式,对象式 摘要:并发式编程简谈 ?提问 并发式编程有何特点? 并发式编程有哪些好处? 合理的并发式编程设计应满足哪些条件? :讲解 逗号好奇地问:"还有其他类型的编程范式吗?" "不但有,而且有很多."冒号喝了一口水,悠悠地说,"并发式编程(concurrent programming

冒号课堂§2.3:对象范式

第二课 重要范式(3) 2.3 对象范式--民主制社会的编程法则 民为贵,社稷次之,君为轻 --<孟子·尽心下> 关键词:编程范式,OOP,面向对象,过程式编程 摘要: OOP简谈 ?提问 OOP是一种特殊的命令式吗? OOP的基本思想是什么? OOP到底好在哪里? OOP将要一统天下吗? 过程式编程与OOP在设计理念上有什么差异? :讲解 短憩之后,引号迫不及待地问:"面向对象的范式应该是一种特殊的命令式吧?" "面向对象?"冒号咕哝着,"姑

冒号课堂§2.2:声明范式

第二课 重要范式(2) 2.2 声明范式--目标决定行动 给我一个支点,我能挪动地球 --Archimedes 关键词:编程范式,命令式,声明式,函数式,逻辑式 摘要:声明式编程简谈 ?提问 什么是声明式编程?它与命令式编程有何区别? 什么是函数式和逻辑式? 变量在命令式编程和声明式编程中有何不同的涵义? 声明式语言有何优点?为什么没有命令式语言流行? 命令式语言与声明式语言有无相通之处? 编程的本质是什么?命令式.函数式和逻辑式分别采用了怎样的编程机制? :讲解 冒号迅速转移了话题:"下面我们