<?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: A brief point on static typing</title>
	<atom:link href="http://blog.tmorris.net/a-brief-point-on-static-typing/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tmorris.net/a-brief-point-on-static-typing/</link>
	<description>The weblog of Tony Morris</description>
	<pubDate>Sat, 19 May 2012 02:24:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: Tony Morris</title>
		<link>http://blog.tmorris.net/a-brief-point-on-static-typing/#comment-94831</link>
		<dc:creator>Tony Morris</dc:creator>
		<pubDate>Tue, 21 Jun 2011 06:37:31 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/?p=1002#comment-94831</guid>
		<description>When I see "It's not possible to write bug-free programs", it's usually a deeply-held belief that projects as "I have a history of writing programs with bugs." There isn't any requirement to depend on alternative definitions here -- the claimant is simply wrong -- at least in my experience.</description>
		<content:encoded><![CDATA[<p>When I see &#8220;It&#8217;s not possible to write bug-free programs&#8221;, it&#8217;s usually a deeply-held belief that projects as &#8220;I have a history of writing programs with bugs.&#8221; There isn&#8217;t any requirement to depend on alternative definitions here &#8212; the claimant is simply wrong &#8212; at least in my experience.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ziggy</title>
		<link>http://blog.tmorris.net/a-brief-point-on-static-typing/#comment-94609</link>
		<dc:creator>ziggy</dc:creator>
		<pubDate>Mon, 20 Jun 2011 09:56:20 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/?p=1002#comment-94609</guid>
		<description>Interpreting (think misconstruing) informal statements like "It's not possible to write bug-free programs." in a formal way is a sure way to arrive at some counter-intuitive result.

How about "It's raining outside.". The truth depends (not only) on the definition of outside. Is the whole world "outside". Then this proposition is probably true all the time (ok, ignore granularity of time for now). If we define "outside" to be only the first centimeter off the walls of a building; well that's probably covered by the roof and chances are that it's only raining _there_ when it's also very windy.

In both cases we arrive at counter-intuitive intrepretations when trying to formalize an informal statement. That's nothing new.

The same has happened with your formalization of "correct". I'm sure you're totally aware of this fact.

As a side note: A proof may be correct --- but it may proof the wrong thing (something useless). Then it will be of little worth.</description>
		<content:encoded><![CDATA[<p>Interpreting (think misconstruing) informal statements like &#8220;It&#8217;s not possible to write bug-free programs.&#8221; in a formal way is a sure way to arrive at some counter-intuitive result.</p>
<p>How about &#8220;It&#8217;s raining outside.&#8221;. The truth depends (not only) on the definition of outside. Is the whole world &#8220;outside&#8221;. Then this proposition is probably true all the time (ok, ignore granularity of time for now). If we define &#8220;outside&#8221; to be only the first centimeter off the walls of a building; well that&#8217;s probably covered by the roof and chances are that it&#8217;s only raining _there_ when it&#8217;s also very windy.</p>
<p>In both cases we arrive at counter-intuitive intrepretations when trying to formalize an informal statement. That&#8217;s nothing new.</p>
<p>The same has happened with your formalization of &#8220;correct&#8221;. I&#8217;m sure you&#8217;re totally aware of this fact.</p>
<p>As a side note: A proof may be correct &#8212; but it may proof the wrong thing (something useless). Then it will be of little worth.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: artem</title>
		<link>http://blog.tmorris.net/a-brief-point-on-static-typing/#comment-75807</link>
		<dc:creator>artem</dc:creator>
		<pubDate>Tue, 29 Mar 2011 05:52:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/?p=1002#comment-75807</guid>
		<description>rzezeski: guess what? There are bugs in Coq - for the curious, their bugzilla URL is below. 

However Coq has grown rather large and contains stuff far beyond what is strictly necessary for minimal useful programming language.

At its core, it's based on formal system ('Calculus of Inductive Constructions'), with set of axioms proven to have necessary properties. That proof is informal, but published and peer-reviewed - that's as bug-free as one can get in mathematics.

Over the time, various efforts were made to 'bootstrap' Coq - that is, implement and prove correctness of Coq in Coq itself. I don't know how far did they get.
 





http://coq.inria.fr/bugs/buglist.cgi?query_format=advanced&#38;short_desc_type=allwordssubstr&#38;short_desc=&#38;product=Coq&#38;version=8.2&#38;long_desc_type=substring&#38;long_desc=&#38;bug_file_loc_type=allwordssubstr&#38;bug_file_loc=&#38;bug_status=NEW&#38;bug_status=ASSIGNED&#38;bug_status=REOPENED&#38;emailassigned_to1=1&#38;emailtype1=substring&#38;email1=&#38;emailassigned_to2=1&#38;emailreporter2=1&#38;emailcc2=1&#38;emailtype2=substring&#38;email2=&#38;bugidtype=include&#38;bug_id=&#38;chfieldfrom=&#38;chfieldto=Now&#38;chfieldvalue=&#38;cmdtype=doit&#38;order=Importance&#38;field0-0-0=noop&#38;type0-0-0=noop&#38;value0-0-0=</description>
		<content:encoded><![CDATA[<p>rzezeski: guess what? There are bugs in Coq - for the curious, their bugzilla URL is below. </p>
<p>However Coq has grown rather large and contains stuff far beyond what is strictly necessary for minimal useful programming language.</p>
<p>At its core, it&#8217;s based on formal system (&#8217;Calculus of Inductive Constructions&#8217;), with set of axioms proven to have necessary properties. That proof is informal, but published and peer-reviewed - that&#8217;s as bug-free as one can get in mathematics.</p>
<p>Over the time, various efforts were made to &#8216;bootstrap&#8217; Coq - that is, implement and prove correctness of Coq in Coq itself. I don&#8217;t know how far did they get.</p>
<p><a href="http://coq.inria.fr/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Coq&amp;version=8.2&amp;long_desc_type=substring&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Importance&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=" onclick="javascript:pageTracker._trackPageview('/outbound/comment/coq.inria.fr');" rel="nofollow">http://coq.inria.fr/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Coq&amp;version=8.2&amp;long_desc_type=substring&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Importance&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xamuel</title>
		<link>http://blog.tmorris.net/a-brief-point-on-static-typing/#comment-75756</link>
		<dc:creator>Xamuel</dc:creator>
		<pubDate>Mon, 28 Mar 2011 23:25:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/?p=1002#comment-75756</guid>
		<description>A more obvious, and less controversial, example, would be your simple "Hello World!" program, which presumably can be programmed and then proven to be correct with little difficulty...</description>
		<content:encoded><![CDATA[<p>A more obvious, and less controversial, example, would be your simple &#8220;Hello World!&#8221; program, which presumably can be programmed and then proven to be correct with little difficulty&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gabriel C.</title>
		<link>http://blog.tmorris.net/a-brief-point-on-static-typing/#comment-75716</link>
		<dc:creator>Gabriel C.</dc:creator>
		<pubDate>Mon, 28 Mar 2011 20:42:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/?p=1002#comment-75716</guid>
		<description>There's a trend here: we discard untyped programs and we get less bugs, we discard uncontrolled mutation and we get less bugs, and now we discard uncontrolled recursion and we get less bugs.
Maybe the loss of generality is not that big...
I believe (or want to ;) ) that the future of programming lies along the line of Coq et al, and "programming" should be called "applied logic". When you just need to tinker and you don't care about correctness, something like Visual Basic should be enough :D

Last year I took "Formal Program Construction in Type Theory" at my Uni, it was a small "tour de force" with Coq and it blew my mind.</description>
		<content:encoded><![CDATA[<p>There&#8217;s a trend here: we discard untyped programs and we get less bugs, we discard uncontrolled mutation and we get less bugs, and now we discard uncontrolled recursion and we get less bugs.<br />
Maybe the loss of generality is not that big&#8230;<br />
I believe (or want to <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) that the future of programming lies along the line of Coq et al, and &#8220;programming&#8221; should be called &#8220;applied logic&#8221;. When you just need to tinker and you don&#8217;t care about correctness, something like Visual Basic should be enough <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Last year I took &#8220;Formal Program Construction in Type Theory&#8221; at my Uni, it was a small &#8220;tour de force&#8221; with Coq and it blew my mind.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rzezeski</title>
		<link>http://blog.tmorris.net/a-brief-point-on-static-typing/#comment-75432</link>
		<dc:creator>rzezeski</dc:creator>
		<pubDate>Sat, 26 Mar 2011 22:08:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/?p=1002#comment-75432</guid>
		<description>What if there's a bug in Coq?</description>
		<content:encoded><![CDATA[<p>What if there&#8217;s a bug in Coq?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andreas S.</title>
		<link>http://blog.tmorris.net/a-brief-point-on-static-typing/#comment-75406</link>
		<dc:creator>Andreas S.</dc:creator>
		<pubDate>Sat, 26 Mar 2011 18:09:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/?p=1002#comment-75406</guid>
		<description>Hi Tony!
This somehow reminded me of this: http://james-iry.blogspot.com/2010/05/types-la-chart.html
Where I really liked the diagram to visualize the different properties of programming languages in this context.
regards Andreas</description>
		<content:encoded><![CDATA[<p>Hi Tony!<br />
This somehow reminded me of this: <a href="http://james-iry.blogspot.com/2010/05/types-la-chart.html" onclick="javascript:pageTracker._trackPageview('/outbound/comment/james-iry.blogspot.com');" rel="nofollow">http://james-iry.blogspot.com/2010/05/types-la-chart.html</a><br />
Where I really liked the diagram to visualize the different properties of programming languages in this context.<br />
regards Andreas</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Sobral</title>
		<link>http://blog.tmorris.net/a-brief-point-on-static-typing/#comment-75392</link>
		<dc:creator>Daniel Sobral</dc:creator>
		<pubDate>Sat, 26 Mar 2011 16:23:00 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/?p=1002#comment-75392</guid>
		<description>I'm with Kevin on this one. A bug is an undesirable behavior in a program. Not being correct qualifies as a bug, but by no means comprises it.</description>
		<content:encoded><![CDATA[<p>I&#8217;m with Kevin on this one. A bug is an undesirable behavior in a program. Not being correct qualifies as a bug, but by no means comprises it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ivo</title>
		<link>http://blog.tmorris.net/a-brief-point-on-static-typing/#comment-75369</link>
		<dc:creator>Ivo</dc:creator>
		<pubDate>Sat, 26 Mar 2011 12:33:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/?p=1002#comment-75369</guid>
		<description>When people say "It’s not possible to write bug-free programs.", I assume they really mean "In practice, in the languages we use, it turns out that I, and most other people -- including known great programmers --, are incapable of writing bug-free programs". That is an undeniable truth, but it can't be used to justify having bugs in your code, because better programmers introduce fewer and 'simpler' bugs, independent of the language.</description>
		<content:encoded><![CDATA[<p>When people say &#8220;It’s not possible to write bug-free programs.&#8221;, I assume they really mean &#8220;In practice, in the languages we use, it turns out that I, and most other people &#8212; including known great programmers &#8211;, are incapable of writing bug-free programs&#8221;. That is an undeniable truth, but it can&#8217;t be used to justify having bugs in your code, because better programmers introduce fewer and &#8217;simpler&#8217; bugs, independent of the language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tony Morris</title>
		<link>http://blog.tmorris.net/a-brief-point-on-static-typing/#comment-75359</link>
		<dc:creator>Tony Morris</dc:creator>
		<pubDate>Sat, 26 Mar 2011 10:15:20 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/?p=1002#comment-75359</guid>
		<description>Kevin,
Using a web application as the example, write it in such a way as you can (aspire to) prove the sub-program. The "running forever" part becomes largely irrelevant.</description>
		<content:encoded><![CDATA[<p>Kevin,<br />
Using a web application as the example, write it in such a way as you can (aspire to) prove the sub-program. The &#8220;running forever&#8221; part becomes largely irrelevant.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

