第四课 重温范式(3)
4.3汇总范式——一张五味俱全的大烙饼
形者神之质,神者形之用 ——《范缜·神灭论》
关键词: 编程范式,设计模式
摘要: 总结编程范式
?提问
l 编程范式与设计模式有什么区别?
l 编程范式的核心价值是什么?
l 总结前面介绍的编程范式,它们各自有哪些代表语言?核心概念和运行机制是什么?针对的问题和主要的目的是什么?实现原理是什么?常见的应用有哪些?有什么不足之处?
:讲解
稍事休整后,大家重新团结在以冒号为中心的周围。
问号再度发问:“编程范式与设计模式都是一种抽象的软件思想,都有一套具体的实现方法。单从字面上看,‘编程’与‘设计’、‘范式’与‘模式’的区别似乎也不太大。它们究竟有什么不同呢?”
“这个问题有点意思。”冒号颔言,“设计模式一般针对某一特定场景的问题,而编程范式针对的是广泛得多的问题领域,通常有一整套的思想和理论体系,具有全局性、系统性和渗透性,这一点在五大重要范式中显得尤为突出。因此,编程范式更普适更抽象,涉及的深度和广度也是设计模式难以比拟的。”
引号不免有些疑问:“但事件驱动式不是也能作为设计模式吗?”
冒号解疑:“这倒并不矛盾。同样的思想用在整体系统的结构设计上,则称为架构模式;用在局部模块的细节实现上,则称为设计模式[1];用在引导编程实践上,则称为编程范式。”
句号的武侠瘾又犯了:“设计模式好比组合套路,能在一些特定场合下克敌制胜;编程范式则好比武功门派,博大精深且自成体系。”
“很形象的比喻。”冒号赞赏道,“设计模式是遵循设计原则的一些具体技巧,以保证代码的灵活性、扩展性和可重用性为目的。它重在设计,对语言一般没有要求[2]。编程范式则不同,对语言往往有专门的要求。通常所说的某某范式的语言,即指该语言对该范式在语法上有明确充分的支持,不需要借助其他的范式或工具。事实上,语言本来就是围绕其所倡导的核心范式来设计的[3]。”
逗号询问:“如果一种语言不支持某种范式,那么还能用这种范式编程吗?”
“语言不直接支持范式,只是说明它不属于该范式的语言,但还是可能求助工具来应用该范式。比如元编程可以借助Yacc或ANTLR来完成,AOP可以借助一些库或框架来实现。”冒号道,“正是依靠语言和工具的支持,编程范式得以建立起一套独特而完善的抽象机制和方法体系,从而为所倡导的世界观与方法论奠定基石。”
叹号请求:“能不能帮我们理清一下思路,把学过的范式一并汇总比较?”