<?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: The secret problem with DSLs</title>
	<atom:link href="http://codemonkeyism.com/the-secret-problem-with-dsls/feed/" rel="self" type="application/rss+xml" />
	<link>http://codemonkeyism.com/the-secret-problem-with-dsls/</link>
	<description></description>
	<lastBuildDate>Wed, 09 May 2012 22:39:34 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-185861</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Thu, 23 Oct 2008 09:12:55 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-185861</guid>
		<description>Comment from Tim deleted.</description>
		<content:encoded><![CDATA[<p>Comment from Tim deleted.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-180317</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Tue, 14 Oct 2008 17:26:13 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-180317</guid>
		<description>@Twylite: Yes your&#039;re right, that&#039;s the way it should be. Two comments

1.) People don&#039;t do that (see most of the DSL stories and examples in the blogosphere)
2.) Developers write most DSLs for themselves (admin, deployment, storage, ...) and consider themself an expert in the domain

It&#039;s more like: Your assumption about bug fixing is wrong, developers should think and be careful and not write bugs =&gt; q.e.d. no bugfixing needed. 

Looks good but is not what happens in the real world.

And it&#039;s the same with DSLs from my point of view.

I forgot :-)

3.) &quot;DSLs to describe privacy policies for healthcare should be designed by privacy &amp; healthcare professionals.&quot; 

There have been several articles that DSL don&#039;t work with professionals. I was project lead of a research project which went into (visual) domain and flow models for professionals where we talked to business analysts about their experiences. In the end developers or businesss analysts design the flow models and domains because professionals just don&#039;t care. Either they want you to solve the problem or cannot think abstract enough. Just my 0.02c.

And

4.) The professionals can give input about the domain, they can&#039;t design the language. As a DSL &lt;b&gt;is&lt;/b&gt; a programming language, you need programming language design skills. </description>
		<content:encoded><![CDATA[<p>@Twylite: Yes your&#8217;re right, that&#8217;s the way it should be. Two comments</p>
<p>1.) People don&#8217;t do that (see most of the DSL stories and examples in the blogosphere)<br />
2.) Developers write most DSLs for themselves (admin, deployment, storage, &#8230;) and consider themself an expert in the domain</p>
<p>It&#8217;s more like: Your assumption about bug fixing is wrong, developers should think and be careful and not write bugs => q.e.d. no bugfixing needed. </p>
<p>Looks good but is not what happens in the real world.</p>
<p>And it&#8217;s the same with DSLs from my point of view.</p>
<p>I forgot :-)</p>
<p>3.) &#8220;DSLs to describe privacy policies for healthcare should be designed by privacy &#038; healthcare professionals.&#8221; </p>
<p>There have been several articles that DSL don&#8217;t work with professionals. I was project lead of a research project which went into (visual) domain and flow models for professionals where we talked to business analysts about their experiences. In the end developers or businesss analysts design the flow models and domains because professionals just don&#8217;t care. Either they want you to solve the problem or cannot think abstract enough. Just my 0.02c.</p>
<p>And</p>
<p>4.) The professionals can give input about the domain, they can&#8217;t design the language. As a DSL <b>is</b> a programming language, you need programming language design skills. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Twylite</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-180228</link>
		<dc:creator>Twylite</dc:creator>
		<pubDate>Tue, 14 Oct 2008 13:58:48 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-180228</guid>
		<description>The flawed assumption is that programmers will be designing the DSL.  A DSL should be designed by an expert in the domain (with assistance from a programmer who ideally has some language design skills).

DSLs to describe actuarial, financial or economic computations should be designed by actuaries, accountants or economists; not by programmers.  DSLs to describe privacy policies for healthcare should be designed by privacy &amp; healthcare professionals.  A DSL for configuring a firewall should be designed by a network administrator.

