<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>keeping simple &#187; dijkstra</title>
	<atom:link href="http://www.yodaiken.com/tag/dijkstra/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yodaiken.com</link>
	<description>Systems software technology and business</description>
	<lastBuildDate>Sun, 01 Jan 2012 18:30:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>The source of  error (updated)</title>
		<link>http://www.yodaiken.com/2009/07/the-source-of-error/</link>
		<comments>http://www.yodaiken.com/2009/07/the-source-of-error/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 05:10:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[specification]]></category>
		<category><![CDATA[automata]]></category>
		<category><![CDATA[axiomatic methods]]></category>
		<category><![CDATA[dijkstra]]></category>
		<category><![CDATA[formal methods]]></category>

		<guid isPermaLink="false">http://www.yodaiken.com/?p=451</guid>
		<description><![CDATA[Here&#8217;s Edsger Dijkstra discussing the birth of the use of axiomatics in computer science &#8211; the start of &#8220;formal methods&#8221; research.Â  What&#8217;s striking is the assumed choice between &#8220;axiomatic&#8221; and &#8220;mechanistic&#8221; as if there was no other way. In a &#8230; <a href="http://www.yodaiken.com/2009/07/the-source-of-error/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="dijsstra letter" href="http://www.cs.utexas.edu/~EWD/transcriptions/EWD04xx/EWD454.html" target="_self" onclick="pageTracker._trackPageview('/outgoing/www.cs.utexas.edu/_EWD/transcriptions/EWD04xx/EWD454.html?referer=');">Here&#8217;s </a>Edsger Dijkstra discussing the birth of the use of axiomatics in computer science &#8211; the start of &#8220;formal methods&#8221; research.Â  What&#8217;s striking is the assumed choice between &#8220;axiomatic&#8221; and &#8220;mechanistic&#8221; as if there was no other way. In a <a title="dijsstra letter2" href="http://www.cs.utexas.edu/~EWD/transcriptions/EWD04xx/EWD463.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.cs.utexas.edu/_EWD/transcriptions/EWD04xx/EWD463.html?referer=');">later note</a> he writes:</p>
<blockquote><p><span style="color: #800000;">And now we are back at our old dilemma. Either we take by definition all properties of the model as relevant, or we specify in one way or another which of its properties are the relevant ones. In the first case we have failed to introduce in the name of &#8220;divide et impera&#8221; an interface that would allow us to divide and rule and the study of how we could build upon the (only implicitly defined) interface seems bound to deteriorate into a study of the model itself; in the second case we are again close to the axiomatic method&#8230;.</span></p>
<p><span style="color: #800000;">[...]<br />
</span></p>
<p><span style="color: #800000;">Or, to put it in another way: if the traditional automata theory tends to make us insensitive to the role interfaces could and should play in coping with complex designs, should it then (continue to) occupy a central position in computing science curricula?</span></p></blockquote>
<p>And I&#8217;m struck by the ideaÂ  that seems utterly wrong to me, that one either uses the methods of formal logic OR one is stuck without any ability to abstract or underspecify</p>
<blockquote><p><em>The reason mathematics has advanced so much was not because of the Euclidean axioms-lemma-theorem straitjacket, but </em><em>in spite</em> of it. Luckily, when we actually discover mathematics, we do it the Babylonian way, empirically and algorithmically. It is only when it is time to present it, that we put on the stifling Greek formal attire.</p></blockquote>
<p>so says <a href="http://www.math.rutgers.edu/%7Ezeilberg/Opinion43.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.math.rutgers.edu/_7Ezeilberg/Opinion43.html?referer=');">Doron Zeilberger </a></p>
<p>UPDATE: I have a draft of the &#8220;<a title="note on process algebra" href="http://www.yodaiken.com/failure-to-communicate-process-algebras-draft/" target="_blank">process algebras considered harmful</a>&#8221; note up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yodaiken.com/2009/07/the-source-of-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updated Dijkstra vs Perlis (really, DeMillo)</title>
		<link>http://www.yodaiken.com/2008/11/updated-dijkstra-vs-perlis-really-demillo/</link>
		<comments>http://www.yodaiken.com/2008/11/updated-dijkstra-vs-perlis-really-demillo/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 14:09:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[security+fault-tolerance]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[software security]]></category>
		<category><![CDATA[dijkstra]]></category>
		<category><![CDATA[formal methods]]></category>
		<category><![CDATA[verification]]></category>

		<guid isPermaLink="false">http://www.yodaiken.com/?p=183</guid>
		<description><![CDATA[See below.]]></description>
			<content:encoded><![CDATA[<p>See <a href="http://www.yodaiken.com/2008/11/dijkstra-versus-perlisdijkstra-versus-perlis/" target="_self">below</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yodaiken.com/2008/11/updated-dijkstra-vs-perlis-really-demillo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dijkstra versus Perlis (updated)</title>
		<link>http://www.yodaiken.com/2008/11/dijkstra-versus-perlis/</link>
		<comments>http://www.yodaiken.com/2008/11/dijkstra-versus-perlis/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 17:00:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[security+fault-tolerance]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[software security]]></category>
		<category><![CDATA[demillo]]></category>
		<category><![CDATA[dijkstra]]></category>
		<category><![CDATA[formal methods]]></category>
		<category><![CDATA[perlis]]></category>
		<category><![CDATA[verification]]></category>

		<guid isPermaLink="false">http://www.yodaiken.com/?p=175</guid>
		<description><![CDATA[Here&#8217;s Dijkstra He [Perlis] published a very obnoxious paper arguing against a mathematical approach to programming cite Here&#8217;s the paper by De Millo, Lipton and Perlis. It starts as follows: Many people have argued that computer programming should strive to &#8230; <a href="http://www.yodaiken.com/2008/11/dijkstra-versus-perlis/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s Dijkstra</p>
<blockquote><p><em>He [Perlis] published a very obnoxious paper arguing against a mathematical approach to programming</em> <a title="Perlis" href="http://www.cbi.umn.edu/oh/pdf.phtml?id=296" onclick="pageTracker._trackPageview('/outgoing/www.cbi.umn.edu/oh/pdf.phtml?id=296&amp;referer=');">cite</a></p></blockquote>
<p><a title="de_millo paper" href="http://www.yodaiken.com/papers/p271-de_millo.pdf">Here&#8217;s</a> the paper by De Millo, Lipton and Perlis. It starts as follows:</p>
<blockquote><p>Many people have argued that computer programming should strive to become more like mathematics. Maybe so, but not in the way they seem to think. The aim of program verification, an attempt to make programming more mathematics-like, is to increase dramatically one&#8217;s confidence in the correct functioning of a piece of software, and the device that verifiers use to achieve this goal is a long chain of formal, deductive logic. In mathematics, the aim is to increase one&#8217;s confidence in the correctness of a theorem, and it&#8217;s true that one of the devices mathematicians could in theory use to achieve this goal is a long chain of formal logic. But in fact they don&#8217;t. What they use is a proof, a very different animal. Nor does the proof settle the matter; contrary to what its name suggests, a proof is only one step in the direction of confidence. We believe that, in the end, it is a social process that determines whether mathematicians feel confident about a theorem&#8211;and we believe that, because no comparable social process can take place among program verifiers, program verification is bound to fail.</p></blockquote>
<p>To me, the problem with Dijkstra is that he was so sharp and such a good writer that he was able to make persuasive cases out of wrong ideas. Dijkstra wanted to be a scientist in the model of theoretical physics, not an engineer. I&#8217;m pretty confident that Dijkstra was wrong: programming is engineering &#8211; in fact, physics is not as far from engineering as some people would like to believe. I&#8217;m not a huge fan of the engineering discipline as it exists in the USA. It has all sorts of negative aspects &#8211; including those Dijkstra railed against. But the vision of a programmer as, not a mathematician, but a formal logician flying far above the grubby compromises and trade-offs of mere engineering in a platonic bubble of pure reasoning is wrongheaded.</p>
<p>Dijkstra published some criticism of the Demillo paper at the time and <a title="ACM link to discussion " href="http://portal.acm.org/citation.cfm?id=1005888.1005891" target="_blank" onclick="pageTracker._trackPageview('/outgoing/portal.acm.org/citation.cfm?id=1005888.1005891&amp;referer=');">in their response</a> the authors stated something that, as far as I know, remains true</p>
<blockquote><p>We must begin by refusing to concede that our confidence in a piece of<br />
real software has ever been increased by a proof of its correctness</p></blockquote>
<p>When I was in graduate school, a famous formal methods scholar came for a talk and explained to us that formal methods were needed if we were ever going to develop fault tolerant software. I pointed out that, for example, the Tandem Software worked pretty well in practice. &#8220;It cannot&#8221;, retorted the famous scholar.</p>
<p>So there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yodaiken.com/2008/11/dijkstra-versus-perlis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

