`
ruilin215
  • 浏览: 1143451 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

开发式编程,声明式编程和产生式编程(www.mynetweaver.cn)

阅读更多

从概念上看,WebDynpro是基于MVC的声明式编程(declarative programming),也就是面向元数据解析的编程。我们可以比较一下几种常见的编程模型,来加深理解。

以下是转载http://www.blogjava.net/AndersLin/archive/2006/08/31/66968.html

开发式编程是编码的,如:Java, C#
声明式编程是解析的,如:ANT(spring等的xml不一样,它们是静态描述型的,不那么verb)
产生式编程是生成的,如:AOP(AspectJ),DSL(Drools)

开发式编程是聚合的,
声明式编程是声明的,
产生式编程是组合的,

声明式编程和产生式编程看起来很像:
1.声明式编程需要一个解析器,产生式编程需要一个生成器;
2.产生式编程(正统的)需要一个编辑器,声明式编程也可以有(如jbpm)。
3.产生式编程有一个元模型,声明式编程也可以定义。

本质的区别在于:
1.产生式是自底向上,而声明式是自定向下。即产生式编程用的思路是组合概念(用小粒度的概念组合生成大粒度的概念),
而声明式编程是解析概念,用统一的概念来理解,把不同差异性交由具体程序解析。
2.声明式编程的编辑器生成的是xml文件,将由框架程序解析;而产生式生成程序代码,不做解析运行。
3.由于1,导致元数据模型不一样,产生式是相对细粒度的,而声明式是粗粒度的(不能直接比较大小,定义的是无差异性的概念)。如Ant,jbpm都是很大的概念。

前段时间javaeye上有关普元的黄柳青谈中国软件开发情况:"目前,国内传统大型企业应用软件有两种方式居多:编码式开发方式和一次开发方式。值得注意的是,两种方式都有致命的缺陷---编码式开发方式使得企业级应用软件的快速开发和实施难以实现;一次性开发持续运行的方式,则导致软件的严重僵化和应用的不适应。尽管有时两种方式的操作者会彼此攻击,但在用户看来,它们之间并无显著不同"

其说的以及普元做的,就是这三个开发方式。

buaawhl 老大说:"Interpreter is over Code Generator。meta programming的最高层次是语言级别直接解决,比如,smalltalk, ruby, python, 还有其他reflection 支持的非常好的语言。甚至 STL 等 template 技术,也可以算作语言级别。Code Generation 是最低级别的meta programming解决方案。技术含量也最低。这个级别必须超越,才能够真正达到质变,完全跳出概念炒作的层次。"

我一直以为:其实代码生成也没有那么坏,关键在于生成什么东东,如果是生成结构性的代码,就很容易被人bs,因为这种代码是大都可以用template完成的,同时因为这种代码往往不是最终的产物,就存在同步维护问题。
但如果生成的是功能性代码,这类代码是最终执行代码,那么通常就把用于设计的代码看作是最终产物,最明显的例子是DSL。

分享到:
评论

相关推荐

    javascript函数式编程

    对于已经熟悉Java的开发者来说,学习JavaScript函数式编程不仅可以拓宽视野,也有助于提升在前端开发领域的专业技能。阅读相关书籍,例如"javascript函数式编程",将帮助你更好地掌握这些概念并应用于实际项目中。

    javascript指南和函数式编程

    本指南将深入探讨JavaScript的高效编程和函数式编程这两个重要主题,帮助开发者提升技能,实现更优雅、更可维护的代码。 《Effective JavaScript(中文版).pdf》这本书是JavaScript编程的经典之作,它包含了68个具体...

    JS 函数式编程指南 PDF

    这本指南不仅涵盖了函数式编程的基础理论,还详细介绍了如何在实际开发中应用这些理论,使之成为提高编程实践水平和深化编程理解的有力工具。通过学习和应用这些函数式编程技巧,开发者可以更好地理解和运用...

    Java 8新特性之Lambda与函数式编程.pdf

    通过这些新特性的引入,Java 8不仅提高了开发效率和程序的表达能力,还为并行和函数式编程提供了支持,使得Java编程更加现代化和强大。无论是在金融、医疗还是企业级应用开发中,Java 8的新特性都为开发者提供了更多...

    函数式编程及实例

    在JavaScript开发中,函数式编程的概念可以帮助我们编写出更简洁、可读性更强、易于测试和维护的代码。 纯函数是函数式编程的核心概念之一。一个纯函数的输出仅依赖于其输入参数,不产生任何副作用,比如修改全局...

    C#+WPF上位机开发课程(模块化与反应式编程)

    在这种编程模式下,程序可以根据数据的变化自动更新视图或其他相关部分,这在WPF开发中尤为重要,因为WPF提供了丰富的工具和技术来支持反应式编程,例如数据绑定和命令模式等。 #### 四、WPF应用环境 根据给定的...

    函数式编程.zip

    函数式编程是一种编程范式,它将计算视为数学函数的求值,并强调程序的数据流和变换,而不是对指令进行控制。...随着并发编程和大数据处理的需求增加,函数式编程的理念和实践在现代软件开发中越来越受到重视。

    反应式编程框架Flower的设计与实践.pptx

    反应式编程框架Flower的设计与实践 反应式编程框架Flower是一种消息驱动...反应式编程框架Flower可以提高系统的可用性和性能,降低系统的维护成本和升级成本,并且可以与Web开源技术集成,实现开发便捷性和性能提升。

    linuxC一站式编程.zip

    《Linux C一站式编程》资源包含了丰富的材料,是学习Linux环境下C语言编程的宝贵资料。Linux作为开源操作系统,其内核及众多应用软件都是用C语言编写的,因此掌握Linux C编程对于深入理解系统运行机制、开发高效可靠...

    stc51单片机积木式图形化中文编程软件/c语言代码生成器/电路仿真

    "积木式图形化中文编程软件"是为了降低单片机编程的门槛,尤其是针对初学者设计的,它提供了直观易懂的图形化编程界面,用户可以通过拖拽积木块的方式来构建程序逻辑,大大简化了编程过程。这种方式对于学习编程概念...

    JavaScript ES6函数式编程入门经典_javascript_

    JavaScript ES6函数式编程是现代Web开发中的重要概念,它为开发者提供了更高效、更简洁的编程方式。本文将深入探讨ES6中的函数式编程特性,帮助初学者掌握这一核心技能。 1. **箭头函数**:箭头函数是ES6引入的一种...

    Scratch3.0少儿积木式编程(6_10岁)源代码.zip

    这款工具以积木式编程为特点,通过拖拽色彩丰富的代码块,孩子们可以轻松地创建互动故事、动画、游戏和其他应用程序,无需预先掌握编程语法。 源代码new文件夹中的内容可能包含了多个完成或未完成的项目,每个项目...

    PLC控制QD75程式.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例

    PLC控制QD75程式.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例PLC控制QD75程式.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例PLC控制QD75程式.zip三菱PLC编程案例源码资料编程...

    鲁式集尘机程式.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例

    鲁式集尘机程式.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例鲁式集尘机程式.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例鲁式集尘机程式.zip三菱PLC编程案例源码资料编程控制...

    函数式思维为什么函数式编程越来越受关注共3页.pdf.zip

    函数式编程是一种编程范式,它强调通过使用数学函数来构造程序,并且避免使用副作用和可变状态。近年来,函数式编程在IT行业中受到了越来越多的关注,这主要得益于它的一些独特优势和现代计算环境的需求。 首先,...

    步骤编程开发平台.zip

    选择式编程,不用记任何命令(指令)。表格式界面查看方便,理解容易。分步骤执行,可以让程序的条理更加清晰。多任务编程,多个任务可以各自同时运行。零基础:不需要懂英文代码,完全可以做到无基础使用。降成本:...

    实战SAP程序开发——从实例学SAP ABAP编程.rar

    SAP ABAP(Advanced Business Application Programming)是SAP系统中的编程语言,用于开发和定制企业应用程序。对于想要深入理解SAP编程的初学者,实战SAP程序开发——从实例学SAP ABAP编程这个资源提供了宝贵的实践...

    FR-A700-FX3U 通信程式.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例

    FR-A700-FX3U 通信程式.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例FR-A700-FX3U 通信程式.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例FR-A700-FX3U 通信程式.zip三菱PLC编程...

    深入理解Java函数式编程和Streams API.zip

    8. **函数式编程的实践**:在实际开发中,函数式编程和Streams API可以应用于数据过滤、转换、聚合,以及并行处理。例如,可以使用Stream API来处理CSV文件,或者在数据库查询中实现复杂的数据过滤和转换。 9. **...

    663752 JavaScript ES6函数式编程入门经典.zip

    JavaScript ES6函数式编程是一种强大的编程范式,它在现代前端开发中占据着重要的地位。函数式编程强调将计算视为函数的求值,而非状态的改变或命令的执行,这为编写可读性强、可维护性高的代码提供了可能。本资料...

Global site tag (gtag.js) - Google Analytics