<br><br><div><span class="gmail_quote">On 4/18/07, <b class="gmail_sendername">Taillefer, Troy (EXP)</b> &lt;<a href="mailto:troy.taillefer@lmco.com">troy.taillefer@lmco.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>I have to strongly disagree with the statement that developers like to<br>debug. Debugging is necessary because you can&#39;t reason about any<br>&quot;sizeable&quot; piece of code just is not tractable even in Haskell. Now
<br>automated tools for reasoning about programs are very cool but lets face<br>it no real world developer will sit down start to manually formally<br>reason about large pieces of code.<br><br></blockquote></div><br>I think the emphasis when mentioning &quot;reasoning&quot; really shouldn&#39;t be &quot;you can reason formally about your programs and prove that they don&#39;t go wrong&quot;, nor &quot;when it has gone wrong, you can reason about the program to figure out why&quot;, it should be &quot;since the language doesn&#39;t do batshit insane things behind your back, your programs will mostly work the first time&quot;. 
<br>The &quot;reasoning&quot; isn&#39;t an active task that you schedule time for, at least for a casual user like me, it&#39;s part of the actual programming. You do &quot;reasoning&quot; when writing in C++ as well, but you often get it wrong (because the language is, shall we say, unreasonable?) and that causes bugs.
<br clear="all"><br>-- <br>Sebastian Sylvan<br>+44(0)7857-300802<br>UIN: 44640862