A DSL is quite simple a grammatic interface instead of a GUI, providing functionality relevant to users in a specific domain.</description>
		<content:encoded><![CDATA[<p>The flawed assumption is that programmers will be designing the DSL.  A DSL should be designed by an expert in the domain (with assistance from a programmer who ideally has some language design skills).</p>
<p>DSLs to describe actuarial, financial or economic computations should be designed by actuaries, accountants or economists; not by programmers.  DSLs to describe privacy policies for healthcare should be designed by privacy &amp; healthcare professionals.  A DSL for configuring a firewall should be designed by a network administrator.</p>
<p>A DSL is quite simple a grammatic interface instead of a GUI, providing functionality relevant to users in a specific domain.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nadeem Bitar</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-178837</link>
		<dc:creator>Nadeem Bitar</dc:creator>
		<pubDate>Sun, 12 Oct 2008 16:48:21 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-178837</guid>
		<description>Look at  the &lt;a href=&quot;http://www.jscience.org/&quot; rel=&quot;nofollow&quot;&gt;JScience API&lt;/a&gt; which is considered a good API. The designers leveraged static imports and generics to design what is considered an elegant Java API. 

What is easier to design, use and maintain?

&lt;code&gt;
Amount m1 = Amount.valueOf(3, KILO(GRAM));  
Amount m2 = Amount.valueOf(2, KILO(GRAM));  
Amount sum = m1.plus(m2); 
&lt;/code&gt;

or 

&lt;code&gt;
3.kg   2.kg
&lt;/code&gt;

The first example uses the JScience API directly and the second uses a DSL built on top of that api using groovy.</description>
		<content:encoded><![CDATA[<p>Look at  the <a href="http://www.jscience.org/" rel="nofollow">JScience API</a> which is considered a good API. The designers leveraged static imports and generics to design what is considered an elegant Java API. </p>
<p>What is easier to design, use and maintain?</p>
<p><code><br />
Amount m1 = Amount.valueOf(3, KILO(GRAM));<br />
Amount m2 = Amount.valueOf(2, KILO(GRAM));<br />
Amount sum = m1.plus(m2);<br />
</code></p>
<p>or </p>
<p><code><br />
3.kg   2.kg<br />
</code></p>
<p>The first example uses the JScience API directly and the second uses a DSL built on top of that api using groovy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: markus</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-178712</link>
		<dc:creator>markus</dc:creator>
		<pubDate>Sun, 12 Oct 2008 06:02:39 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-178712</guid>
		<description>&quot;OK, Ruby has a little metamagic -but I still contend most of the Ruby DSLs are still just APIs.&quot;

Do you imply that &quot;metamagic&quot; is needed to do a DSL?

For me a DSL is practical and close to the problem. It is &quot;logical&quot;. An API often is not logical, the intent can be confusing.

The best DSLs I saw were done for games. Games seem to be great for evolving a DSL.

And as long as a DSL stays elegant, it is the right way to do it.</description>
		<content:encoded><![CDATA[<p>&#8220;OK, Ruby has a little metamagic -but I still contend most of the Ruby DSLs are still just APIs.&#8221;</p>
<p>Do you imply that &#8220;metamagic&#8221; is needed to do a DSL?</p>
<p>For me a DSL is practical and close to the problem. It is &#8220;logical&#8221;. An API often is not logical, the intent can be confusing.</p>
<p>The best DSLs I saw were done for games. Games seem to be great for evolving a DSL.</p>
<p>And as long as a DSL stays elegant, it is the right way to do it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gabe</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-178706</link>
		<dc:creator>Gabe</dc:creator>
		<pubDate>Sun, 12 Oct 2008 05:27:17 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-178706</guid>
		<description>Gotta agree with Rick on this one.  I think a useful definition of DSL would be something like what he is hinting at here, but unfortunately people don&#039;t apply any such rigorous definition.  As it stands, DSL is just a overused buzzword for a library written in a language with more flexibility than Java.  As such I think the real not-so-secret problem with DSLs is that people claiming to be writing them may very well be writing code that is unnecessarily clever and thus less maintainable, extendable or useful then it would be if written as a straightforward API.</description>
		<content:encoded><![CDATA[<p>Gotta agree with Rick on this one.  I think a useful definition of DSL would be something like what he is hinting at here, but unfortunately people don&#8217;t apply any such rigorous definition.  As it stands, DSL is just a overused buzzword for a library written in a language with more flexibility than Java.  As such I think the real not-so-secret problem with DSLs is that people claiming to be writing them may very well be writing code that is unnecessarily clever and thus less maintainable, extendable or useful then it would be if written as a straightforward API.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Radetsky</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-178693</link>
		<dc:creator>Daniel Radetsky</dc:creator>
		<pubDate>Sun, 12 Oct 2008 04:14:54 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-178693</guid>
		<description>Well, no.

If a problem is sufficiently hairy that a DSL seems necessary or a good idea to solve it, then it will be difficult to find someone talented enough to solve it at all, whether you use a DSL or not. The question is, do we expect that DSLs will tend to improve the ability of someone with a given amount of talent to solve the problem or not? If we expect that their ability to solve the problem increases, then this is not a secret problem with DSLs, it is a secret problem with problems hard enough to merit a DSL.</description>
		<content:encoded><![CDATA[<p>Well, no.</p>
<p>If a problem is sufficiently hairy that a DSL seems necessary or a good idea to solve it, then it will be difficult to find someone talented enough to solve it at all, whether you use a DSL or not. The question is, do we expect that DSLs will tend to improve the ability of someone with a given amount of talent to solve the problem or not? If we expect that their ability to solve the problem increases, then this is not a secret problem with DSLs, it is a secret problem with problems hard enough to merit a DSL.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rick</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-178546</link>
		<dc:creator>Rick</dc:creator>
		<pubDate>Sat, 11 Oct 2008 21:22:27 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-178546</guid>
		<description>I think the &quot;secret&quot; problem with DSLs are the people that don&#039;t understand that the &quot;DSL&quot;s that people create with Ruby, Scala, etc...are just really APIs.

I don&#039;t consider it a DSL unless you&#039;ve got macros or some other mechanism to hook into the compiler pipeline.  OK, Ruby has a little metamagic -but I still contend most of the Ruby DSLs are still just APIs.</description>
		<content:encoded><![CDATA[<p>I think the &#8220;secret&#8221; problem with DSLs are the people that don&#8217;t understand that the &#8220;DSL&#8221;s that people create with Ruby, Scala, etc&#8230;are just really APIs.</p>
<p>I don&#8217;t consider it a DSL unless you&#8217;ve got macros or some other mechanism to hook into the compiler pipeline.  OK, Ruby has a little metamagic -but I still contend most of the Ruby DSLs are still just APIs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John D. Mitchell</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-178497</link>
		<dc:creator>John D. Mitchell</dc:creator>
		<pubDate>Sat, 11 Oct 2008 16:32:29 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-178497</guid>
		<description>Re: API vs. DSL design

Doing either of them well is hard.  The key of the problem is that programmers have a lot of experience using and writing APIs but very little in writing and evolving languages.  Of course, most APIs suck, too.

Another facet of the problem is that APIs have much more wiggle room than most languages do.  I.e., the purpose of most DSLs is precisely to make things simpler by constraining/reducing the thought model of the programmer down so that it&#039;s more clear/faster to write/etc.

Also, I think that there&#039;s a lot more examples of bad languages than good so it&#039;s harder to pick up the &quot;how to do this well&quot; than for APIs.

Finally, IMHO and IME, designing good APIs and languages are fundamentally the same game, just manifested in different ways.</description>
		<content:encoded><![CDATA[<p>Re: API vs. DSL design</p>
<p>Doing either of them well is hard.  The key of the problem is that programmers have a lot of experience using and writing APIs but very little in writing and evolving languages.  Of course, most APIs suck, too.</p>
<p>Another facet of the problem is that APIs have much more wiggle room than most languages do.  I.e., the purpose of most DSLs is precisely to make things simpler by constraining/reducing the thought model of the programmer down so that it&#8217;s more clear/faster to write/etc.</p>
<p>Also, I think that there&#8217;s a lot more examples of bad languages than good so it&#8217;s harder to pick up the &#8220;how to do this well&#8221; than for APIs.</p>
<p>Finally, IMHO and IME, designing good APIs and languages are fundamentally the same game, just manifested in different ways.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Taylor Gautier</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-178122</link>
		<dc:creator>Taylor Gautier</dc:creator>
		<pubDate>Sat, 11 Oct 2008 01:14:06 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-178122</guid>
		<description>right on.  couldn&#039;t agree more.  i&#039;m so sick of hearing how dsls, tdd, ddd, and the rest of the lot are going to save all of us from bad programming.  bah.  there&#039;s no panaceas.</description>
		<content:encoded><![CDATA[<p>right on.  couldn&#8217;t agree more.  i&#8217;m so sick of hearing how dsls, tdd, ddd, and the rest of the lot are going to save all of us from bad programming.  bah.  there&#8217;s no panaceas.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-177961</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Fri, 10 Oct 2008 19:32:01 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-177961</guid>
		<description>Nevertheless it&#039;s a programming language.</description>
		<content:encoded><![CDATA[<p>Nevertheless it&#8217;s a programming language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Caligula</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-177958</link>
		<dc:creator>Caligula</dc:creator>
		<pubDate>Fri, 10 Oct 2008 19:08:03 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-177958</guid>
		<description>A DSL doesn&#039;t need to be a &quot;real&quot;, complete language--it can just be a simplified way to access the problem domain.</description>
		<content:encoded><![CDATA[<p>A DSL doesn&#8217;t need to be a &#8220;real&#8221;, complete language&#8211;it can just be a simplified way to access the problem domain.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-177002</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Thu, 09 Oct 2008 04:38:53 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-177002</guid>
		<description>@Nadeem: Hmm. I have the feeling that designing a DSL is harder than designing an API. There are more combinations of building blocks in a DSL than an API. Perhaps you&#039;re right though, designing an API is hard (I currently read the excellent &quot;Practical API Design&quot; and it is really really hard to desgin a good API.).</description>
		<content:encoded><![CDATA[<p>@Nadeem: Hmm. I have the feeling that designing a DSL is harder than designing an API. There are more combinations of building blocks in a DSL than an API. Perhaps you&#8217;re right though, designing an API is hard (I currently read the excellent &#8220;Practical API Design&#8221; and it is really really hard to desgin a good API.).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-177001</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Thu, 09 Oct 2008 04:36:12 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-177001</guid>
		<description>@lumpynose: No, I think their languages would be better if they are better language designers. Not sure how they could get better - reading more would help perhaps. And thinking really hard about the users of their language.</description>
		<content:encoded><![CDATA[<p>@lumpynose: No, I think their languages would be better if they are better language designers. Not sure how they could get better &#8211; reading more would help perhaps. And thinking really hard about the users of their language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lumpynose</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-176921</link>
		<dc:creator>lumpynose</dc:creator>
		<pubDate>Thu, 09 Oct 2008 01:12:56 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-176921</guid>
		<description>That&#039;s an interesting idea; do you think their DSLs would be better if they used a real language builder, instead of these embedded or hosted DSLs?  In other words, use something like Antlr, bison &amp; flex, javacc, etc. to build a real DSL?  Those tools would require more rigor in designing the language.

I&#039;ve always been irritated with the term DSL since it implies, nay states, that it&#039;s a DOMAIN SPECIFIC language.  If it was really domain specific you wouldn&#039;t be able to revert to the host language, and the error messages would be specific (there&#039;s that word again) to the DSL, not the host language.</description>
		<content:encoded><![CDATA[<p>That&#8217;s an interesting idea; do you think their DSLs would be better if they used a real language builder, instead of these embedded or hosted DSLs?  In other words, use something like Antlr, bison &amp; flex, javacc, etc. to build a real DSL?  Those tools would require more rigor in designing the language.</p>
<p>I&#8217;ve always been irritated with the term DSL since it implies, nay states, that it&#8217;s a DOMAIN SPECIFIC language.  If it was really domain specific you wouldn&#8217;t be able to revert to the host language, and the error messages would be specific (there&#8217;s that word again) to the DSL, not the host language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nadeem Bitar</title>
		<link>http://codemonkeyism.com/the-secret-problem-with-dsls/comment-page-1/#comment-176735</link>
		<dc:creator>Nadeem Bitar</dc:creator>
		<pubDate>Wed, 08 Oct 2008 18:26:25 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.reposita.org/archives/2008/10/08/the-secret-problem-with-dsls/#comment-176735</guid>
		<description>I would argue that designing a good API is as hard, if not harder, than designing a DSL. A lot of the Java libraries have very bad APIs that are hard to use and remember. If the designers of those libraries have written a DSL for them they would have seen the difficulty in using their respective libraries and improved the DSL over time.</description>
		<content:encoded><![CDATA[<p>I would argue that designing a good API is as hard, if not harder, than designing a DSL. A lot of the Java libraries have very bad APIs that are hard to use and remember. If the designers of those libraries have written a DSL for them they would have seen the difficulty in using their respective libraries and improved the DSL over time.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (user agent is rejected)
Database Caching 3/21 queries in 0.030 seconds using disk
Object Caching 473/473 objects using disk

Served from: codemonkeyism.com @ 2012-05-22 22:19:56 -->
