<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	>
<channel>
	<title>Comments on: What are you trying to prove?</title>
	<atom:link href="http://enfranchisedmind.com/blog/posts/what-are-you-trying-to-prove/feed/" rel="self" type="application/rss+xml" />
	<link>http://enfranchisedmind.com/blog/posts/what-are-you-trying-to-prove/</link>
	<description>programming, politics, &#38; other religious issues</description>
	<lastBuildDate>Mon, 15 Mar 2010 00:31:40 +0000</lastBuildDate>
	
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: The Blog&#8217;s Most Popular Posts &#124; Enfranchised Mind</title>
		<link>http://enfranchisedmind.com/blog/posts/what-are-you-trying-to-prove/#comment-34389</link>
		<dc:creator>The Blog&#8217;s Most Popular Posts &#124; Enfranchised Mind</dc:creator>
		<pubDate>Sun, 12 Apr 2009 04:21:34 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/11/19/what-are-you-trying-to-prove/#comment-34389</guid>
		<description>[...] What are you trying to prove? [...]</description>
		<content:encoded><![CDATA[<p>[...] What are you trying to prove? [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://enfranchisedmind.com/blog/posts/what-are-you-trying-to-prove/#comment-31860</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Wed, 28 Nov 2007 04:17:26 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/11/19/what-are-you-trying-to-prove/#comment-31860</guid>
		<description>My apologies for not responding sooner- I was away from the net for a while.  And apologies for writting a long response- I didn&#039;t have the time to write a short one.


Reg first:

&lt;BLOCKQUOTE&gt;I am going to challenge you now. I am not trying to provoke a fight, I honesty want YOU to go away and say hmmm. Why is it that you are trying to paint me as such an absolutist, that when I say “I like static typing but I’m currently achieving my personal goals with a dynamic language” that I must be against static typing?

The question I put to you is this: could it be that YOU are the one who sees the world in right and wrong, black and white, correct and incorrect? If that’s the case, there is nothing wrong with your beliefs. I am not saying you should relax and blur the lines between good and bad in your mind.&lt;/BLOCKQUOTE&gt;

Guess what?  I&#039;ve been doing most of my programming recently in Perl.  For the things I&#039;ve been doing- reading simply structured text files (csv, pipe seperated, fixed length, etc.) and tossing them into a database, or connecting to the database and firing SQL at it, or reading data from the database and spitting out simply formatted files, perl has a lot to recommend it, and is a better tool for the job than Ocaml.  Ocaml would be better than Java or C++ for this job, but that&#039;s damning with faint praise, IMHO.  So, by the criteria you&#039;re using to paint me as painting you as an absolutists (which is working, by the way- see Steve Vinoski&#039;s blog), I too hate static typing.

Um, right.

I&#039;ve gone and reread all three posts posts (yours, mine, and the original) just now.  And I did paint with too broad of a brush, and I apologize.  In my defense, I was a) tired, and b) had passed up commenting on the original article, thinking &quot;Reg is already on my case about flaming about static typing, and if I respond to this one he&#039;ll be right&quot;.  But then you went and called the article &quot;The best question asked this week&quot;, and I let fly.  But for the original posting, I was spot on.  Consider the following quote:

&lt;BLOCKQUOTE&gt;The point of this story is that trying to prove the correctness of computer programs is a lot like trying to solve a set of partial differential equations. It works great on small trivial programs, but is incredibly hard and costly on anything resembling a real world software system.&lt;/BLOCKQUOTE&gt;

It&#039;s hard for me to interpret that as anything except being anti-static-typing (static typing being a weak form of code proofs, and there being a very strong cross over between the Hindley-Milner static typing crowd and the code proofs crowd).

The bigger the system, the more important I feel static typing, and at the extreme even code proofs, are.  Proofs that the code does at least what is it intended to do, even if it doesn&#039;t do what it needs to.  Because the larger the system, the more likely there will be unintended interactions, and the greater the complexity.  Frankly, we humans suck at writting programs that do what we intend them to do, in all environments and for all inputs.  Mostly does what we intend it to do, in most environments and with most inputs, yeah.  Occassionally, and with heroic effort.  But most programs are riddled with memory leaks, security holes, crashes, corruption, and just general suckiness.

And, by and large, most programmers don&#039;t admit that- and don&#039;t admit that there is any thing computer science- the actual academic stuff- might have to teach them about making programs that don&#039;t suck quite so badly.  In fact, many programmers are not just indifferent to theory, they&#039;re outright hostile to it.  You don&#039;t have to spend too much time on slashdot to find this hostility, and it shows up even on digg and reddit.  In either case, huge tracts of theory are not only not know by most programmers, most programmers don&#039;t even know it exists.

While I&#039;m on the subject, Saphirecat, go take a look at Software Transactional Memory.  Haskell has done exactly that, used it&#039;s type system (and purely functional programming)_to allow it to prove that there are no race conditions.  Ocaml doesn&#039;t have this, but that&#039;s because Ocaml isn&#039;t that advanced of a language- the core of Ocaml (the Caml language) is &lt;a HREF=&quot;http://caml.inria.fr/about/history.en.html&quot; rel=&quot;nofollow&quot;&gt;20 years old&lt;/A&gt; (Caml predates Java), and SML, the language Ocaml is based on, is over 30 years old (SML is older than C++).

But this hostility to theory is having a cost.  As Java seems to have been nominated the ultimate in &quot;theory&quot; languages by the theory-hostile, the industry as a whole is undoing what little help theory has played in making programming more usefull.  It&#039;s not just typing- Java&#039;s GC is almost as bad (I have a post brewing on that).  GC doesn&#039;t have to be complicated and slow, people.

But this has given me something of an itchy trigger finger on the subject- especially considering I too was once an ignorant sot.  I learned Ocaml because I had set out to write &lt;a HREF=&quot;http://sourceforge.net/projects/nomen/&quot; rel=&quot;nofollow&quot;&gt;&quot;a better Java than Java&quot;&lt;/A&gt;, and people kept telling me that I should learn a functional programming language, as it&#039;d improve the language I was designing.  To make a long story short, I learned Ocaml, which turned out to be (in every possible way) a better language than what I was designing, so my language went the way of the smallpox virus (extinct and not missed).  You can probably scare up some good quotes by me from my days on comp.lang.java.advocacy, if you&#039;ve a mind to.</description>
		<content:encoded><![CDATA[<p>My apologies for not responding sooner- I was away from the net for a while.  And apologies for writting a long response- I didn&#8217;t have the time to write a short one.</p>
<p>Reg first:</p>
<blockquote><p>I am going to challenge you now. I am not trying to provoke a fight, I honesty want YOU to go away and say hmmm. Why is it that you are trying to paint me as such an absolutist, that when I say “I like static typing but I’m currently achieving my personal goals with a dynamic language” that I must be against static typing?</p>
<p>The question I put to you is this: could it be that YOU are the one who sees the world in right and wrong, black and white, correct and incorrect? If that’s the case, there is nothing wrong with your beliefs. I am not saying you should relax and blur the lines between good and bad in your mind.</p></blockquote>
<p>Guess what?  I&#8217;ve been doing most of my programming recently in Perl.  For the things I&#8217;ve been doing- reading simply structured text files (csv, pipe seperated, fixed length, etc.) and tossing them into a database, or connecting to the database and firing SQL at it, or reading data from the database and spitting out simply formatted files, perl has a lot to recommend it, and is a better tool for the job than Ocaml.  Ocaml would be better than Java or C++ for this job, but that&#8217;s damning with faint praise, IMHO.  So, by the criteria you&#8217;re using to paint me as painting you as an absolutists (which is working, by the way- see Steve Vinoski&#8217;s blog), I too hate static typing.</p>
<p>Um, right.</p>
<p>I&#8217;ve gone and reread all three posts posts (yours, mine, and the original) just now.  And I did paint with too broad of a brush, and I apologize.  In my defense, I was a) tired, and b) had passed up commenting on the original article, thinking &#8220;Reg is already on my case about flaming about static typing, and if I respond to this one he&#8217;ll be right&#8221;.  But then you went and called the article &#8220;The best question asked this week&#8221;, and I let fly.  But for the original posting, I was spot on.  Consider the following quote:</p>
<blockquote><p>The point of this story is that trying to prove the correctness of computer programs is a lot like trying to solve a set of partial differential equations. It works great on small trivial programs, but is incredibly hard and costly on anything resembling a real world software system.</p></blockquote>
<p>It&#8217;s hard for me to interpret that as anything except being anti-static-typing (static typing being a weak form of code proofs, and there being a very strong cross over between the Hindley-Milner static typing crowd and the code proofs crowd).</p>
<p>The bigger the system, the more important I feel static typing, and at the extreme even code proofs, are.  Proofs that the code does at least what is it intended to do, even if it doesn&#8217;t do what it needs to.  Because the larger the system, the more likely there will be unintended interactions, and the greater the complexity.  Frankly, we humans suck at writting programs that do what we intend them to do, in all environments and for all inputs.  Mostly does what we intend it to do, in most environments and with most inputs, yeah.  Occassionally, and with heroic effort.  But most programs are riddled with memory leaks, security holes, crashes, corruption, and just general suckiness.</p>
<p>And, by and large, most programmers don&#8217;t admit that- and don&#8217;t admit that there is any thing computer science- the actual academic stuff- might have to teach them about making programs that don&#8217;t suck quite so badly.  In fact, many programmers are not just indifferent to theory, they&#8217;re outright hostile to it.  You don&#8217;t have to spend too much time on slashdot to find this hostility, and it shows up even on digg and reddit.  In either case, huge tracts of theory are not only not know by most programmers, most programmers don&#8217;t even know it exists.</p>
<p>While I&#8217;m on the subject, Saphirecat, go take a look at Software Transactional Memory.  Haskell has done exactly that, used it&#8217;s type system (and purely functional programming)_to allow it to prove that there are no race conditions.  Ocaml doesn&#8217;t have this, but that&#8217;s because Ocaml isn&#8217;t that advanced of a language- the core of Ocaml (the Caml language) is <a HREF="http://caml.inria.fr/about/history.en.html" rel="nofollow">20 years old</a> (Caml predates Java), and SML, the language Ocaml is based on, is over 30 years old (SML is older than C++).</p>
<p>But this hostility to theory is having a cost.  As Java seems to have been nominated the ultimate in &#8220;theory&#8221; languages by the theory-hostile, the industry as a whole is undoing what little help theory has played in making programming more usefull.  It&#8217;s not just typing- Java&#8217;s GC is almost as bad (I have a post brewing on that).  GC doesn&#8217;t have to be complicated and slow, people.</p>
<p>But this has given me something of an itchy trigger finger on the subject- especially considering I too was once an ignorant sot.  I learned Ocaml because I had set out to write <a HREF="http://sourceforge.net/projects/nomen/" rel="nofollow">&#8220;a better Java than Java&#8221;</a>, and people kept telling me that I should learn a functional programming language, as it&#8217;d improve the language I was designing.  To make a long story short, I learned Ocaml, which turned out to be (in every possible way) a better language than what I was designing, so my language went the way of the smallpox virus (extinct and not missed).  You can probably scare up some good quotes by me from my days on comp.lang.java.advocacy, if you&#8217;ve a mind to.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Absolutes :: Steve Vinoski&#8217;s Blog</title>
		<link>http://enfranchisedmind.com/blog/posts/what-are-you-trying-to-prove/#comment-31840</link>
		<dc:creator>Absolutes :: Steve Vinoski&#8217;s Blog</dc:creator>
		<pubDate>Sat, 24 Nov 2007 02:58:23 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/11/19/what-are-you-trying-to-prove/#comment-31840</guid>
		<description>[...] from this comment Reg made on another blog, it seems that he&#8217;s being accused of being an absolutist, in this [...]</description>
		<content:encoded><![CDATA[<p>[...] from this comment Reg made on another blog, it seems that he&#8217;s being accused of being an absolutist, in this [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sapphirecat</title>
		<link>http://enfranchisedmind.com/blog/posts/what-are-you-trying-to-prove/#comment-31838</link>
		<dc:creator>sapphirecat</dc:creator>
		<pubDate>Thu, 22 Nov 2007 14:33:39 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/11/19/what-are-you-trying-to-prove/#comment-31838</guid>
		<description>I think the comment about race conditions is silly. Imagine it written thus:

&quot;OK. Now go and write static type declarations that prevent your program from having any race conditions. I’ll wait.&quot;

So your &quot;can&#039;t do it&quot; example ends up cutting both ways. Typical languages don&#039;t have declarative lock-taking (it&#039;s all imperative code) so they can&#039;t have any declarative means to make assertions about those locks. It also seems like if the compiler has enough knowledge to check deadlocks and race conditions, then it has enough knowledge to take locks for us in the first place, and we wouldn&#039;t have to worry about it ourselves.</description>
		<content:encoded><![CDATA[<p>I think the comment about race conditions is silly. Imagine it written thus:</p>
<p>&#8220;OK. Now go and write static type declarations that prevent your program from having any race conditions. I’ll wait.&#8221;</p>
<p>So your &#8220;can&#8217;t do it&#8221; example ends up cutting both ways. Typical languages don&#8217;t have declarative lock-taking (it&#8217;s all imperative code) so they can&#8217;t have any declarative means to make assertions about those locks. It also seems like if the compiler has enough knowledge to check deadlocks and race conditions, then it has enough knowledge to take locks for us in the first place, and we wouldn&#8217;t have to worry about it ourselves.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Reg Braithwaite</title>
		<link>http://enfranchisedmind.com/blog/posts/what-are-you-trying-to-prove/#comment-31837</link>
		<dc:creator>Reg Braithwaite</dc:creator>
		<pubDate>Thu, 22 Nov 2007 00:09:18 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/11/19/what-are-you-trying-to-prove/#comment-31837</guid>
		<description>re: The Blues Brothers

I chose that quote because I think that two people comparing and contrasting Ocaml vs. Ruby probably have a lot in common.</description>
		<content:encoded><![CDATA[<p>re: The Blues Brothers</p>
<p>I chose that quote because I think that two people comparing and contrasting Ocaml vs. Ruby probably have a lot in common.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
