代码之家  ›  专栏  ›  技术社区  ›  dsimcha

DSL与普通旧库

  •  1
  • dsimcha  · 技术社区  · 7 年前

    这与NumPy的方法形成了对比,例如,NumPy运行在通用语言之上,如果Matlab存在的时间和投入的资金一样长,它可能会和Matlab一样好。这使得你可以在一个只有一点点数字的项目上工作,而不需要一大堆粗糙的胶水代码来连接语言,不需要记住多个语法等等。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Jeff Storey    16 年前

    独立DSL的主要优点之一是它可以更具表现力。在用通用语言编写的库中,您受到语言语法的限制。考虑一个银行软件的例子,它有一些可以被查询的财务记录,并且你想在去年找到所有的抵押贷款问题。通用语言中查询的伪代码如下所示:

    List<Mortgage> mortgagesThisYear = new LinkedList<Mortgage>();
    for ( Mortgage m : mortgages )  {
      if ( today.minus(m.getDate()) <= 1 year ) {
        mortgagesThisYear.add(m);
      }
    }
    

    Find all mortgages in the last year
    

    更重要的是,银行家可以基于一种“无处不在的语言”(一种通用的领域语言,使程序员和银行家更容易沟通)构建这些查询。

    备用DSL的用途非常具体,而不是一般用途。语言更具表现力,语法更为宽松,与领域的关联性更强。

        2
  •  0
  •   The0retico    16 年前

    外部DSL的缺点不适用于使用代码生成和代沟模式实现的外部DSL。然后通过使用的一种通用语言进行接口。 实际上,内部DSL还有很多缺点,比如没有好的可读的显式结构、糟糕的实践编码、有限的具体语法可能性、没有工具支持、很难或不可能实现特定领域的验证,以及在DSL实现过于脚本化时与其他代码的接口问题。