Groovy vs Scala的内部DSL

问题描述:

我将为JVM创建一个内部DSL。我发现Scala和Groovy是这项任务的最佳人选。我发现Groovy脚本不太详细,默认情况下使用BigDecimal,而Scala具有良好的类型推断系统。这些语言在内部DSL环境中还有什么其他差异?Groovy vs Scala的内部DSL

编辑:最后我挑的Groovy和DSL的发展一年后它似乎是正确的选择:我可以从类型推断和静态类型在Groovy 2.0中获益,仍然需要,方法时,使用动态类型/ properties dispatch handlers work great,ASTTransforation允许我改变语言语义,eclipse的groovy插件和IDEA对Groovy DSL提供了开箱即用的支持,并且DSL语法比在Scala中更加简洁。虽然仍有一些改进的余地,但一些动态功能并不总能按我的预期工作。

+7

Groovy和Scala是完全不同的东西 - 除了类型推理之外,Scala实际上有类型,而Groovy是一种动态脚本语言。这可能会帮助您了解DSL的应用和目标。一般来说,尽管如此,我会说几乎所有的大型应用程序都使用Scala而不是Groovy。 – Janx 2011-04-30 04:10:51

+4

你可以看[采访Debasish Ghosh](http://www.infoq.com/interviews/ghosh-dsls)。它可以对你有所帮助。您也可能对他的书[DSLs in Action]感兴趣(http://www.manning.com/ghosh/)。 – tenshi 2011-04-30 14:12:50

+0

@简单的感谢,这是相当有帮助 – Nutel 2011-05-01 18:22:20

我对Scala中的DSL没有经验,但我可以说Groovy通过元对象协议的动态特性使其非常适合DSL。我发现this series在Groovy中检查DSL时很有用。您可能还想看看Martin Fowler's page,其中包含有关该主题的书的链接。

很多Groovy DSL goodness被添加到1.8中。

Groovy是一个很好的开始。

看看Gradle。这是用Groovy编写的构建工具,构建语言是DSL。

我一直在研究DSL测试斯卡拉。我认为你最终会在Scala中编写更多的解释代码(类型转换等),但是一旦你有没有理由说你的DSL应该或多或少是冗长的。回报是(一旦IDE赶上),你将有代码完成来帮助你写Scala DSL。

斯卡拉模式匹配在编写解释代码方面也是一个巨大的胜利。

+1

真的,这个答案后18个月随机downvote? WTF在这个地方继续? – 2012-12-10 12:23:17

+0

另一个。 SO曾经是一个不错的地方 – 2013-08-18 20:48:49

+0

你为什么选择一个内部的DSL over'external'('parser combinators')? [出于好奇而不是分歧] – 2014-01-14 01:39:32