内部DSL的Groovy vs Scala

时间:2011-04-30 02:46:15

标签: scala groovy dsl

我将为JVM创建一个内部DSL。我看到Scala和Groovy是这项任务的最佳人选。我发现Groovy脚本不那么冗长,默认使用BigDecimal,而Scala有很好的类型推理系统。在内部DSL的背景下,这些语言之间的其他差异是什么?

编辑:最后我选择了Groovy,经过一年的DSL开发,它似乎是正确的选择:我可以从Groovy 2.0中的类型推断和静态类型中受益,并且仍然使用动态类型在需要时,方法/属性调度处理程序工作得很好,ASTTransforation允许我改变语言语义,eclipse的groovy插件和IDEA对Groovy DSL提供开箱即用的支持,并且DSL语法比Scala更简洁。虽然仍有一些改进的空间,因为一些动态功能并不总是如我所料。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:5)

我一直在使用DSL进行Scala测试。我认为你最终会在Scala中编写更多解释代码(类型转换等),但是一旦你有了没有理由你的DSL应该或多或少冗长。回报是(一旦IDE赶上),您将完成代码完成以帮助您在Scala DSL中进行写入。

Scala模式匹配在编写解释代码时也是一个巨大的胜利。

答案 2 :(得分:3)

1.8中添加了很多Groovy DSL goodness

Groovy是一个很好的起点。

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