pap*_*del 12 dsl ruby-on-rails
最近,当我试图解释为什么Ruby on Rails是我所在组织的实习生的特定领域语言(DSL)时,我无法清楚地表达我想要的效果.也许我不太了解这个空间来教导细微差别.将他重定向到马丁福勒的文章或谷歌排名的一个InfoQ或其他材料也没有多大帮助.
有人可以解释为什么Rails是一个具有示例/并行情况的DSL,对于那些对代码世界来说相当新的人来说,这不是巫毒的东西吗?理解意识形态也可能有助于详细阐述铁路生态系统的复杂性?
Kat*_*one 13
从技术上讲,ruby不是DSL,它只是非常干净地编写内部DSL.这个链接到Martin的Fowler的博客维基应该有助于澄清事情.
Rails被描述为DSL虽然我更准确地认为它是一个很好地利用一些DSL的框架.
编辑:Martin Fowler的DSL书的公开版介绍有一个激励性的例子,虽然它仍然针对程序员更多.
再次编辑:如果您指出ruby允许ruby代码看起来像"voodoo"示例可能很有用
port 2001
respond :resource=>"/hello" do |request, response|
response.body = "<message>hello</message>"
end
Run Code Online (Sandbox Code Playgroud)
这比直接调用方法更干净.实现DSL可能需要"voodoo"之类的代码(创建DSL要比使用DSL 要困难得多),而且一般来说,编码相对较新的人应首先担心DSL的功能,而不是如何实现.
是什么让ruby擅长内部DSL包括(1)使用块(任何具有干净闭包的语言都具有此优势),(2)不需要括号的方法类,以及(3)能够动态修改类的能力(是什么validates).可能还有更多我没有想过的.
| 归档时间: |
|
| 查看次数: |
6110 次 |
| 最近记录: |