专栏首页学习分享-实践为王代码生成 VS 模型解释
原创

代码生成 VS 模型解释

对于UI界面,我们基于模型驱动开发可以采用代码生成和模型解释来生成运行程序。

代码生成:通过模型,直接生成窗体类,生成的窗体类与传统手工写的代码类似

模型解释:在OpenExpressApp中采用的AutoUI是采用模型解释方法,我们通过给系统预定义一些窗体模板,每类模板对应一个窗体模板类,具体窗体由模板读取模型元数据来自动生成界面。刚发现有一个UI自动生成的项Metawidget,它使用的就是模型解释,有时间好好看看。

对于实体类的设计:

代码生成:生成具体类

模型解释:解释器生成一个Entity,Name为实体类名称;这个Entity示例下添加多个属性,属性名为实体属性名

代码生成相对于模型解释的好处

保护你的知识产权:在产品线工程应用中,使用代码生成只需要给特定用户生成后的代码,而使用模型解释时,你需要把完整的解释引擎以及模型都给客户。

适用于客户架构:模型解释必须实现一个特定于自己架构的解释器,而代码生成可以依据客户指导来生成客户需要的代码

生成后的实现代码更容易理解:可以通过直接查看生成后的代码来了解应用程序的行为,而采用模型解释需要明白解释器的通用实现以及模型的语义表达

容易开始:如果你已经应用过传统方法构建过一个应用程序,那么可以容易的使用代码生成技术把现在的代码转为模板或者替代部分代码。如果你构建了多个相同领域的应用程序,则可以通过分析这些系统的差异,可以把共性问题通过静态代码放在领域框架中,可变代码通过代码生成技术来生成。

更容易迭代:上面指出代码生成可以把现有代码使用代码生成技术来生成,我们可以方便的先生成一部分代码,之后再扩展生成其他代码

方便利用编译器来进行代码检查:生成代码可以通过编译器来检查代码错误,而模型解释必须自己写一个模型检查器

调试生成代码比调试解释器更为容易:但是作为用户,并不太需要调试解释器

更容易跟踪模板的更改: 代码生成模板是文本文件,所以通过一些版本控制软件可以很好的进行跟踪,而模型解释代码由于通用性,它的改变会比模板更改跟踪复杂些。

模型解释相对于代码生成的好处

适应更快的变化:模型改变不需要额外的重新生成、构建、测试和部署过程,这能明显的缩短总体时间。

支持运行期变化:可以通过运行期更改模型来更改应用,而不需要关闭应用程序。

更容易部署和运行:代码生成需要使用语言平台进行编译生成目标应用,而使用模型解释不再需要代码,只需要把模型放入模型解释器中即可,因此它可以更容易的让领域专家部署和运行应用,而不只是建模而已。

容易更新:很容易更改解释器并重新运行同一个模型,不需要使用更新的生成器再次生成代码。

比代码生成更灵活:基于代码生成的模板会有一些限制,而模型解释器可以更灵活的处理。

运行期调试模型:模型可以在运行时进行调试,例如像系统工作流一样可以在某个活动中设置断点,这在复杂流程和状态模型中很有用。

采用哪种方法

  从上面描述来看,代码生成和模型解释两种模型到应用的转换方法各有利弊,并没有一种决定性的论断来告诉你应该选择哪一种方法,这个可能每个人的经验、喜好、以及问题领域都有关系。

  如果业务复杂,我希望在应用中有相应的类库,这样可以使用OO来编写业务代码,所以我个人偏向于类库生成使用代码生成技术。而界面生成相对来说具有一定的通用性,所以可以使用通用语言在领域框架中建立一些UI模板,通过模型解释来自动生成代码,这也是OpenExpressApp现在的解决方法。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

