<?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: Is program proving viable and useful?</title>
	<atom:link href="http://conal.net/blog/posts/is-program-proving-viable-and-useful/feed" rel="self" type="application/rss+xml" />
	<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful</link>
	<description>Inspirations &#38; experiments, mainly about denotative/functional programming in Haskell</description>
	<lastBuildDate>Sat, 26 Sep 2020 21:06:12 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.1.17</generator>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful#comment-541</link>
		<dc:creator><![CDATA[conal]]></dc:creator>
		<pubDate>Mon, 17 Jan 2011 01:56:41 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=94#comment-541</guid>
		<description><![CDATA[&lt;p&gt;In the initial stage (extreme ignorance), it&#039;s easy to give up, and confidently claim something cannot be done. When I probe, usually I find that these confident claims are supported only by what I&#039;ve come to call &quot;proof by lack of imagination&quot;. Progress perhaps depends on faith, persistence, even naïvité.&lt;/p&gt;

&lt;p&gt;&quot;Ignorance more frequently begets confidence than does knowledge: it is those who know little, and not those who know much, who so positively assert that this or that problem will never be solved by science.&quot; - Charles Darwin&lt;/p&gt;

&lt;p&gt;&quot;Dare to be naive.&quot; - R. Buckminster Fuller&lt;/p&gt;

&lt;p&gt;&quot;It is our duty as human beings to proceed as though the limits of our capabilities do not exist.&quot; - Teilhard de Chardin&lt;/p&gt;

&lt;p&gt;&quot;Things are only impossible until they&#039;re not.&quot; - Jean-Luc Picard&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>In the initial stage (extreme ignorance), it&#8217;s easy to give up, and confidently claim something cannot be done. When I probe, usually I find that these confident claims are supported only by what I&#8217;ve come to call &#8220;proof by lack of imagination&#8221;. Progress perhaps depends on faith, persistence, even naïvité.</p>

<p>&#8220;Ignorance more frequently begets confidence than does knowledge: it is those who know little, and not those who know much, who so positively assert that this or that problem will never be solved by science.&#8221; &#8211; Charles Darwin</p>

<p>&#8220;Dare to be naive.&#8221; &#8211; R. Buckminster Fuller</p>

<p>&#8220;It is our duty as human beings to proceed as though the limits of our capabilities do not exist.&#8221; &#8211; Teilhard de Chardin</p>

<p>&#8220;Things are only impossible until they&#8217;re not.&#8221; &#8211; Jean-Luc Picard</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful#comment-540</link>
		<dc:creator><![CDATA[conal]]></dc:creator>
		<pubDate>Fri, 23 Apr 2010 03:51:06 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=94#comment-540</guid>
		<description><![CDATA[&lt;p&gt;thomash,&lt;/p&gt;

&lt;p&gt;Wow -- I love this comment!  I especially enjoy your description of plowing through complexity, riding the curve up and then down.  And I relate deeply.  My aim rarely is to get some software merely working (so that it &quot;meets the functional requirements&quot;), but to continue until implementation is compelling, revealing, and ideally inevitable.  A tremendously satisfying experience.  And a journey of faith, in the sense of hopefulness and willingness to try, but with no guarantee or certainty of outcome.  And when it works out, I&#039;m grateful for being invited along for the ride.&lt;/p&gt;

&lt;p&gt;And yes (!) to your perspective that in spite of focusing on programs (answers), we will have still &quot;trained the right muscles&quot; for mastering the complexity of specifications (questions).&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>thomash,</p>

<p>Wow &#8212; I love this comment!  I especially enjoy your description of plowing through complexity, riding the curve up and then down.  And I relate deeply.  My aim rarely is to get some software merely working (so that it &#8220;meets the functional requirements&#8221;), but to continue until implementation is compelling, revealing, and ideally inevitable.  A tremendously satisfying experience.  And a journey of faith, in the sense of hopefulness and willingness to try, but with no guarantee or certainty of outcome.  And when it works out, I&#8217;m grateful for being invited along for the ride.</p>

<p>And yes (!) to your perspective that in spite of focusing on programs (answers), we will have still &#8220;trained the right muscles&#8221; for mastering the complexity of specifications (questions).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: thomash</title>
		<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful#comment-539</link>
		<dc:creator><![CDATA[thomash]]></dc:creator>
		<pubDate>Thu, 22 Apr 2010 16:29:49 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=94#comment-539</guid>
		<description><![CDATA[&lt;p&gt;Both programming and specifications have a common requirement: abstraction. So maybe working on precise programs was not all lost on specifications, as we &quot;trained the right muscles&quot;, so to speak. There is a bit of lore concerning complexity in the programming realm, and personally I like to think that reducing complexity is the crown jewel of all the activities involved with programming. What many people miss, though, is that it is often a function of time and effort. A professor once said to us, when we were really young students and faced with our first major assignment, &quot;When you start making your way into your topic, you will find that more and more aspects come up, and you are retrieving more and more books from the library (we were using books at that time!). Don&#039;t be overwhelmed! As you continue your way, you will find that pieces fall into place, and relations are found, and many things turn out to be duplicates or variants of one another, so in the end the amount of material you have to deal with is quite manageable&quot;. Likewise, complexity often has a ballistic curve. Initially, it increases, and people often stop when a program, or a spec, meets the functional requirements, when complexity is usually at its max. Only when you continue you will find that, while still meeting the requirements, the comlexity goes down again. Unfortunately, many system never reach that state.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>Both programming and specifications have a common requirement: abstraction. So maybe working on precise programs was not all lost on specifications, as we &#8220;trained the right muscles&#8221;, so to speak. There is a bit of lore concerning complexity in the programming realm, and personally I like to think that reducing complexity is the crown jewel of all the activities involved with programming. What many people miss, though, is that it is often a function of time and effort. A professor once said to us, when we were really young students and faced with our first major assignment, &#8220;When you start making your way into your topic, you will find that more and more aspects come up, and you are retrieving more and more books from the library (we were using books at that time!). Don&#8217;t be overwhelmed! As you continue your way, you will find that pieces fall into place, and relations are found, and many things turn out to be duplicates or variants of one another, so in the end the amount of material you have to deal with is quite manageable&#8221;. Likewise, complexity often has a ballistic curve. Initially, it increases, and people often stop when a program, or a spec, meets the functional requirements, when complexity is usually at its max. Only when you continue you will find that, while still meeting the requirements, the comlexity goes down again. Unfortunately, many system never reach that state.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful#comment-538</link>
		<dc:creator><![CDATA[conal]]></dc:creator>
		<pubDate>Wed, 27 Jan 2010 02:13:17 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=94#comment-538</guid>
		<description><![CDATA[&lt;p&gt;@jfoutz: Yeah -- you got the message.  Thanks for the paraphrase.&lt;/p&gt;

&lt;p&gt;We have been forced to make our programs precise, but we haven&#039;t been forced nearly as much to make our specifications precise.  So there&#039;s been more progress on simple precise programs than on simple precise specifications.  Without noting this historical difference, one might mistakenly assume that precise specifications are inherently resistant to simplicity.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>@jfoutz: Yeah &#8212; you got the message.  Thanks for the paraphrase.</p>

<p>We have been forced to make our programs precise, but we haven&#8217;t been forced nearly as much to make our specifications precise.  So there&#8217;s been more progress on simple precise programs than on simple precise specifications.  Without noting this historical difference, one might mistakenly assume that precise specifications are inherently resistant to simplicity.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jfoutz</title>
		<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful#comment-537</link>
		<dc:creator><![CDATA[jfoutz]]></dc:creator>
		<pubDate>Tue, 26 Jan 2010 20:05:55 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=94#comment-537</guid>
		<description><![CDATA[&lt;p&gt;@muad&lt;/p&gt;

&lt;p&gt;There are good abstractions out there waiting to be found. Just because the specification we have now is bad/good/whatever, that dosn&#039;t mean there aren&#039;t better abstractions just waiting to be found.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>@muad</p>

<p>There are good abstractions out there waiting to be found. Just because the specification we have now is bad/good/whatever, that dosn&#8217;t mean there aren&#8217;t better abstractions just waiting to be found.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Linktipps Februar 2010 :: Blackflash</title>
		<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful#comment-536</link>
		<dc:creator><![CDATA[Linktipps Februar 2010 :: Blackflash]]></dc:creator>
		<pubDate>Thu, 14 Jan 2010 17:16:22 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=94#comment-536</guid>
		<description><![CDATA[&lt;p&gt;&lt;&lt;/p&gt;

&lt;p&gt;p&gt;[...] das eine Frage sein, die sich heutzutage er&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>&lt;</p>

<p>p>[&#8230;] das eine Frage sein, die sich heutzutage er</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: muad</title>
		<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful#comment-535</link>
		<dc:creator><![CDATA[muad]]></dc:creator>
		<pubDate>Thu, 07 Jan 2010 10:13:00 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=94#comment-535</guid>
		<description><![CDATA[&lt;p&gt;Hi Conal, I don&#039;t understand this post. what do you mean?&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>Hi Conal, I don&#8217;t understand this post. what do you mean?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Norman Ramsey</title>
		<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful#comment-534</link>
		<dc:creator><![CDATA[Norman Ramsey]]></dc:creator>
		<pubDate>Tue, 05 Jan 2010 02:57:08 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=94#comment-534</guid>
		<description><![CDATA[&lt;p&gt;Conal,&lt;/p&gt;

&lt;p&gt;Nice blog.  From my perspective as a teacher, I find that one of the most difficult lessons to teach is that &lt;em&gt;complexity is the enemy&lt;/em&gt;.  Many young people enjoy complexity---perhaps it gives them a feeling of mastery or something.  And as you&#039;ve pointed out, simple and precise is much harder.&lt;/p&gt;

&lt;p&gt;In more than just programming, this is not an age given to the appreciation of simplicity.&lt;/p&gt;

&lt;p&gt;Norman&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>Conal,</p>

<p>Nice blog.  From my perspective as a teacher, I find that one of the most difficult lessons to teach is that <em>complexity is the enemy</em>.  Many young people enjoy complexity&#8212;perhaps it gives them a feeling of mastery or something.  And as you&#8217;ve pointed out, simple and precise is much harder.</p>

<p>In more than just programming, this is not an age given to the appreciation of simplicity.</p>

<p>Norman</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff</title>
		<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful#comment-533</link>
		<dc:creator><![CDATA[Jeff]]></dc:creator>
		<pubDate>Mon, 04 Jan 2010 22:39:43 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=94#comment-533</guid>
		<description><![CDATA[&lt;p&gt;I think the real value of formal methods aren&#039;t in formalizing vague specifications of what the code is supposed to do at a high level. Of course you can&#039;t formalize &quot;help me track my budget&quot; or &quot;entertain me with a fun game&quot; or &quot;browse the internet&quot;.&lt;/p&gt;

&lt;p&gt;What you &lt;em&gt;can&lt;/em&gt; formalize is the stuff that the programmer knows the code should be doing, but can&#039;t currently express at compile time. This function should return a list sorted by account ID. That function requires a list sorted by account ID to work correctly. No two of these game objects should ever be assigned the same grid position. This function is guaranteed to return one of these known document types no matter what input stream it is given. That function will always return in some bounded time, using a known set of resources.&lt;/p&gt;

&lt;p&gt;In other words, you can&#039;t prove everything, but there are still huge gains to be made proving more than we do today.&lt;/p&gt;

&lt;p&gt;My hope is that such proofs will look exactly like quickcheck tests, and quickcheck will someday turn into a tool that proves what it can, and for the rest says, &quot;I couldn&#039;t prove it, but at least it passed these test cases.&quot;&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>I think the real value of formal methods aren&#8217;t in formalizing vague specifications of what the code is supposed to do at a high level. Of course you can&#8217;t formalize &#8220;help me track my budget&#8221; or &#8220;entertain me with a fun game&#8221; or &#8220;browse the internet&#8221;.</p>

<p>What you <em>can</em> formalize is the stuff that the programmer knows the code should be doing, but can&#8217;t currently express at compile time. This function should return a list sorted by account ID. That function requires a list sorted by account ID to work correctly. No two of these game objects should ever be assigned the same grid position. This function is guaranteed to return one of these known document types no matter what input stream it is given. That function will always return in some bounded time, using a known set of resources.</p>

<p>In other words, you can&#8217;t prove everything, but there are still huge gains to be made proving more than we do today.</p>

<p>My hope is that such proofs will look exactly like quickcheck tests, and quickcheck will someday turn into a tool that proves what it can, and for the rest says, &#8220;I couldn&#8217;t prove it, but at least it passed these test cases.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/is-program-proving-viable-and-useful#comment-532</link>
		<dc:creator><![CDATA[conal]]></dc:creator>
		<pubDate>Mon, 04 Jan 2010 03:36:36 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=94#comment-532</guid>
		<description><![CDATA[&lt;p&gt;@Charles: A monad associativity law can fail in some cases.  Thanks, QuickCheck!  It&#039;s been quite difficult to chase some subtle strictness problems out of the implementation.  I hear &lt;code&gt;unamb&lt;/code&gt; works better in GHC 6.12.1, so there may be some progress, but I&#039;m still wary.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>@Charles: A monad associativity law can fail in some cases.  Thanks, QuickCheck!  It&#8217;s been quite difficult to chase some subtle strictness problems out of the implementation.  I hear <code>unamb</code> works better in GHC 6.12.1, so there may be some progress, but I&#8217;m still wary.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
