<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Development At Heart</title>
	<atom:link href="http://ruicurado.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ruicurado.com</link>
	<description>Passionate About Software Development</description>
	<lastBuildDate>Mon, 02 Jan 2012 12:39:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>ABSE and AtomWeaver at the Code Generation Conference 2012</title>
		<link>http://ruicurado.com/2012/01/02/abse-and-atomweaver-at-the-code-generation-conference-2012/</link>
		<comments>http://ruicurado.com/2012/01/02/abse-and-atomweaver-at-the-code-generation-conference-2012/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 12:39:57 +0000</pubDate>
		<dc:creator>Rui Curado</dc:creator>
				<category><![CDATA[ABSE]]></category>
		<category><![CDATA[AtomWeaver]]></category>
		<category><![CDATA[Model-Driven Development]]></category>

		<guid isPermaLink="false">http://ruicurado.com/?p=117</guid>
		<description><![CDATA[Happy New Year! It&#8217;s now 2012 and it&#8217;s time to put ABSE and AtomWeaver on the map. On the model-driven development map, that is. 2012 will be the real dissemination year for the ABSE approach and the AtomWeaver IDE. The take-off year. Well, it should be&#8230; This year, and for the first time, I&#8217;ll be [...]]]></description>
			<content:encoded><![CDATA[<p>Happy New Year!</p>
<p>It&#8217;s now 2012 and it&#8217;s time to put ABSE and AtomWeaver on the map. On the model-driven development map, that is. 2012 will be the real dissemination year for the ABSE approach and the AtomWeaver IDE. The take-off year. Well, it should be&#8230;</p>
<p>This year, and for the first time, I&#8217;ll be attending the <a title="Code Generation Conference" href="http://www.codegeneration.net/cg2012/" target="_blank">Code Generation Conference</a> (CG2012) in Cambridge, the most important European event in this area. As of today, it&#8217;s guaranteed that I will be participating in the <a href="http://www.codegeneration.net/cg2012/LWC-CG2012.php">2nd Language Workbench Challenge</a> (LWC) to be held the day before the conference (March 27).</p>
<p>I&#8217;ve also submitted three speaker proposals for the conference. The accepted speaker results are not out yet, so the presence of ABSE/AtomWeaver could be extended beyond the LWC.</p>
<p>The Language Workbench Challenge was created to compare the strengths and weaknesses of modeling/language workbenches, based on solutions for a predefined set of cases. These cases are accessible to everyone, on the <a title="LWC web site" href="http://www.languageworkbenches.net" target="_blank">LWC web site</a>.</p>
<p>See you at CG2012!</p>
]]></content:encoded>
			<wfw:commentRss>http://ruicurado.com/2012/01/02/abse-and-atomweaver-at-the-code-generation-conference-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Lego Hypothesis: Software Building Blocks</title>
		<link>http://ruicurado.com/2011/07/04/the-lego-hypothesis/</link>
		<comments>http://ruicurado.com/2011/07/04/the-lego-hypothesis/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 09:03:40 +0000</pubDate>
		<dc:creator>Rui Curado</dc:creator>
				<category><![CDATA[ABSE]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://ruicurado.com/?p=113</guid>
		<description><![CDATA[I&#8217;ve been aware for some years now of the &#8220;Lego Hypothesis&#8221;, a software engineering &#8220;dream&#8221; conceived by James Noble, Professor of Computer Science and Software Engineering at Victoria University of Wellington, New Zealand. For decades, software engineering has &#8220;dreamed an impossible dream&#8221;, to build software as easily as building Lego houses, says James. There&#8217;s a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been aware for some years now of the &#8220;Lego Hypothesis&#8221;, a software engineering &#8220;dream&#8221; conceived by James Noble, Professor of Computer Science and Software Engineering at Victoria University of Wellington, New Zealand.</p>
<p>For decades, software engineering has &#8220;dreamed an impossible dream&#8221;, to build software as easily as building Lego houses, says James.</p>
<p>There&#8217;s a <a href="http://www.infoq.com/presentations/lego-hypothesis" target="_blank">talk by James Noble on InfoQ</a> about this subject. In this talk, James Noble imagines a world where the dream has been realized, where software parts can be found in worldwide repositories, where most software is built by reusing existing software, and where we&#8217;ve &#8220;finally been freed from the mundane necessity of programming&#8221;.</p>
<p>Of course, it&#8217;s a dream but, how close (or how far) are we from such dream? I, for one, have certainly been working in that direction with ABSE:</p>
<p>ABSE allows you to create the building blocks of your software systems that, though simple constraint mechanisms, allow you to build your software by snapping them together, just like Lego.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruicurado.com/2011/07/04/the-lego-hypothesis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ABSE and Patterns-Based Engineering (PBE)</title>
		<link>http://ruicurado.com/2011/02/03/abse-and-patterns-based-engineering-pbe/</link>
		<comments>http://ruicurado.com/2011/02/03/abse-and-patterns-based-engineering-pbe/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 00:22:12 +0000</pubDate>
		<dc:creator>Rui Curado</dc:creator>
				<category><![CDATA[ABSE]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[The Developer's Mind]]></category>

		<guid isPermaLink="false">http://ruicurado.com/?p=109</guid>
		<description><![CDATA[In their book, &#8220;Patterns-Based Engineering &#8211; Successfully Delivering Solutions via Patterns&#8221;, Lee Ackerman and Celso Gonzalez introduce PBE, the concept of a pattern implementation as an asset that “automates the application of a pattern in a particular environment”: Specifically, PBE is a specialized approach to asset-based development that focuses on patterns, a specific type of [...]]]></description>
			<content:encoded><![CDATA[<p>In their book, &#8220;Patterns-Based Engineering &#8211; Successfully Delivering Solutions via Patterns&#8221;, Lee Ackerman and Celso Gonzalez introduce PBE, the concept of a pattern implementation as an asset that  “automates the application of a pattern in a particular environment”:</p>
<p>Specifically, PBE is a specialized approach to asset-based development that focuses on patterns, a specific type of reusable asset. PBE provides guidance and support for using patterns in a systematic, disciplined, and quantifiable way.</p>
<p>You can use these types of patterns to support design, testing, deployment, and other aspects of the software development lifecycle. In performing these tasks, you use patterns in many ways such as documenting, generating, refactoring, and harvesting. As a result, you are able to use patterns to boost productivity, improve quality, leverage expertise, simplify, and improve communication within an organization. The goal is to ensure that as you use and create patterns, you are doing so in a way that adds value and boosts the agility of your projects.</p>
<p>Similarly, ABSE uses reusable patterns (a.k.a. “Atoms”) as the basis of  its model-driven approach.</p>
<p>ABSE patterns are coupled with metadata, giving them the necessary  variability to deal with real-world applications. ABSE Atoms have  borrowed concepts from OOP like inheritance and composition, allowing  you to create pattern families, and build “patterns of patterns”. Atoms  are glued together like Lego to form a model that has a tree-like  structure. A code generator “executes” the model to obtain the desired  generated artifacts.</p>
<p>If you want to learn to use and apply ABSE, you may start by introducing yourself to the Patterns-Based Engineering approach. It will give you a thought process and logic foundation that will be quite useful to fully understand and take advantage of ABSE and its IDE, AtomWeaver.</p>
<p>To buy the book, contact the authors or if you are just plain curious about PBE, stop by the <a href="http://patternsbasedengineering.net/">PBE site</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruicurado.com/2011/02/03/abse-and-patterns-based-engineering-pbe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software reuse&#8230; where is it?</title>
		<link>http://ruicurado.com/2010/10/22/software-reuse-where-is-it/</link>
		<comments>http://ruicurado.com/2010/10/22/software-reuse-where-is-it/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 14:19:11 +0000</pubDate>
		<dc:creator>Rui Curado</dc:creator>
				<category><![CDATA[Rants]]></category>
		<category><![CDATA[Software Asset Reuse]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://ruicurado.com/?p=105</guid>
		<description><![CDATA[During the last decade, the gap between the demand for new, complex software systems and its supply has widened. This gap and the difficulties faced by software engineers in bridging it have been described, some decades ago by Dijkstra as the Software Crisis: systems have become so large and complex that creating software for them [...]]]></description>
			<content:encoded><![CDATA[<p>During the last decade, the gap between the demand for new, complex software systems and its supply has widened. This gap and the difficulties faced by software engineers in bridging it have been described, some decades ago by Dijkstra as the Software Crisis: systems have become so large and complex that creating software for them is increasingly more difficult to complete on time and within the constraints of the project budget.</p>
<p>Software reuse is then of growing importance as a major factor in alleviating some of the problems resulting from the Software Crisis.</p>
<p>At first glance, software reuse appears a natural way to develop software, but in practice this does not happen. The challenges are numerous and require a fresh approach to the entire range of activities involved in the engineering of software. Every time new software is needed, developers tend to write it from scratch rather than harness components developed through previous projects.</p>
<p>In the first four decades of computer history the emphasis was on hardware developments, but now the emphasis has shifted toward human concerns. In the mid-1950’s, 90 percent of application costs were devoted to hardware but now, at least 90 percent of these costs are software. This reversal reflects not only the decline in hardware costs and the increase in programmer salaries, but also the recognition that systems must be carefully designed and developed to accommodate human users.</p>
<p>Software is essentially a symbolic product. It differs from the vast range of other products produced by conventional engineering techniques. Software, once designed, has no manufacturing phase and does not deteriorate, although changing environments will usually require software modifications.</p>
<p>The most often cited reasons why software is not reused are:</p>
<ul>
<li>lack of tools to support a developer in trying to reuse components</li>
<li>lack of training for developers to create reusable components and to use reusable components</li>
<li>lack of an educational methodology and motivation towards reuse and its benefits</li>
</ul>
<p>The fact that software reuse has not been widely accepted questions the suitability of existing management practices, organizational structures and technologies involved in the development of software.</p>
<p>In short, a rethink of the software development process is long due.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruicurado.com/2010/10/22/software-reuse-where-is-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AtomWeaver 1.0 Finally Released!</title>
		<link>http://ruicurado.com/2010/09/13/atomweaver-1-0-finally-released/</link>
		<comments>http://ruicurado.com/2010/09/13/atomweaver-1-0-finally-released/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 10:17:29 +0000</pubDate>
		<dc:creator>Rui Curado</dc:creator>
				<category><![CDATA[ABSE]]></category>
		<category><![CDATA[AtomWeaver]]></category>

		<guid isPermaLink="false">http://ruicurado.com/?p=101</guid>
		<description><![CDATA[This is it! AtomWeaver reaches its first &#8220;official&#8221; release, the desired &#8220;1.0&#8243; label. For many, &#8220;1.0&#8243; means immature, but for its creators, it usually means yay! I made it!&#8230; Yep, it&#8217;s that feeling. AtomWeaver 1.0 is the materialization of an idea I had 10 years ago: Why not creating patterns of my own development skills, [...]]]></description>
			<content:encoded><![CDATA[<p>This is it! AtomWeaver reaches its first &#8220;official&#8221; release, the desired &#8220;1.0&#8243; label. For many, &#8220;1.0&#8243; means <em>immature</em>, but for its creators, it usually means <em>yay! I made it!</em>&#8230; Yep, it&#8217;s that feeling.</p>
<p>AtomWeaver 1.0 is the materialization of an idea I had 10 years ago: Why not creating patterns of my own development skills, so that I don&#8217;t have to repeat myself over and over? At that time, I knew nothing about model-driven development, although I have already built a small code generator ten years before that.</p>
<p>This idea kept coming and going over the last decade when finally I decided that I had enough ideas to try and build a &#8220;variable-driven&#8221; code generator. Three and a half years later, and after three iterations of the ABSE concept, the whole decade-long project faces the outside world.</p>
<p>It has been a long journey. Still, I&#8217;ve just reached the &#8220;10%&#8221; milestone. My vision for ABSE and AtomWeaver is much larger. Version 1.0 is really just the tip of the iceberg.</p>
<p>It has been quite a long journey&#8230; so many headaches, so much fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://ruicurado.com/2010/09/13/atomweaver-1-0-finally-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AtomWeaver public beta has been released</title>
		<link>http://ruicurado.com/2010/07/28/atomweaver-public-beta-has-been-released/</link>
		<comments>http://ruicurado.com/2010/07/28/atomweaver-public-beta-has-been-released/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 23:24:28 +0000</pubDate>
		<dc:creator>Rui Curado</dc:creator>
				<category><![CDATA[AtomWeaver]]></category>

		<guid isPermaLink="false">http://ruicurado.com/?p=96</guid>
		<description><![CDATA[I have quietly released the first public version of AtomWeaver: 0.9.0. Why releasing it quietly if it is a commercially-oriented product? Well, because I am kind of &#8220;ashamed&#8221; of releasing it. Some people say that &#8220;if you&#8217;re not ashamed of your first product release, then you haven&#8217;t released it soon enough&#8221;. So I followed that [...]]]></description>
			<content:encoded><![CDATA[<p>I have quietly released the first public version of AtomWeaver: 0.9.0. Why releasing it quietly if it is a commercially-oriented product? Well, because I am kind of &#8220;ashamed&#8221; of releasing it.</p>
<p>Some people say that &#8220;if you&#8217;re not ashamed of your first product release, then you haven&#8217;t released it soon enough&#8221;. So I followed that advice and I released as soon as I could. Well, it could have been sooner, but I thought it would be cool to release it on my birthday!</p>
<p>And so it happened. The first released public beta version (0.9.0) of AtomWeaver sucks, lacks lots of crucial documentation, has blatant bugs and omisions, and the website is even worse: it has just four pages and two screenshots.</p>
<p>But I had to push myself off the cliff, I had to release one day&#8230;</p>
<p>Now I will follow the mantra &#8220;release early, then iterate like crazy&#8221;. That&#8217;s what I am going to do. New releases and website updates will occur on an almost daily basis. I released 0.9.0 yesterday but I already have 0.9.1 today! The update roller coaster will begin. Hopefully the update intensity will slow down as the product reaches an acceptable state.</p>
<p>A new era is starting. Let me take a deep breath&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ruicurado.com/2010/07/28/atomweaver-public-beta-has-been-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The ABSE/AtomWeaver Early Access Program</title>
		<link>http://ruicurado.com/2010/05/07/the-abseatomweaver-early-access-program/</link>
		<comments>http://ruicurado.com/2010/05/07/the-abseatomweaver-early-access-program/#comments</comments>
		<pubDate>Fri, 07 May 2010 17:01:00 +0000</pubDate>
		<dc:creator>Rui Curado</dc:creator>
				<category><![CDATA[ABSE]]></category>

		<guid isPermaLink="false">http://ruicurado.com/?p=90</guid>
		<description><![CDATA[I&#8217;ve started a few days ago the ABSE/AtomWeaver Early Access Program, a closed alpha test of the AtomWeaver IDE, where a select few professionals participate. More than twenty professionals and two tech reporters have been selected. The objective of the Early Access Program is to get valuable early feedback from professionals that are actively engaged [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started a few days ago the <em>ABSE/AtomWeaver Early Access Program</em>, a closed alpha test of the AtomWeaver IDE, where a select few professionals participate. More than twenty professionals and two tech reporters have been selected.</p>
<p>The objective of the Early Access Program is to get valuable early feedback from professionals that are actively engaged in Model-Driven Software Generation, or code generation in general. With this controlled alpha release, AtomWeaver has seen the real world, and real developers are putting their hands on this new approach to software development.</p>
<p>While most people have yet to report back, some justifying to be severely constrained by their current work, I am starting to get reactions on their first &#8220;impact&#8221; with ABSE.</p>
<p>I&#8217;ve yet to receive a neutral or negative comment about ABSE, which is encouraging. First reactions have been positive, with adjectives varying from &#8220;interesting&#8221; to &#8220;promising&#8221;.</p>
<p>I am also learning a lot about how to properly convey the ideas and philosophy behind ABSE, in terms of documentation and tutorials. As with any new, disruptive technology, newcomers always feel confused about the new concepts, and hardly know where to start or where to go. It is a challenging task to put ourselves in the shoes of a newcomer when we are precisely on the opposite side of the knowledge scale. This is called &#8220;<a href="http://37signals.com/svn/posts/213-the-curse-of-knowledge">the curse of knowledge</a>&#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruicurado.com/2010/05/07/the-abseatomweaver-early-access-program/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ada Lovelace Day : Celebrating Women in Technology</title>
		<link>http://ruicurado.com/2010/03/24/ada-lovelace-day-celebrating-women-in-technology/</link>
		<comments>http://ruicurado.com/2010/03/24/ada-lovelace-day-celebrating-women-in-technology/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 17:38:00 +0000</pubDate>
		<dc:creator>Rui Curado</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ruicurado.com/?p=87</guid>
		<description><![CDATA[Most people involved in IT know that today is is Ada Lovelace Day; an important day in which we celebrate the achievements of women in technology and science. Well, I should be talking about women in technology. I don&#8217;t know many in a personal level, and none of them are particularly notable. I&#8217;ll restrict my [...]]]></description>
			<content:encoded><![CDATA[<p>Most people involved in IT know that today is is <a href="http://findingada.com/">Ada Lovelace Day</a>; an  important day in which we celebrate the achievements of women in  technology and science.</p>
<p>Well, I should be talking about women in technology. I don&#8217;t know many in a personal level, and none of them are particularly notable. I&#8217;ll restrict my choice to my field, programming, and my country, Portugal.</p>
<p>So in the spirit of the Ada Lovelace day, I would like to mention Cândida Ferreira, a Portuguese-born researcher which have made some notable achievents in programming. Here is a shameless copy of her online bio:</p>
<p><strong>Cândida Ferreira</strong> studied Biochemistry at Kharkov  University (1985-1990)  			in the former USSR and received her Ph.D. from Lisbon University in  Biology in 1995. She joined the Department of Agricultural Sciences at  The Azores University in 1994, where she was Assistant Professor of  Biochemistry since 1995 till October 2001.  			She invented the revolutionary Gene Expression Programming technique  			in 1999 and in 2000 co-founded <a href="http://www.gepsoft.com/">Gepsoft</a> to develop and commercialize           software based on the GEP           technique. She now works full time at 			<a href="http://www.gepsoft.com/">Gepsoft</a> as Chief Scientist. Her  research spans the interplay between molecular biology, evolution, and  			machine learning.</p>
<p>You can learn more about her achievements at <a title="gene-expression-programming.com" href="http://www.gene-expression-programming.com">gene-expression-programming.com</a>.</p>
<p>Celebrate Ada Lovelace Day!</p>
]]></content:encoded>
			<wfw:commentRss>http://ruicurado.com/2010/03/24/ada-lovelace-day-celebrating-women-in-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starting the ABSE &#8220;One Fact A Day&#8221; series</title>
		<link>http://ruicurado.com/2010/02/26/starting-the-abse-one-fact-a-day-series/</link>
		<comments>http://ruicurado.com/2010/02/26/starting-the-abse-one-fact-a-day-series/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 16:36:47 +0000</pubDate>
		<dc:creator>Rui Curado</dc:creator>
				<category><![CDATA[ABSE]]></category>

		<guid isPermaLink="false">http://ruicurado.com/?p=85</guid>
		<description><![CDATA[Starting today I will everyday (or so) post a simple fact about ABSE and a short text regarding that fact, in ABSE/AtomWeaver&#8217;s community site at Ning. I hope this series to be a very simple and easy way for developers to get acquainted with ABSE, to know what it can do, and what they can [...]]]></description>
			<content:encoded><![CDATA[<p>Starting today I will everyday (or so) post a simple fact about ABSE and a short text regarding that fact, in ABSE/AtomWeaver&#8217;s community site at Ning.</p>
<p>I hope this series to be a very simple and easy way for developers to get acquainted with ABSE, to know what it can do, and what they can accomplish with it. It won&#8217;t take you more than two minutes per day.</p>
<p>New post announcements will be added to ABSE/AtomWeaver&#8217;s <a href="http://twitter.com/atomweaver">twitter account</a>, and the fact pages can be found inside the <a href="http://atomweaver.ning.com/page/3677765:Page:223">ABSE section</a> of the community site.</p>
<p>I take the opportunity to invite those that want to learn about ABSE and follow its evolution, to join its official community at <a href="http://atomweaver.ning.com/">http://atomweaver.ning.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruicurado.com/2010/02/26/starting-the-abse-one-fact-a-day-series/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Hidden Costs of Domain-Specific Languages</title>
		<link>http://ruicurado.com/2009/11/25/the-hidden-costs-of-domain-specific-languages/</link>
		<comments>http://ruicurado.com/2009/11/25/the-hidden-costs-of-domain-specific-languages/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 00:49:54 +0000</pubDate>
		<dc:creator>Rui Curado</dc:creator>
				<category><![CDATA[Domain-Specific Languages]]></category>

		<guid isPermaLink="false">http://ruicurado.com/?p=71</guid>
		<description><![CDATA[While I am a big fan of Domain-Specific Modeling, I am openly not in favor of Domain-Specific Languages. DSL supporters advocate many good things. Are they real? Is it the whole truth? Let&#8217;s see some good (valid) points about DSL&#8217;s: It&#8217;s domain-specific (duh!) Encapsulates boring details Can increase abstraction to the next level And other [...]]]></description>
			<content:encoded><![CDATA[<p>While I am a big fan of Domain-Specific Modeling, I am openly not in favor of Domain-Specific Languages. DSL supporters advocate many good things. Are they real? Is it the whole truth?</p>
<p>Let&#8217;s see some good (valid) points about DSL&#8217;s:</p>
<ul>
<li>It&#8217;s domain-specific (duh!)</li>
<li>Encapsulates boring details</li>
<li>Can increase abstraction to the next level</li>
</ul>
<p>And other not so valid points:</p>
<ul>
<li>It&#8217;s a Shiny New [mainstream] Thing. Most developers love that</li>
<li>It&#8217;s cool and I can do it too</li>
</ul>
<p>The first are very enticing, valuable, and sought for, and most of DSL&#8217;s attraction I guess comes from these features. But, will it pay off?</p>
<p>I really don&#8217;t have much experience with DSLs, so I won&#8217;t use my own arguments. I&#8217;ll let the community speak for myself. Here is a tiny sample of DSL criticism:</p>
<p><a title="http://c2.com/cgi/wiki?DomainSpecificLanguage" href="http://c2.com/cgi/wiki?DomainSpecificLanguage">http://c2.com/cgi/wiki?DomainSpecificLanguage</a></p>
<blockquote><p><span style="color: #333399;">&#8230; the <em>Tower Of Babel</em> effect that results from having so many languages that a person needs to be familiar with (if not master) in order to get common jobs done.<br />
&#8230;<br />
writing a good DSL that is robust and reusable beyond a limited context, is a lot of work. It requires persons with both domain expertise and language design expertise (not necessarily the same person) to pull off. A truly reusable DSL will require reasonable documentation, otherwise it won&#8217;t survive the departure of its designers.</span></p></blockquote>
<p><a title="http://www.theserverside.com/news/thread.tss?thread_id=42078" href="http://www.theserverside.com/news/thread.tss?thread_id=42078">http://www.theserverside.com/news/thread.tss?thread_id=42078</a></p>
<blockquote><p><span style="color: #333399;">The other mistake some folks make is they think that with a DSL that &#8220;non-coders&#8221; can actually use the DSL.</span></p>
<p><span style="color: #333399;">But since a DSL is designed for automation of an underlying objet model, writing in a DSL is just like writing in any language &#8212; whether it&#8217;s DOS .BAT files or Java, and it takes a coding mindset and understanding of the underlying domain as represented by the computer in order to make effective use.</span></p></blockquote>
<p>There was much more written on this thread. You can go to the original page to read more opinions.</p>
<p>As general use of DSLs become mainstream, so become the complaints about their shortcomings. If we take so much time to master a general purpose language, should we invest a comparable amount of time in limited-use languages? How can we get support for a DSL, apart from its own creators? Where&#8217;s community support? What happens after the departure of the language&#8217;s creator? What&#8217;s BNF? Do I need it?</p>
<p>DSL critics say really useful DSLs are hard and expensive to create. DSL supporters answer that DSLs are not designed, they evolve. Well, won&#8217;t any of those &#8220;evolutionary steps&#8221; risk breaking the entire development based on that DSL, much like a broken app build? Will the evolution in the language be severe enough to trash what has been done so far? Can you imagine yourself developing a complex C++ software system while C++ itself was still being designed and developed?</p>
<p>Still too many unanswered questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruicurado.com/2009/11/25/the-hidden-costs-of-domain-specific-languages/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

