<?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>Open eyes Working brain &#187; great people</title>
	<atom:link href="http://federico.galassi.net/category/great-people/feed/" rel="self" type="application/rss+xml" />
	<link>http://federico.galassi.net</link>
	<description>dedicated, in respect and admiration, to the spirit that lives in the computer</description>
	<lastBuildDate>Wed, 25 May 2011 18:08:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Google Test Automation Conference: Testing is not enough</title>
		<link>http://federico.galassi.net/2009/10/26/google-test-automation-conference-testing-is-not-enough/</link>
		<comments>http://federico.galassi.net/2009/10/26/google-test-automation-conference-testing-is-not-enough/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 00:19:22 +0000</pubDate>
		<dc:creator>federico</dc:creator>
				<category><![CDATA[great people]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[simplicity]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[abstraction]]></category>
		<category><![CDATA[declarative]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[functional]]></category>
		<category><![CDATA[gtac]]></category>
		<category><![CDATA[niklaus]]></category>
		<category><![CDATA[wirth]]></category>

		<guid isPermaLink="false">http://federico.galassi.net/?p=164</guid>
		<description><![CDATA[If i had to award the best talk at GTAC 2009, the no-brainer choice would be Prof. Niklaus Wirth opening talk. That&#8217;s not surprising if you consider who the speaker is, one of the great pioneers of computer science in the field of programming languages. What&#8217;s most surprising to me is that he presented a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-170" title="niklaus wirth at google" src="http://federico.galassi.net/wp-content/uploads/2009/10/niklaus.jpg" alt="niklaus wirth at google" width="238" height="240" /></p>
<p>If i had to award the best talk at <a href="http://www.gtac.biz/">GTAC 2009</a>, the no-brainer choice would be Prof. <a href="http://en.wikipedia.org/wiki/Niklaus_Wirth">Niklaus Wirth</a> <a href="http://www.youtube.com/watch?v=8W5Jd_wzB90">opening talk</a>. That&#8217;s not surprising if you consider who the speaker is, one of the great pioneers of computer science in the field of <a href="http://en.wikipedia.org/wiki/Pascal_(programming_language)">programming languages</a>. What&#8217;s most surprising to me is that he presented a (pre)historical review of problems which turned out to be incredibly relevant today and, somehow, forced me to reframe my understanding of testing.</p>
<p><span style="background-color: #ffffff;">Building on <a href="http://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD340.html">1972 Dijkstra dismissal of software testing</a></span></p>
<blockquote><p><span style="background-color: #ffffff;">program testing can be a very effective way to show the presence of bugs, but is hopelessly inadequate for showing their absence.</span></p></blockquote>
<p><span style="background-color: #ffffff;">Wirth explained that testing is treating symptoms instead of the disease, with the disease being our failure to prove correctness of programs by analytical means. This failure has its roots in distant past but it still holds today with languages and tools too complex and unreliable. Languages and tools providing proper abstraction, <em>really</em> hiding the system beneath, would give us the simple and rigorous ground to make programs easy to prove correct, so that no testing would be needed. Unfortunately, this looks far from happening</span></p>
<blockquote><p><span style="background-color: #ffffff;">Programming languages are further from being mathematically nice than they were 50 years ago! They&#8217;re huge and complicated. They contain big libraries, and most of a programmer&#8217;s time is spent finding and learning the right libraries.</span></p></blockquote>
<p><span style="background-color: #ffffff;">and again</span></p>
<blockquote><p><span style="background-color: #ffffff;">What progress has this field actually made? We still struggle with the same problems as 50 years ago: iteration times, debugging, scratching our heads trying to figure out what went wrong.<span> </span></span></p></blockquote>
<p><span style="background-color: #ffffff;"><span>How insightful! Empirical evidence that computer science made no sizable improvement in software construction is everywhere. It&#8217;s like a hamster in a wheel, running nowhere. Why is that? Maybe, we&#8217;ve been piling </span><a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html">leaky abstractions</a><span> on leaky abstractions, apparently hiding information without really simplifying, to the point where progress is drowning in complexity.</span></span></p>
<p><span style="background-color: #ffffff;"><span>Testing is a nice way to easily lay down executable specifications, yet it requires maintenance and quickly degrades as we try to cover more cases. But when we code we have the chance to write self-describing programs which </span><em>are</em><span> executable specifications, reducing the coverage of tests needed, ideally to zero.</span></span></p>
<p>What does it mean in practice? Whenever it&#8217;s possible one should aim at <a href="http://en.wikipedia.org/wiki/Declarative_programming">declarative code</a>. <a href="http://www.martinfowler.com/bliki/DomainSpecificLanguage.html">Domain specific languages</a> and <a href="http://en.wikipedia.org/wiki/Functional_programming">functional programming</a> come to mind. The point being, if a program matches closely its specification, what&#8217;s left to test?</p>
<pre class="brush: ruby">def factorial(n)
    if n == 0
        1
    else
        n * factorial(n-1)
    end
end</pre>
]]></content:encoded>
			<wfw:commentRss>http://federico.galassi.net/2009/10/26/google-test-automation-conference-testing-is-not-enough/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Farewell Fravia+</title>
		<link>http://federico.galassi.net/2009/06/04/farewell-fravia/</link>
		<comments>http://federico.galassi.net/2009/06/04/farewell-fravia/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 14:45:38 +0000</pubDate>
		<dc:creator>federico</dc:creator>
				<category><![CDATA[great people]]></category>
		<category><![CDATA[misc]]></category>

		<guid isPermaLink="false">http://federico.galassi.net/?p=62</guid>
		<description><![CDATA[For the man who had wisdom to seek truth and knowledge and love to teach us. thank you Fravia+, searcher and reverse engineer, 1952-2009]]></description>
			<content:encoded><![CDATA[<p>For the man who had wisdom to <img class="alignright size-full wp-image-63" title="fravia" src="http://federico.galassi.net/wp-content/uploads/2009/06/fravia.jpg" alt="fravia" width="180" height="192" />seek truth and knowledge and love to teach us.</p>
<p>thank you</p>
<p><a href="http://www.searchlores.org">Fravia+</a>, searcher and reverse engineer, 1952-2009</p>
]]></content:encoded>
			<wfw:commentRss>http://federico.galassi.net/2009/06/04/farewell-fravia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

