本文共 2692 字,大约阅读时间需要 8 分钟。
域控 只能访问特定网址
(DSL)是一种旨在在特定域的上下文中使用的语言。 域可以是业务上下文(例如,银行,保险等)或应用程序上下文(例如,Web应用程序,数据库等)。相反,通用语言(GPL)可以用于多种商业问题和应用范围。
DSL不会试图让所有人满意。 相反,它是为有限的适用性和使用范围创建的,但是它具有足够的功能来表示和解决该领域中的问题和解决方案。 DSL的一个很好的例子是HTML。 它是Web应用程序域的一种语言。 例如,它不能用于数字运算,但是很明显,HTML在网络上的使用广泛。
GPL创建者不知道该语言可能在何处使用或用户打算使用该语言解决的问题。 因此,使用通用构造创建GPL,这些通用构造可能可用于任何问题,解决方案,业务或需求。 Java是GPL,因为它用于台式机和移动设备上,并且嵌入银行,金融,保险,制造等行业的Web中。
在DSL世界中,有两种类型的语言:
用不同语言编写并由另一种主机语言处理的DSL称为外部 DSL。
这是SQL中的DSL,可以使用主机语言进行处理:
SELECT account FROM accounts WHERE account = '123' AND branch = 'abc' AND amount >= 1000
为此,可以使用定义的词汇和格式以英语编写DSL,并可以使用诸如ANTLR的解析器生成器以另一种宿主语言处理DSL:
if smokes then increase premium by 10%
如果DSL和主机语言相同,则DSL类型为internal ,其中DSL以该语言的语义编写并由其处理。 这些也称为嵌入式 DSL。 这是两个例子。
if today_is_christmas; then apply_christmas_discount; fi这是像英语一样写的有效Bash。
orderValue = orderValue . applyFestivalDiscount ( ) . applyCustomerLoyalityDiscount ( ) . applyCustomerAgeDiscount ( ) ;这使用流利的风格,并且像英语一样可读。
是的,DSL和GPL之间的界限有时会模糊。
DSL使用的某些语言包括:
DSL的目的是捕获或记录一个域的要求和行为。 对于域中的特定方面(例如,金融商品交易),DSL的使用范围甚至更窄。 DSL将业务和技术团队召集在一起。 这并不意味着DSL仅用于商业用途。 例如,设计人员和开发人员可以使用DSL来表示或设计应用程序。
DSL也可以用于生成已解决域或问题的源代码。 但是,从DSL生成代码并不是强制性的,因为其主要目的是领域知识。 但是,使用代码时,代码生成是领域工程中的一个重要优势。
从好的方面来说,DSL具有捕获域属性的强大功能。 另外,由于DSL很小,因此易于学习和使用。 最后,DSL为领域专家以及领域专家和开发人员之间提供了一种语言。
不利的一面是,DSL仅在预期的领域和目的内使用。 此外,DSL可能会有学习曲线,尽管它可能不会很高。 另外,尽管使用用于DSL捕获的工具可能会有优势,但它们并不是必不可少的,并且开发或配置此类工具是一项额外的工作。 最后,DSL创建者需要领域知识以及语言开发知识,而个人很少同时拥有这两种知识。
想使用DSL吗? 这里有一些提示:
如果您现在正在使用DSL或计划将来使用DSL,请在评论中分享您的经验。
翻译自:
域控 只能访问特定网址
转载地址:http://gaczd.baihongyu.com/