DSL语言思想的应用】的更多相关文章

计算机技术发展很快,而且越来越快,结果也是越来越复杂,那么我们到底怎么搞定复杂性并重用代码? 很明显,这是个大难题.一开始我们要解决计算问题,发展了基本的编程语言. 很快,编程语言不能满足需求,我们需要重用一些代码,算法,我们把这些重用部分写成库. 随着库越积越多,需要组织这些库了,这就形成了框架. 这就是我们今天面对的问题,.net,Java,甚至JS,都形成了框架,各种各样的框架,从解决问题,到带来问题. 为什么这么说?因为如今的框架太庞大了,除了JS,其它的动辄几十个名字空间,成百上千的类…
目录 0. 引言 1. 组合查询 2. 全文搜索 2.1 Match 2.2 Match Phase 2.3 Multi Match 2.4 Query String 2.5 Simple Query String 3. 词项查询 3.1 Range query 3.2 Term query 0. 引言 Elasticsearch 提供了强大的查询语言 Query DSL(Domian Specific Language).Query DSL 是基于 JSON 数据格式来描述查询条件.本文的主要…
环境搭建 使用的Eclipse版本: Oxygen.1a Release (4.7.1a) Build id: 20171005-1200, 通过添加Xtext - Download上列出的Releases update site安装xtext IDE和xtext SDK. 之后打开Eclipse, 打开任何文件就报错: An error has occurred. See error log for more details. loader constraint violation: load…
引子 我们用一段gradle的脚本做引子,理解这一段脚本与一般的groovy代码是怎么联系起来的 buildscript { repositories { jcenter() mavenLocal() //或者使用指定的本地maven 库 maven{ url "file://D:/repo" } } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' } } DSL的定义 DSL(Domain Specifi…
在项目中总是希望页面上各处的文字,颜色,字体大小甚至各个视图控件布局都能够在发版之后能够修改以弥补一些前期考虑不周,或者根据统计数据能够随时进行调整,当然是各个版本都能够统一变化.看到这样的要求后,第一反应是这样的页面只能改成H5,或者尝试使用React Native来应对这种要求. 既然UIStackView已经提供了一种既先进又简洁的布局思路,为何不通过制作一个类似VFL这样的DSL语言来处理布局.这样不就能够通过下发一串DSL字符串的方式来进行内容样式甚至布局的更换,不用跟版,还能使多版本…
ES提供了丰富多彩的查询接口,可以满足各种各样的查询要求.更多内容请参考:ELK修炼之道 Query DSL结构化查询 Query DSL是一个Java开源框架用于构建类型安全的SQL查询语句.采用API代替传统的拼接字符串来构造查询语句.目前Querydsl支持的平台包括JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate Search. elasticsearch提供了一整套基于JSON的查询DSL语言来定义查询. Query DSL当作是一系列…
为什么要使用DSL DSL是领域专用语言,常见的DSL有SQL,CSS,Shell等等,这些DSL语言有别于其他通用语言如:C++,Java,C#,DSL常在特殊的场景或领域中使用.如下图: 领域专用语言通常是被领域专家使用,领域专家一般不熟悉通用编程语言,但是他们一般对业务非常了解,程序员一般对通用语言比较熟悉,但是在做行业软件的时候对业务部了解.这就需要协作的过程,一种方式是领域专家通过文档或者教授的方式把业务逻辑传递给程序员让程序员翻译成业务逻辑,而另一种方法,程序员为领域专家定制DSL,…
一.领域特定语言(DSL) 领域特定语言(DSL)通常被定义为一种特别针对某类特殊问题的计算机语言,它不打算解决其领域外的问题.对于DSL的正式研究已经持续很多年,直 到最近,在程序员试图采用最易读并且简炼的方法来解决他们的问题的时候,内部DSL意外地被写入程序中.近来,随着关于Ruby和其他一些动态语言的出 现,程序员对DSL的兴趣越来越浓.这些结构松散的语言给DSL提供某种方法,使得DSL允许最少的语法以及对某种特殊语言最直接的表现. 这里将描述怎样使用Java语言来编写领域特定语 言,并将…
1 前言 最近一个多月在做Web项目,用到的技术有(也不算泄漏公司机密吧): 后台:Struts 2(with JSP/FreeMarker).Spring.Hibernate.MySQL.Web Service(only dubbo interface): 前台:jQuery series: Web服务器:tomcat. 虽然比较厌恶被别人称为做Java Web的,但没有做过的事情还是有挑战性的,一周内几乎天天加班足可以我的态度. 好像有成就感的计算机硕士应该觉得这些活儿是些"平凡"…
领域特定语言(Domain Specific Language, DSL)是一种为解决特定领域问题而对某个特定领域操作和概念进行抽象的语言.领域特定语言只是针对某个特定的领域,这点与通用编程语言(General purpose Language)不同,如Java既可以适用于网站开发,也可以适用于手机开发.一旦领域特定语言离开了相关领域,它就会变得不适用.但针对某个特定的领域,领域特定语言能很自然地方便地表述问题,也常常比通用编程语言更快地解决问题. Martin Fowler 在<领域特定语言>…