<?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: Why so general?</title>
	<atom:link href="http://www.hans-eric.com/2007/11/14/why-so-general/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hans-eric.com/2007/11/14/why-so-general/</link>
	<description>Hans-Eric Grönlund on software development</description>
	<pubDate>Thu, 16 Oct 2008 04:29:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Paul W. Homer</title>
		<link>http://www.hans-eric.com/2007/11/14/why-so-general/#comment-983</link>
		<dc:creator>Paul W. Homer</dc:creator>
		<pubDate>Fri, 16 Nov 2007 20:42:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.hans-eric.com/2007/11/14/why-so-general/#comment-983</guid>
		<description>Sometimes when I am developing, my orientation is towards building reusable primitives that match the domain problem. 

The basic idea is that you create data structures (objects) for all of the nouns and functions for all of the verbs that get used in conversations about the problem domain. Then you can map the user's actual conversations directly back to the code. If you get the users to talk enough, you'll get a complete system (plus a few lovely inconsistencies, previously unknown to the user). 

The closer you come to matching their terminology with your primitives, the better it works.

In this way, you can create a DSL at the conceptual level while living within the capabilities and syntax of your favorite language infrastructure (syntax and compiling are just technical problems, not domain ones).</description>
		<content:encoded><![CDATA[<p>Sometimes when I am developing, my orientation is towards building reusable primitives that match the domain problem. </p>
<p>The basic idea is that you create data structures (objects) for all of the nouns and functions for all of the verbs that get used in conversations about the problem domain. Then you can map the user&#8217;s actual conversations directly back to the code. If you get the users to talk enough, you&#8217;ll get a complete system (plus a few lovely inconsistencies, previously unknown to the user). </p>
<p>The closer you come to matching their terminology with your primitives, the better it works.</p>
<p>In this way, you can create a DSL at the conceptual level while living within the capabilities and syntax of your favorite language infrastructure (syntax and compiling are just technical problems, not domain ones).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Campbell</title>
		<link>http://www.hans-eric.com/2007/11/14/why-so-general/#comment-978</link>
		<dc:creator>Steve Campbell</dc:creator>
		<pubDate>Fri, 16 Nov 2007 14:59:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.hans-eric.com/2007/11/14/why-so-general/#comment-978</guid>
		<description>The point on a CMS being vendor and technology-locked is valid, and probably at the heart of the definition of DSL.  That is, when we say "Language", what we really mean is an open (unlicensed) abstraction that is re-usable across multiple technologies.  

To me, the word "Language" is too specific.  The distinction seems irrelevant to me, and others.  In fact, many DSLs seem to be drawing/design abstractions (UML, GraphViz, etc).  

I would redefine a DSL as being a re-usable abstraction of  a problem domain that is technology and vendor agnostic.  In addition, I expect that in order to be useful it should offer (at least) an order of magnitude benefit.</description>
		<content:encoded><![CDATA[<p>The point on a CMS being vendor and technology-locked is valid, and probably at the heart of the definition of DSL.  That is, when we say &#8220;Language&#8221;, what we really mean is an open (unlicensed) abstraction that is re-usable across multiple technologies.  </p>
<p>To me, the word &#8220;Language&#8221; is too specific.  The distinction seems irrelevant to me, and others.  In fact, many DSLs seem to be drawing/design abstractions (UML, GraphViz, etc).  </p>
<p>I would redefine a DSL as being a re-usable abstraction of  a problem domain that is technology and vendor agnostic.  In addition, I expect that in order to be useful it should offer (at least) an order of magnitude benefit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hans-Eric</title>
		<link>http://www.hans-eric.com/2007/11/14/why-so-general/#comment-970</link>
		<dc:creator>Hans-Eric</dc:creator>
		<pubDate>Fri, 16 Nov 2007 09:01:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.hans-eric.com/2007/11/14/why-so-general/#comment-970</guid>
		<description>I'm sure your perception of the future is accurate. It feels like the most probable scenario. The problem I see is that it's a bottom-up kind of approach. What I'd like to see is more top-down initiatives that eventually meet the bottom-up built, general purpose technologies. Ruby on Rails is one good example of such an initiative, but that's just a start. We could do much more in terms of abstraction and smart defaults. For that I believe we need more domain-specific languages.</description>
		<content:encoded><![CDATA[<p>I&#8217;m sure your perception of the future is accurate. It feels like the most probable scenario. The problem I see is that it&#8217;s a bottom-up kind of approach. What I&#8217;d like to see is more top-down initiatives that eventually meet the bottom-up built, general purpose technologies. Ruby on Rails is one good example of such an initiative, but that&#8217;s just a start. We could do much more in terms of abstraction and smart defaults. For that I believe we need more domain-specific languages.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hans-Eric</title>
		<link>http://www.hans-eric.com/2007/11/14/why-so-general/#comment-969</link>
		<dc:creator>Hans-Eric</dc:creator>
		<pubDate>Fri, 16 Nov 2007 08:45:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.hans-eric.com/2007/11/14/why-so-general/#comment-969</guid>
		<description>&lt;blockquote&gt;The general belief is that by creating a DSL to remove the technical problems you’ve also restricted the technology down to such a degree that it can only solve a very limited subset of problems.&lt;/blockquote&gt;

Exactly, but my feeling is that there are several such subsets of problems that would benefit a lot of people. So creating DSL:s for them would make sense. I'm not talking about one, silver bullet language that would solve all our problems, but several, domain-specific languages that are abstract in terms of technology.
Of course, creating a new language is lot of work, and I guess that is the main reason we don't see many of them around.</description>
		<content:encoded><![CDATA[<blockquote><p>The general belief is that by creating a DSL to remove the technical problems you’ve also restricted the technology down to such a degree that it can only solve a very limited subset of problems.</p></blockquote>
<p>Exactly, but my feeling is that there are several such subsets of problems that would benefit a lot of people. So creating DSL:s for them would make sense. I&#8217;m not talking about one, silver bullet language that would solve all our problems, but several, domain-specific languages that are abstract in terms of technology.<br />
Of course, creating a new language is lot of work, and I guess that is the main reason we don&#8217;t see many of them around.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hans-Eric</title>
		<link>http://www.hans-eric.com/2007/11/14/why-so-general/#comment-968</link>
		<dc:creator>Hans-Eric</dc:creator>
		<pubDate>Fri, 16 Nov 2007 08:32:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.hans-eric.com/2007/11/14/why-so-general/#comment-968</guid>
		<description>It's true, but I wouldn't call CMS:s high-level DSL:s. They are applications. If you create a website in one CMS and you'd like to switch to another, you have to to do the work all over again. So one could say you're vendor- and technology-locked if you use a CMS.
With that said, CMS:s are great tools that allows you to focus on the business-value of websites: the content.</description>
		<content:encoded><![CDATA[<p>It&#8217;s true, but I wouldn&#8217;t call CMS:s high-level DSL:s. They are applications. If you create a website in one CMS and you&#8217;d like to switch to another, you have to to do the work all over again. So one could say you&#8217;re vendor- and technology-locked if you use a CMS.<br />
With that said, CMS:s are great tools that allows you to focus on the business-value of websites: the content.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Hofmann</title>
		<link>http://www.hans-eric.com/2007/11/14/why-so-general/#comment-962</link>
		<dc:creator>James Hofmann</dc:creator>
		<pubDate>Thu, 15 Nov 2007 14:34:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.hans-eric.com/2007/11/14/why-so-general/#comment-962</guid>
		<description>I've gradually ramped up the size of my solo, hobby projects and in doing this I've come to recognize that abstraction can happen on many, many levels.

The thing that I'm pretty sure stops us from maximizing productivity at every level is that we keep churning through our technology. The story that comes to mind is how at first, every computer system had its operating system rewritten from scratch in assembly code. Eventually, C became the standard systems language and the operating system problem was, for the most part, solved.

That in turn helped prompt an era of increasing complexity in many different application realms. To name some prominent ones, we've gone through GUI platforms, Internet and Web standardization, relational database systems...

And at each turn we get new languages that aim to ease each domain of problems.

The problem with new languages is that you encounter problems reusing code. Everything has a hook to C nowadays, but C makes for a poor operational baseline; if you want to access it, you have to port the bindings to your chosen higher-level language. C doesn't have enough features to map itself easily, and C++ suffers even more since its own higher-level constructs only cause even more of a headache in the binding process.

So right now what I see is a competition going on for a higher-level-language standardization of virtual machines. Java and .Net/CLR are the obvious commercial ones, but there's also a lot of action from other areas - ECMAScript has been hailed a few times as a platform that other languages can build on top of, but that one remains to be seen. And there are all sorts of promising open-source VMs floating around like LLVM, Parrot, and Neko to speak of a few.

Regardless of which platform comes out on top, the result will allow a new era of computing in which we can use appropriate languages for each situation and they'll all work in an easily compatible way.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve gradually ramped up the size of my solo, hobby projects and in doing this I&#8217;ve come to recognize that abstraction can happen on many, many levels.</p>
<p>The thing that I&#8217;m pretty sure stops us from maximizing productivity at every level is that we keep churning through our technology. The story that comes to mind is how at first, every computer system had its operating system rewritten from scratch in assembly code. Eventually, C became the standard systems language and the operating system problem was, for the most part, solved.</p>
<p>That in turn helped prompt an era of increasing complexity in many different application realms. To name some prominent ones, we&#8217;ve gone through GUI platforms, Internet and Web standardization, relational database systems&#8230;</p>
<p>And at each turn we get new languages that aim to ease each domain of problems.</p>
<p>The problem with new languages is that you encounter problems reusing code. Everything has a hook to C nowadays, but C makes for a poor operational baseline; if you want to access it, you have to port the bindings to your chosen higher-level language. C doesn&#8217;t have enough features to map itself easily, and C++ suffers even more since its own higher-level constructs only cause even more of a headache in the binding process.</p>
<p>So right now what I see is a competition going on for a higher-level-language standardization of virtual machines. Java and .Net/CLR are the obvious commercial ones, but there&#8217;s also a lot of action from other areas - ECMAScript has been hailed a few times as a platform that other languages can build on top of, but that one remains to be seen. And there are all sorts of promising open-source VMs floating around like LLVM, Parrot, and Neko to speak of a few.</p>
<p>Regardless of which platform comes out on top, the result will allow a new era of computing in which we can use appropriate languages for each situation and they&#8217;ll all work in an easily compatible way.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul W Homer</title>
		<link>http://www.hans-eric.com/2007/11/14/why-so-general/#comment-956</link>
		<dc:creator>Paul W Homer</dc:creator>
		<pubDate>Thu, 15 Nov 2007 01:19:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.hans-eric.com/2007/11/14/why-so-general/#comment-956</guid>
		<description>This touches on the unachievable Silver Bullet mentioned in the Mythical Man Month by Frederick P. Brooks. The general belief is that by creating a DSL to remove the technical problems you've also restricted the technology down to such a degree that it can only solve a very limited subset of problems. If it is specific, then the tradeoff is in applicability. If not, then it is necessarily complex. 

I buy into this to some degree, after all 4gls and product/languages like Power Builder have consistently failed to hold market share, but I tend to think that the problem is coming from our abstractions. In most of the cases I've seen, the abstractions have really come from trying to compress functionality into smaller syntax. The paradigm is essentially the same.

I suspect that that is at least one perspective shift out there, that as an abstraction could lead to a significant simplification of our technological foundations. In general Brooks is right, but our current abstractions for building software are so crude that we should be able to do better. 

But then again, I could just be crazy :-)</description>
		<content:encoded><![CDATA[<p>This touches on the unachievable Silver Bullet mentioned in the Mythical Man Month by Frederick P. Brooks. The general belief is that by creating a DSL to remove the technical problems you&#8217;ve also restricted the technology down to such a degree that it can only solve a very limited subset of problems. If it is specific, then the tradeoff is in applicability. If not, then it is necessarily complex. </p>
<p>I buy into this to some degree, after all 4gls and product/languages like Power Builder have consistently failed to hold market share, but I tend to think that the problem is coming from our abstractions. In most of the cases I&#8217;ve seen, the abstractions have really come from trying to compress functionality into smaller syntax. The paradigm is essentially the same.</p>
<p>I suspect that that is at least one perspective shift out there, that as an abstraction could lead to a significant simplification of our technological foundations. In general Brooks is right, but our current abstractions for building software are so crude that we should be able to do better. </p>
<p>But then again, I could just be crazy <img src='http://www.hans-eric.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Campbell</title>
		<link>http://www.hans-eric.com/2007/11/14/why-so-general/#comment-952</link>
		<dc:creator>Steve Campbell</dc:creator>
		<pubDate>Wed, 14 Nov 2007 19:41:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.hans-eric.com/2007/11/14/why-so-general/#comment-952</guid>
		<description>This is already happening.  Nobody sane develops a generic web-site from scratch anymore - instead they use some sort of content management tool to do it (a high level DSL).</description>
		<content:encoded><![CDATA[<p>This is already happening.  Nobody sane develops a generic web-site from scratch anymore - instead they use some sort of content management tool to do it (a high level DSL).</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.306 seconds -->
