首页 / 知识
关于理论:什么是DSL,我应该在哪里使用?
2023-04-14 01:52:00

What is a DSL and where should I use it?我越来越多地听到有关抛出的领域特定语言以及它们如何改变您处理业务逻辑的方式的信息,并且我见过Ayende的博客文章和内容,但是我从未见过真正弄清了为什么我会将我的业务逻辑从我在提供程序中使用的方法和情况中删除的原因。 如果您有使用这些东西的背景知识,则有可能您可以用真实的外行术语来表达:
在需要将系统控制的某些方面交给他人的情况下, DSL很有用。我在Rule Engines中使用了它们,在其中您可以创建一种简单的语言,使技术含量较低的人更易于表达自己的语言,尤其是在工作流中。 换句话说,不是让他们学习Java:
我可以写一个DSL,让我说:
还有其他情况,但基本上,在任何您想使用宏语言,编写工作流程脚本或允许进行售后定制的地方-这些都是DSL的候选对象。 DSL代表领域特定语言,即专门为解决给定区域中的问题而设计的语言。 例如,可以将Markdown(用于在SO上编辑帖子的标记语言)视为DSL。 我个人在几乎每个正在进行的大型项目中都能找到DSL的位置。通常,我需要某种类似于SQL的查询语言。另一个常见用法是基于规则的系统,您需要某种语言来指定规则\\\\条件。 在难以用传统方式描述/解决问题的情况下,DSL有意义。 如果使用Microsoft Visual Studio,则您已经在使用多个DSL-Web表单,winforms等的设计图面是DSL。类设计器是另一个示例。 DSL只是(至少在理论上)使特定"域"(即,视觉布局)中的开发更容易,更直观,更高效的一组工具。 就构建DSL而言,像Ayende这样的人所写的一些东西与"文本解析" dsls有关,让开发人员(或最终用户)在应用程序中输入"自然文本",该应用程序可以解析文本并基于它生成某种代码或输出。 您可以使用任何语言来构建自己的DSL。 Microsoft Visual Studio具有很多可扩展性点,并且这些模式 n n DSL只是一个奇特的名称,可能表示不同的含义:
这种炒作的一个重要方面:用一种语言来思考您的应用程序确实很有意义。您想在应用程序中谈论什么?这些应该是您的类和方法: DSL基本上是在创建自己的小子语言来解决特定的域问题。这可以通过方法链接来解决。点和括号是可选的语言使这些表达看起来更加自然。它也可以类似于构建器模式。 DSL本身不是语言,而是一种应用于API的模式,以使调用更具解释性。 其中一个例子是Guice,《 Guice用户指南》 http://docs.google.com/View?docid=dd2fhx4z_5df5hw8,对接口如何绑定到实现以及在何种上下文中进行了进一步的描述。 另一个常见示例是查询语言。例如:
在实现中,想象每个方法都返回一个新的Query对象,或者仅在内部更新自身。在任何时候,您都可以通过使用例如rows()来获取所有行来终止链,也可以像我在上面所做的那样通过updateSomeField终止链。两者都将返回结果对象。 我也建议您看一下上面的Guice示例,因为那里的每个调用都会返回一个带有新选项的新类型。良好的IDE将使您能够完成操作,并清楚地说明了每个步骤中具有哪些选项。 编辑:似乎许多人认为DSL是具有自己的解析器的新的,简单的,单一目的的语言。我总是将DSL与使用方法链接作为表示操作的约定相关联。 |
最新内容
相关内容
linux编写c语言命令?
linux编写c语言命令?,系统,基础,环境,代码,盘面,保险,百度,情况,数据,工具,在Linux系统中,如何运行一个C语言程序?编译。由.c文件生成.o文件,写linux改变语言命令?
linux改变语言命令?,系统,管理,网上,官方网站,情况,服务,中文,语言,命令,终端,linux命令行下怎样改变语言将内容改为:LANG=zh_CN.UTF-8LANGUAGEc语言编译linux命令?
c语言编译linux命令?,代码,工具,环境,系统,基础,保险,百度,语言,源程序,文件,Linux中,运行一个C语言程序如何运行1、编译。由.c文件生成.o文件linux常用命令语言?
linux常用命令语言?,工作,地址,系统,信息,命令,目录,标准,管理,工具,服务,linux常用命令linux系统常用操作命令如下:ls:全拼list,功能是列出目录r语言命令行写linux?
r语言命令行写linux?,环境,数据,系统,工具,简介,官网,语言,报告,软件,发展,如何在linux环境下使用r语言是的,可以在Linux系统上安装RStudio。 Rlinux语言查找命令行?
linux语言查找命令行?,系统,工作,位置,标准,地址,信息,命令,管理,时间,文件,在linux命令行下如何查找显示/etc/passwd文件中包含root的行如何Python编程语言的优缺点
Python编程语言的优缺点,代码,网站,航空,管理系统,培训,系统,概念,网络,基础,机器人,Python是一种编程语言,它的名字来源于一个喜剧。是由Guid什么是Python语言?主要应用于哪些领
什么是Python语言?主要应用于哪些领域?,分析,人工智能,数据,公司,金融,人员,网络,量化交易,全球,时间,在当今社会,Python是一种非常流行的编程语Python语言支持编程方式有哪些
Python语言支持编程方式有哪些,数据,设计,中心,代码,第三,网站,人工智能,平台,位置,培训,Python是一种跨平台的计算机程序设计语言,是一个高层Python编程语言特征
Python编程语言特征,代码,异常,环境,管理,培训,标准,检测,网络,特征,模块,1、Python语法优雅,程序编码简单易读。2、Python易上手,通过简单的操Python代码是怎样的语言
Python代码是怎样的语言,平台,代码,管理,资料,设计,简介,项目,概念,标准,培训,python的中文名称是蟒蛇。Python是一种计算机程序设计语言。是学习python语言能做什么?
学习python语言能做什么?,软件,分析,项目,代码,金融,时代,人工智能,人员,网络,交易软件,1.Web开发最火的Pythonweb框架Django,支持异步高并发