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

前端之家收集整理的这篇文章主要介绍了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)能够在运行中修改类是什么验证)可能我还没有想到.

猜你在找的Ruby相关文章