<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Tag text</title>
    <link>http://blog.objectmentor.com/articles/tag/text</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Why we write code and don't just draw diagrams</title>
      <description>&lt;p&gt;Advocates of graphical notations have long hoped we would reach the point were we only draw diagrams and don&amp;#8217;t write textual code. There have even been a few visual programming environments that have come and gone over the years.&lt;/p&gt;


	&lt;p&gt;If &lt;i&gt;a picture is worth a thousand words&lt;/i&gt;, then why hasn&amp;#8217;t this happened?&lt;/p&gt;


	&lt;p&gt;What that phrase really means is that we get the &amp;#8220;gist&amp;#8221; or the &amp;#8220;gestalt&amp;#8221; of a situation when we look at a picture, but nothing expresses the intricate details like text, the 1000 words. Since computers are literal-minded and don&amp;#8217;t &amp;#8220;do gist&amp;#8221;, they require those details spelled out explicitly.&lt;/p&gt;


	&lt;p&gt;Well, couldn&amp;#8217;t we still do that with a sufficiently expressive graphical notation? Certainly, but then we run into the pragmatic issue that typing textual details will &lt;i&gt;always&lt;/i&gt; be faster than drawing them.&lt;/p&gt;


	&lt;p&gt;I came to this realization a few years ago when I worked for a Well Known Company developing &lt;span class="caps"&gt;UML&lt;/span&gt;-based tools for Java developers. The tool&amp;#8217;s UI could have been more efficient, but there was no way to beat the speed of typing text.&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s also true that some languages are rather verbose. This is one of the ways in which Domain-Specific Languages (DSL&amp;#8217;s) are going to be increasingly important. A well-designed &lt;span class="caps"&gt;DSL&lt;/span&gt; will let you express those high-level concepts succinctly.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m not claiming that there is no place for graphical representations. &lt;span class="caps"&gt;UML&lt;/span&gt; is great for those quick design sessions, when you&amp;#8217;re strategizing at a high level. Also, the easiest way to find component dependency cycles is to see them graphically.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m also not discounting those scenarios where a diagram-driven approach actually works. I&amp;#8217;ve heard of some success developing control systems that are predominantly well-defined, complex state machines.&lt;/p&gt;


	&lt;p&gt;Still, for the general case, code written in succinct languages with well-designed &lt;span class="caps"&gt;API&lt;/span&gt;&amp;#8217;s and &lt;span class="caps"&gt;DSL&lt;/span&gt;&amp;#8217;s will trump a diagram-driven approach.&lt;/p&gt;</description>
      <pubDate>Thu, 06 Sep 2007 10:45:59 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:7b916f25-17c3-49e3-88dc-3e4ba9fcf8c6</guid>
      <author>Dean Wampler</author>
      <link>http://blog.objectmentor.com/articles/2007/09/06/why-we-write-code-and-dont-just-draw-diagrams</link>
      <category>Dean's Deprecations</category>
      <category>UML</category>
      <category>diagrams</category>
      <category>text</category>
      <category>code</category>
      <category>design</category>
      <trackback:ping>http://blog.objectmentor.com/articles/trackback/8804</trackback:ping>
    </item>
  </channel>
</rss>