关注作者,阅读全部精彩内容

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 生成式模型 vs 判别式模型

    生成式模型和判别式模型的概念是机器学习领域非常重要的基础知识,但能准确区分开二者并不是一件非常容易的事情,笔者经常是看一遍忘一遍,为了巩固下知识点,我将从以下几...

    Datawhale
  • IDEA自动生成代码注释

    4.编辑Live Template,在Template text中输入一下注释模板。

    黑洞代码
  • 与VS集成的若干种代码生成解决方案[博文汇总(共8篇)]

    前一阵子写了不少关于代码生成相关的文章,介绍了一些如何通过VS自动生成代码的解决方案,比如CodeDOM、T4以及ASP.NET的BuildProvider等。...

    蒋金楠
  • IDEA自动生成Javadoc代码注释

    在日常写代码时往往不会注重注释的格式、规范等问题,可能注释都不会写,但是一旦代码完成后要交付他人,就需要考虑注释的问题了,因为重要函数、方法的注释往往对整个代码...

    ZONGLYN
  • 数据挖掘面试题之:生成模型 VS 判别模型

    最近,milter在进行算法工程师的面试,发现面试官特别钟爱生成模型和判别模型相关的问题,为了能够和面试官谈笑风生,milter精心整理了面试官可能问到的相关问...

    木东居士
  • 数据挖掘面试题之:生成模型 VS 判别模型

    最近,milter在进行算法工程师的面试,发现面试官特别钟爱生成模型和判别模型相关的问题,为了能够和面试官谈笑风生,milter精心整理了面试官可能问到的相关问...

    AI研习社
  • 理解生成模型与判别模型

    我们都知道,对于有监督的机器学习中的分类问题,求解问题的算法可以分为生成模型与判别模型两种类型。但是,究竟什么是生成模型,什么是判别模型?不少书籍和技术文章对这...

    SIGAI学习与实践平台
  • 理解生成模型与判别模型

    我们都知道,对于有监督的机器学习中的分类问题,求解问题的算法可以分为生成模型与判别模型两种类型。但是,究竟什么是生成模型,什么是判别模型?不少书籍和技术文章对这...

    SIGAI学习与实践平台
  • 图像结构样式分开生成的生成模型论文代码

    Generative Image Modeling using Style and Structure Adversarial Networks

    用户1908973
  • Android Studio kotlin生成编辑类注释代码

    更新了AS 3.1.2之后,发现新建Kotlin类,类注释依然木有,没办法只有自己动手了。

    砸漏
  • go模板-代码生成器

    能用程序去做的事,就不要用手,编写自己的代码生成器就是用来解放你的双手,替你做一些重复性的工作。 上篇帖子写了模板的基础 go模板详说 ,有了基础就要做点什么...

    lpxxn
  • ICML 2021 | DEM-VAE:一类新的可解释文本生成模型

    现有的自回归文本生成模型,例如GPT-3,在生成的流畅性上已经取得了令人惊喜的效果。然而,GPT-3这类模型就像是一个插了电之后自己往外不停秃噜字的打字机,你永...

    AI科技评论
  • 代码解析深度学习系统编程模型:TensorFlow vs. CNTK

    用户1737318
  • 快速学习代码生成器-构造数据模型

    借助Freemarker机制可以方便的根据模板生成文件,同时也是组成代码生成器的核心部分。对于Freemarker而言,其强调 数据模型 + 模板 = 文件 的...

    cwl_java
  • 仅用四行代码实现RNN文本生成模型

    文本生成(generating text)对机器学习和NLP初学者来说似乎很有趣的项目之一,但也是一个非常困难的项目。值得庆幸的是,网络上有各种各样的优秀资源,...

    用户3578099
  • 论文:生成模型采样-类比学习应用 代码

    之前发的这篇文章(之前内容在文章底部)介绍了生成模型的高效采样及隐变量空间特征特点,最近的How to Train a GAN? Tips and tricks...

    用户1908973
  • 最强生成模型PPGN代码开放-介绍及阅读

    This repository contains source code necessary to reproduce some of the main res...

    用户1908973
  • 原创 | 一文读懂模型的可解释性(附代码&链接)

    目前人工智能应用已经渗透到我们生活的方方面面,成为我们生活中重要的一部分。我们相信,随着机器学习技术的不断进步,未来有望产生一个能够感知、学习、做出决策和采取独...

    数据派THU
  • IntelliJ IDEA生成live template(代码模板)

    快捷键:Ctrl+Shift+A进入Find Action,输入live template

    用户2409797

扫码关注云+社区

领取腾讯云代金券