<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Rails: Not a DSL</title>
	<atom:link href="http://nutrun.com/weblog/rails-not-a-dsl/feed/" rel="self" type="application/rss+xml" />
	<link>http://nutrun.com/weblog/rails-not-a-dsl/</link>
	<description>nutrun</description>
	<lastBuildDate>Fri, 08 Jan 2010 06:54:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: New and Notable 110 : Sam Gentile's Blog</title>
		<link>http://nutrun.com/weblog/rails-not-a-dsl/comment-page-1/#comment-1289</link>
		<dc:creator>New and Notable 110 : Sam Gentile's Blog</dc:creator>
		<pubDate>Thu, 04 Dec 2008 22:23:06 +0000</pubDate>
		<guid isPermaLink="false">http://new-site.nutrun.com/?p=37#comment-1289</guid>
		<description>[...] Rails Not a DSL or Ruby a DSL? [...]</description>
		<content:encoded><![CDATA[<p>[...] Rails Not a DSL or Ruby a DSL? [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom</title>
		<link>http://nutrun.com/weblog/rails-not-a-dsl/comment-page-1/#comment-138</link>
		<dc:creator>Tom</dc:creator>
		<pubDate>Fri, 21 Jul 2006 22:07:45 +0000</pubDate>
		<guid isPermaLink="false">http://new-site.nutrun.com/?p=37#comment-138</guid>
		<description>Thanks for the link, Marco.</description>
		<content:encoded><![CDATA[<p>Thanks for the link, Marco.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike H</title>
		<link>http://nutrun.com/weblog/rails-not-a-dsl/comment-page-1/#comment-137</link>
		<dc:creator>Mike H</dc:creator>
		<pubDate>Fri, 21 Jul 2006 22:03:31 +0000</pubDate>
		<guid isPermaLink="false">http://new-site.nutrun.com/?p=37#comment-137</guid>
		<description>I don&#039;t think anyone is saying Rails IS a DSL.  What they are saying is that Rails utilizes a DSL or DSLs in it to do certain things, such as the example from paul in a previous comment.

That leads into the question: what the hell is a DSL?  Isn&#039;t that too general to be a DSL?  Isn&#039;t everything then a DSL?

Well .... yes.  Obviously, DSL has become a buzzword, and is widly overused.  However, for me, I find it helpful to think of the &quot;DSL Concept&quot; not as a script definition of a thing, but as a general concept that is applicable (sometimes) to how I write code and/or anything textual and client facing.

To me, it has elements of LISP = Programmable Programming Language, (in that I try and write lower level code that eventually enables me to write code and think in a higher level domain), treating code as language (where appropriate) and other related concepts.  If you stick to getting a Webster&#039;s definition of DSL, you&#039;ll never get anywhere and you won&#039;t get any benefit.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t think anyone is saying Rails IS a DSL.  What they are saying is that Rails utilizes a DSL or DSLs in it to do certain things, such as the example from paul in a previous comment.</p>
<p>That leads into the question: what the hell is a DSL?  Isn&#8217;t that too general to be a DSL?  Isn&#8217;t everything then a DSL?</p>
<p>Well &#8230;. yes.  Obviously, DSL has become a buzzword, and is widly overused.  However, for me, I find it helpful to think of the &#8220;DSL Concept&#8221; not as a script definition of a thing, but as a general concept that is applicable (sometimes) to how I write code and/or anything textual and client facing.</p>
<p>To me, it has elements of LISP = Programmable Programming Language, (in that I try and write lower level code that eventually enables me to write code and think in a higher level domain), treating code as language (where appropriate) and other related concepts.  If you stick to getting a Webster&#8217;s definition of DSL, you&#8217;ll never get anywhere and you won&#8217;t get any benefit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marco Abis</title>
		<link>http://nutrun.com/weblog/rails-not-a-dsl/comment-page-1/#comment-136</link>
		<dc:creator>Marco Abis</dc:creator>
		<pubDate>Thu, 20 Jul 2006 10:30:35 +0000</pubDate>
		<guid isPermaLink="false">http://new-site.nutrun.com/?p=37#comment-136</guid>
		<description>Tom take a look at &quot;A rationale for semantically enhanced library languages&quot; by Bjarne Stroustrup

&quot;A Semantically Enhanced Library Language (a SEL language or a SELL) is a dialect created by supersetting a language using a library and then subsetting the result using a tool that “understands” the syntax and semantics of both the underlying language and the library&quot;

http://public.research.att.com/~bs/SELLrationale.pdf</description>
		<content:encoded><![CDATA[<p>Tom take a look at &#8220;A rationale for semantically enhanced library languages&#8221; by Bjarne Stroustrup</p>
<p>&#8220;A Semantically Enhanced Library Language (a SEL language or a SELL) is a dialect created by supersetting a language using a library and then subsetting the result using a tool that “understands” the syntax and semantics of both the underlying language and the library&#8221;</p>
<p><a href="http://public.research.att.com/~bs/SELLrationale.pdf" rel="nofollow">http://public.research.att.com/~bs/SELLrationale.pdf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Ingles</title>
		<link>http://nutrun.com/weblog/rails-not-a-dsl/comment-page-1/#comment-135</link>
		<dc:creator>Paul Ingles</dc:creator>
		<pubDate>Tue, 18 Jul 2006 20:32:08 +0000</pubDate>
		<guid isPermaLink="false">http://new-site.nutrun.com/?p=37#comment-135</guid>
		<description>D&#039;oh, it missed my code snippet:

    class Customer &lt; Content
      has_many :orders, :dependent =&gt; true
    end</description>
		<content:encoded><![CDATA[<p>D&#8217;oh, it missed my code snippet:</p>
<p>    class Customer &#38;lt; Content<br />
      has_many :orders, :dependent =&#38;gt; true<br />
    end</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Ingles</title>
		<link>http://nutrun.com/weblog/rails-not-a-dsl/comment-page-1/#comment-134</link>
		<dc:creator>Paul Ingles</dc:creator>
		<pubDate>Tue, 18 Jul 2006 20:30:52 +0000</pubDate>
		<guid isPermaLink="false">http://new-site.nutrun.com/?p=37#comment-134</guid>
		<description>Nice post George, only just spotted it tonight.

However, I do think that Rails could be considered to contain lots of little DSLs. Matt&#039;s point about it still being Ruby grammar, just easy to read is valid. But then what&#039;s language after all? If Ruby is generous enough to let you write in a very open-ended way, it&#039;s just it provides you with more options.

For instance, would you not say Rails&#039; ActiveRecord provides a good DSL for the expression of a data model?

I.e.:

class Customer  true
end

Although you&#039;re still at the whim of Ruby syntax (i.e. the exploitation of hashes and symbols), it&#039;s still an attempt to provide language natural domain to better let you express intent. Admittedly, that&#039;s with other developers, but that doesn&#039;t mean we&#039;re less important right?

I agree that there&#039;s a risk that too many things could be considered DSLs, but I think thats possibly because its a wide-term, what&#039;s important is the value and usefulness. Does Rails provide language-like extensions that better let you express the problems of the domain?

My own feeling is that it does, but I do agree that the bluriness between fluent interface-esque designs and DSLs is blurry, but should we be worried about that? Why can&#039;t they be talking about the same thing? Fundamentally to me they&#039;re all focused on trying to make it easier to communicate and that&#039;s something I&#039;m in favour of, whatever form :)</description>
		<content:encoded><![CDATA[<p>Nice post George, only just spotted it tonight.</p>
<p>However, I do think that Rails could be considered to contain lots of little DSLs. Matt&#8217;s point about it still being Ruby grammar, just easy to read is valid. But then what&#8217;s language after all? If Ruby is generous enough to let you write in a very open-ended way, it&#8217;s just it provides you with more options.</p>
<p>For instance, would you not say Rails&#8217; ActiveRecord provides a good DSL for the expression of a data model?</p>
<p>I.e.:</p>
<p>class Customer  true<br />
end</p>
<p>Although you&#8217;re still at the whim of Ruby syntax (i.e. the exploitation of hashes and symbols), it&#8217;s still an attempt to provide language natural domain to better let you express intent. Admittedly, that&#8217;s with other developers, but that doesn&#8217;t mean we&#8217;re less important right?</p>
<p>I agree that there&#8217;s a risk that too many things could be considered DSLs, but I think thats possibly because its a wide-term, what&#8217;s important is the value and usefulness. Does Rails provide language-like extensions that better let you express the problems of the domain?</p>
<p>My own feeling is that it does, but I do agree that the bluriness between fluent interface-esque designs and DSLs is blurry, but should we be worried about that? Why can&#8217;t they be talking about the same thing? Fundamentally to me they&#8217;re all focused on trying to make it easier to communicate and that&#8217;s something I&#8217;m in favour of, whatever form :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://nutrun.com/weblog/rails-not-a-dsl/comment-page-1/#comment-133</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Sun, 16 Jul 2006 22:15:11 +0000</pubDate>
		<guid isPermaLink="false">http://new-site.nutrun.com/?p=37#comment-133</guid>
		<description>Really, though, any code which is expressive enough can be considered a domain specific language.

To answer Luke&#039;s question - not all APIs can be used in a DSL, but often crafting a DSL is really just API design. I just wrote a DSL for time calculations - it is just a series of wrappers around a pre-existing Ruby time library, but it reads like English.

On the question of, &quot;Is Rails a DSL?&quot;, I&#039;d be inclined to answer, &quot;Sometimes&quot; because much of a Rails application&#039;s code could be understood by domain experts, with only a little walk through help from the programmer. That is not something you can say about most frameworks.</description>
		<content:encoded><![CDATA[<p>Really, though, any code which is expressive enough can be considered a domain specific language.</p>
<p>To answer Luke&#8217;s question &#8211; not all APIs can be used in a DSL, but often crafting a DSL is really just API design. I just wrote a DSL for time calculations &#8211; it is just a series of wrappers around a pre-existing Ruby time library, but it reads like English.</p>
<p>On the question of, &#8220;Is Rails a DSL?&#8221;, I&#8217;d be inclined to answer, &#8220;Sometimes&#8221; because much of a Rails application&#8217;s code could be understood by domain experts, with only a little walk through help from the programmer. That is not something you can say about most frameworks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luke Francl</title>
		<link>http://nutrun.com/weblog/rails-not-a-dsl/comment-page-1/#comment-132</link>
		<dc:creator>Luke Francl</dc:creator>
		<pubDate>Fri, 14 Jul 2006 20:51:03 +0000</pubDate>
		<guid isPermaLink="false">http://new-site.nutrun.com/?p=37#comment-132</guid>
		<description>&quot;DSL&quot; was on everyone&#039;s lips at RailsConf and it really had me wondering -- what, exactly, is a DSL? The examples shown had me wondering, what&#039;s the difference between an API and a DSL?

It seems to me that a domain specific language should require some restricted grammar which could be described by BNF and you could use a parser-generator to generate a parser for that DSL. Or, if you love pain, you could use regexps.

But if it&#039;s just method calls with nicely named parameters, that seems to be pushing it a little.

I think DSL term has aquired something like buzzword status in the Ruby community. Not that good work isn&#039;t being done, but it seems too widely used.</description>
		<content:encoded><![CDATA[<p>&#8220;DSL&#8221; was on everyone&#8217;s lips at RailsConf and it really had me wondering &#8212; what, exactly, is a DSL? The examples shown had me wondering, what&#8217;s the difference between an API and a DSL?</p>
<p>It seems to me that a domain specific language should require some restricted grammar which could be described by BNF and you could use a parser-generator to generate a parser for that DSL. Or, if you love pain, you could use regexps.</p>
<p>But if it&#8217;s just method calls with nicely named parameters, that seems to be pushing it a little.</p>
<p>I think DSL term has aquired something like buzzword status in the Ruby community. Not that good work isn&#8217;t being done, but it seems too widely used.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://nutrun.com/weblog/rails-not-a-dsl/comment-page-1/#comment-131</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Fri, 14 Jul 2006 17:12:56 +0000</pubDate>
		<guid isPermaLink="false">http://new-site.nutrun.com/?p=37#comment-131</guid>
		<description>&quot;A DSL is somewhere between a tiny programming language and a scripting language, and is often used in a way analogous to a programming library.&quot;

http://en.wikipedia.org/wiki/Domain_Specific_Language</description>
		<content:encoded><![CDATA[<p>&#8220;A DSL is somewhere between a tiny programming language and a scripting language, and is often used in a way analogous to a programming library.&#8221;</p>
<p><a href="http://en.wikipedia.org/wiki/Domain_Specific_Language" rel="nofollow">http://en.wikipedia.org/wiki/Domain_Specific_Language</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom</title>
		<link>http://nutrun.com/weblog/rails-not-a-dsl/comment-page-1/#comment-130</link>
		<dc:creator>Tom</dc:creator>
		<pubDate>Fri, 14 Jul 2006 15:45:48 +0000</pubDate>
		<guid isPermaLink="false">http://new-site.nutrun.com/?p=37#comment-130</guid>
		<description>But don&#039;t forget the very traditional adage that &lt;a href=&quot;http://www.pragmaticprogrammer.com/ppllc/papers/1998_03.html&quot; rel=&quot;nofollow&quot;&gt;&quot;library design is language design&quot;&lt;/a&gt; (from Stroustrup in his C++ book). Languages like C++ or more so Ruby or more so Scala (or more so Lisp?) make this a fairly meaningful statement. I prefer the ease of use and consistency from Ruby over the concepts shared by JetBrains.</description>
		<content:encoded><![CDATA[<p>But don&#8217;t forget the very traditional adage that <a href="http://www.pragmaticprogrammer.com/ppllc/papers/1998_03.html" rel="nofollow">&#8220;library design is language design&#8221;</a> (from Stroustrup in his C++ book). Languages like C++ or more so Ruby or more so Scala (or more so Lisp?) make this a fairly meaningful statement. I prefer the ease of use and consistency from Ruby over the concepts shared by JetBrains.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
