ruby-on-rails – 为什么Ruby on Rails被称为域专用语言?

最近,当我试图解释为什么 Ruby on Rails是一个领域专用语言(DSL)到我组织的实习生时,我无法表达我的推理,我想要的结果.也许我不明白这个空间足以教导细微差别.将他重定向到Martin Fowler的 article或Google排名第一的InfoQ或其他资料也没有太大帮助.

有些可以解释为什么Rails是一个DSL的例子/并行的情况,这不是一个相当新的代码世界的人的巫术的东西?了解意识形态还有助于阐述轨道生态系统的复杂性?

解决方法

技术上来说,ruby不是DSL,它只是非常干净地编写内部DSLs.马丁的Fowler的博客wiki This link将有助于澄清事情.

Rails已经被描述为DSL,尽管我更确切地将其作为一个框架,使得很好的使用几个DSL.

编辑:intro to the public version of Martin Fowler’s DSL book一个激励的例子,虽然它仍然针对程序员更多.

再次编辑:如果你指出ruby允许ruby代码看起来像“voodoo”的例子可以是有用的

port 2001

respond :resource=>"/hello" do  |request,response|
  response.body = "<message>hello</message>"
end

这比直接调用方法更干净.实现DSL可能需要像代码一样的“voodoo”(创建DSL比使用DSL更困难),而且一般来说,相对较新的编码的人应该首先关心DSL的功能,而不是如此实现它.

什么使Ruby在内部DSL方面有好处包括(1)使用块(任何具有干净关闭的语言都具有此优点),(2)不需要括号的方法类,以及(3)能够在运行中修改类是什么验证)可能我还没有想到.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...