`
netbaixc_gmail_com
  • 浏览: 54226 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于DSL(domain-specific language)的幻想

阅读更多
我在使用各种框架开发的岁月中,对编写代码有很多看法。这些看法对语言设计者或对所谓开发平台设计者而言大概就是需求了。我的这么些看法往往也是一种直观的感受,到了开发平台设计者那也许就能联想创造出一套设计概念来。千千万万的程序员,老的少的,这么多想法真就能促使着开发工具的进化。不过不是所有想法都是正确的认识。现在有些java老手们在开发的时候已经很厌烦java了,说用一行行的代码去构建信息系统实在不直接。他们说你看那一行行的代码不就是要帮助人存一下知识,哪天能查一下这些知识,信息系统搞来搞去不就是这么点事,这么简单的事还得用一行行代码表达太罗嗦也不直观。我觉得这种说法有点偏颇。

不论用什么开发语言开发的信息系统,其实里面的一行行代码并不是在纯粹描述人类的认知,不是在描述那种纯粹的业务知识,而是在从信息系统的角度出发所作的描述。你看,需求分析完了,再到设计,设计完了的结果是什么界面,点什么按钮,怎么处理数据,存起来还是发邮件等这样的未来的信息系统蓝图,这个蓝图才是一行行代码的描述目标。这样描述出来的信息系统,提供给用户的是各种功能,用户通过这提供的各种功能,才完成他们的认知方面的需求。

没错,你看任何一个java实现的业务系统,那些代码的变量的命名,都是业务上的名称,似乎就是在用机器的代码在表达人类的认知,但其实这个认知是“二阶”的,是关于信息系统蓝图的认知。

那么如果你要做一个类似人工智能系统,能输入一些人类的业务知识表达,日后机器能够给你推导出或查询出一些知识的表达视图来,则这样的系统确实能够满足人们大部分信息化的需求;可是实际客户往往不是这么单一的需求,人们想利用信息系统做事情的手段和花样多得呢,像自动发个邮件啦,或者呈现个漂亮的报表了,搞个单据审批了,这些东西层出不穷,是和“知识管理”这种功能并行的。

所以你说用代码开发出一个可以方便的描述知识并能查询能推理新知识的智能系统,甚至客户自己都可以借此系统去描述自己的认知体系,马上能得到输入查询推理的功能,那真是不错;但是你说想基于此智能系统解决客户需求而取代java或者代码开发,那你就不能停留在针对业务知识的智能系统,你得开发一个能够写机器指令的智能系统,客户自己描述想怎么借助计算机玩什么花样,即借此智能系统描述“二阶”认知,然后智能系统自动推理出能在机器上运行的指令,这样才对。

那么摆脱这个误区后,我觉得想通过DSL"取代"java的喊声更可取一些。毕竟jdk那些东西是提炼的通用的东西,我们都知道一种东西如果提炼一下就变得很灵通,但要要表达原来的样子就会要很多组合啊之类的,这就像什么阴阳八卦生万象什么的。面向一个专门的领域比如表达玩email的花样,那么就给个简单的email-DSL,比如Send{netbaixc@gmail.com,"你好"}嘿,大部分就成了,不用再去想jml包了,多省事也好读。
1
0
分享到:
评论

相关推荐

    Eclipse Modeling Project A Domain-Specific Language (DSL) Toolkit

    Eclipse Modeling Project A Domain-Specific Language (DSL) Toolkit

    Domain-Specific Languages in R pdf

    Gain an accelerated introduction to domain-specific languages in R, including coverage of regular expressions. This compact, in-depth book shows you how DSLs are programming languages specialized for ...

    Implementing Domain-Specific Languages with Xtext and Xtend(PACKT,2013)

    “Implementing Domain-Specific Languages with Xtext and Xtend” will teach you how to develop a DSL with Xtext, an Eclipse framework for implementing domain-specific languages. The chapters are like ...

    领域特定语言(Domain Specific Languages)

    全面详尽地讲解了各种dsl及其构造方式,揭示了与编程语言无关的通用原则和模式,阐释了如何通过dsl有效提高开发人员的生产力以及增进与领域专家的有效沟通,能为开发人员选择和使用dsl提供有效的决策依据和指导方法...

    SQL DSL (Domain Specific Language) for Kotlin and Java. Su.zip

    SQL DSL (Domain Specific Language) for Kotlin and Java. Su

    [Xtext Xtend] 领域特定语言 (Xtext & Xtend 实现) (英文版)

    Learn to quickly develop a domain-specific language with Xtext Implement any aspect of a DSL using Xtend, a fully featured Java-like programming language Discover how to test a DSL implementation and ...

    Implementing.Domain.Specific.Languages.with.Xtext.and.Xtend.2nd.Ed

    Leverage the latest features of Xtext and Xtend to develop a domain-specific language. Integrate Xtext with popular third party IDEs and get the best out of both worlds. Discover how to test a DSL ...

    devops-dev-dsl

    softwareTable of Contents4. jackson-dataformat-xml4.1. xml转mapjson1. jackson-databind1.1. json字符串转java对象1.2.... Example usage of hutool-poi领域特定语言(DSL)DSL 是 domain-specific language 的缩

    机器人Ruby开发工具Artoo.zip

    Artoo 是一个小型的 Celluloid 机器人开发框架,提供简单强大的 DSL (domain-specific language) 来进行机器人开发和物理计算。你可以使用 Artoo 来连接(组合)多种不同的设备。 具体教程视频 如果你想要用 Go 语言...

    Gradle for Android(PACKT,2015)

    Gradle is an open source build automation system that introduces a Groovy-based domain-specific language (DSL) to configure projects. Using Gradle makes it easy for Android developers to manage ...

    Addison.Wesley.Domain.Specific.Development.with.Visual.Studio.DSL.Tools.May.2007.pdf

    微软的新技术Domain Specific Language Tool的教程

    AndroidStudio Gradle文件

    Gradle is an open-source build automation system that builds upon the concepts of Apache Ant and Apache Maven and introduces a Groovy-based domain-specific language (DSL) instead of the XML form used ...

    Griffon In Action

    Griffon has adopted many of those languages’ and frameworks’ best practices, including Model-View-Controller, convention-over-configuration, a modern dynamic language (Groovy), domain-specific ...

    DSLs in Boo Domain Specific Languages in .NET

    特定领域编程语言如SQL,LINQ,正则等。

    代码生成平台Sculptor.zip

    你可以使用来自Domain-Driven Design (DDD)用textual DSL(Domain Specific Language)定义的一些概念如:Service, Module、Entity、Value Object、Repository...。Sculptor利用openArchitectureWare(oAW)来解析DSL,...

    groovy 1.6.9

    * supports Domain-Specific Languages and other compact syntax so your code becomes easy to read and maintain * makes writing shell and build scripts easy with its powerful processing primitives, OO ...

    VisualStudio DSL入门

    特定领域语言(DSL,Domain Specific Language)是一种特别用来描述某一专业领域内涵的描述语言,其实它并不陌生, HTML ,SQL都算的上是DSL的例子.

    learngeb:网站自动化测试之美

    发挥Groovy 程式语言作为DSL(Domain-Specific Language)的优势,建构出一套浏览器自动化专属的语法,并提供类似jQuery 的操作方法,存取网页DOM 节点更方便,撰写测试程式更简洁快速。 可以用简单的Groovy Script ...

    Gradle for Android

    In Detail, Gradle is an open source build automation system that introduces a Groovy-based domain-specific language (DSL) to configure projects. Using Gradle makes it easy for Android developers to ...

Global site tag (gtag.js) - Google Analytics