<?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"
	>
<channel>
	<title>Comments on: Introduction to Domain Specific Languages</title>
	<atom:link href="http://jaortega.wordpress.com/2007/10/07/introduction-to-domain-specific-languages/feed/" rel="self" type="application/rss+xml" />
	<link>http://jaortega.wordpress.com/2007/10/07/introduction-to-domain-specific-languages/</link>
	<description>random thoughts on programming and programming languages</description>
	<pubDate>Sat, 19 Jul 2008 03:08:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
		<item>
		<title>By: esteve</title>
		<link>http://jaortega.wordpress.com/2007/10/07/introduction-to-domain-specific-languages/#comment-27731</link>
		<dc:creator>esteve</dc:creator>
		<pubDate>Mon, 22 Oct 2007 22:06:10 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/10/07/introduction-to-domain-specific-languages/#comment-27731</guid>
		<description>DSL's are something that we're rediscovering (again), pretty much everything is being reintroduced after someone spots it on an "ancient" book, take for example garbage collectors or lambda expressions in Lisp.

Using a DSL for solving a very particular task is fine, however, we programmers want to have the power to do anything under our fingertips. That is, DSL's should allow you to do anything, but using a particular syntax that enables you to write specific programs more easily. Take for example Boost.Spirit or Boost.Python. As you already know, C++ is a complex language that offers you a lot of goodies, but using standard C++ to build a Lex/Yacc parser is a bit cumbersome. Luckily you can abuse from some of its features (namely operator overload) to build something as cool as Boost.Spirit, which allows you to write inline Lex-like syntaxes.

By the way, if you plan to give some scriptable feature to your application, ensure that you're giving a "Real language (tm)". &lt;a href="http://www.advogato.org/article/550.html" rel="nofollow"&gt;Transcending Language Bias in Scriptable Applications&lt;/a&gt; is an old (but fine) article about this, and I'm sure you'll like the Emacs/Lisp reference ;-)</description>
		<content:encoded><![CDATA[<p>DSL&#8217;s are something that we&#8217;re rediscovering (again), pretty much everything is being reintroduced after someone spots it on an &#8220;ancient&#8221; book, take for example garbage collectors or lambda expressions in Lisp.</p>
<p>Using a DSL for solving a very particular task is fine, however, we programmers want to have the power to do anything under our fingertips. That is, DSL&#8217;s should allow you to do anything, but using a particular syntax that enables you to write specific programs more easily. Take for example Boost.Spirit or Boost.Python. As you already know, C++ is a complex language that offers you a lot of goodies, but using standard C++ to build a Lex/Yacc parser is a bit cumbersome. Luckily you can abuse from some of its features (namely operator overload) to build something as cool as Boost.Spirit, which allows you to write inline Lex-like syntaxes.</p>
<p>By the way, if you plan to give some scriptable feature to your application, ensure that you&#8217;re giving a &#8220;Real language &#8482;&#8221;. <a href="http://www.advogato.org/article/550.html" rel="nofollow">Transcending Language Bias in Scriptable Applications</a> is an old (but fine) article about this, and I&#8217;m sure you&#8217;ll like the Emacs/Lisp reference <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
</channel>
</rss>
