<?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"
xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/"
	>
<channel>
	<title>Comments on: A Defense of Prototypes, or, Why Does Tom Christiansen Hate Perl?</title>
	<atom:link href="http://enfranchisedmind.com/blog/posts/a-defense-of-prototypes/feed/" rel="self" type="application/rss+xml" />
	<link>http://enfranchisedmind.com/blog/posts/a-defense-of-prototypes/</link>
	<description>programming, politics, &#38; other religious issues</description>
	<lastBuildDate>Wed, 08 Feb 2012 14:16:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: Ruby Can&#8217;t Be Parsed? &#124; Enfranchised Mind</title>
		<link>http://enfranchisedmind.com/blog/posts/a-defense-of-prototypes/#comment-36749</link>
		<dc:creator>Ruby Can&#8217;t Be Parsed? &#124; Enfranchised Mind</dc:creator>
		<pubDate>Mon, 17 Aug 2009 14:15:54 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2005/10/19/34#comment-36749</guid>
		<description>[...] If so, then parsing Ruby is equivalent to solving the halting problem. The proof is the same as Perl Cannot Be Parsed: A Formal Proof, with appropriate translation of the code. Notably, this proof is thwarted by the use of perl prototypes (unless you have optional arguments): more on prototypes at A Defense of Prototypes, or, Why Does Tom Christiansen Hate Perl?. [...]</description>
		<content:encoded><![CDATA[<p>[...] If so, then parsing Ruby is equivalent to solving the halting problem. The proof is the same as Perl Cannot Be Parsed: A Formal Proof, with appropriate translation of the code. Notably, this proof is thwarted by the use of perl prototypes (unless you have optional arguments): more on prototypes at A Defense of Prototypes, or, Why Does Tom Christiansen Hate Perl?. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enfranchised Mind &#187; Ruby is the Future</title>
		<link>http://enfranchisedmind.com/blog/posts/a-defense-of-prototypes/#comment-36524</link>
		<dc:creator>Enfranchised Mind &#187; Ruby is the Future</dc:creator>
		<pubDate>Fri, 24 Jul 2009 14:56:56 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2005/10/19/34#comment-36524</guid>
		<description>[...] occasional visits to dot-Net and OCaml. For a long while, I became enamored with static typing (cite, cite, cite), but through my work with Cornerstone and working with Scala, I&#8217;ve had a [...]</description>
		<content:encoded><![CDATA[<p>[...] occasional visits to dot-Net and OCaml. For a long while, I became enamored with static typing (cite, cite, cite), but through my work with Cornerstone and working with Scala, I&#8217;ve had a [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enfranchised Mind &#187; A Realization on Maintainability</title>
		<link>http://enfranchisedmind.com/blog/posts/a-defense-of-prototypes/#comment-33276</link>
		<dc:creator>Enfranchised Mind &#187; A Realization on Maintainability</dc:creator>
		<pubDate>Fri, 23 May 2008 14:48:07 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2005/10/19/34#comment-33276</guid>
		<description>[...] Despite what a certain curmudgeonly ex-coworker of mine might claim, huge Perl scripts are a maintenance nightmare. They&#8217;re really a pain. Ranging from surprising overrides of $_ to wrong arguments being passed around to funky results from eval to magical exceptions, the major Perl applications I&#8217;ve worked on have had a lot of pain. The best helper to solve this problem is perl -c, use warnings; and use strict; &#8212; in other words, bringing more restrictive syntax and typing into the system. Prototypes even help, despite their unpopularity. [...]</description>
		<content:encoded><![CDATA[<p>[...] Despite what a certain curmudgeonly ex-coworker of mine might claim, huge Perl scripts are a maintenance nightmare. They&#8217;re really a pain. Ranging from surprising overrides of $_ to wrong arguments being passed around to funky results from eval to magical exceptions, the major Perl applications I&#8217;ve worked on have had a lot of pain. The best helper to solve this problem is perl -c, use warnings; and use strict; &#8212; in other words, bringing more restrictive syntax and typing into the system. Prototypes even help, despite their unpopularity. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enfranchised Mind</title>
		<link>http://enfranchisedmind.com/blog/posts/a-defense-of-prototypes/#comment-31311</link>
		<dc:creator>Enfranchised Mind</dc:creator>
		<pubDate>Wed, 11 Jul 2007 15:18:51 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2005/10/19/34#comment-31311</guid>
		<description>&lt;strong&gt;The &#8220;Hole in the middle&#8221; pattern...&lt;/strong&gt;

Surfing on Chia&#8217;s Functional Longing article, I wanted to post an experience I had recently, working on some C# code.  The point of this blog entry is that it&#8217;s not what a programming language make possible, it&#8217;s what a programming la...</description>
		<content:encoded><![CDATA[<p><strong>The &#8220;Hole in the middle&#8221; pattern&#8230;</strong></p>
<p>Surfing on Chia&#8217;s Functional Longing article, I wanted to post an experience I had recently, working on some C# code.  The point of this blog entry is that it&#8217;s not what a programming language make possible, it&#8217;s what a programming la&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bhurt-aw</title>
		<link>http://enfranchisedmind.com/blog/posts/a-defense-of-prototypes/#comment-22</link>
		<dc:creator>bhurt-aw</dc:creator>
		<pubDate>Wed, 19 Oct 2005 17:47:04 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2005/10/19/34#comment-22</guid>
		<description>I think I, Mr. Ocaml Advocate, am going to take a contrarian position here, and argue that &lt;em&gt;within the context of perl&lt;/em&gt; prototypes &lt;em&gt;are&lt;/em&gt; a bad idea.

OK, I&#039;ll give you a minute to pick yourself back up off the floor and for the heart palpitations to die down.  Breathe.

I disbelieve in golden hammer languages, the one true language that is the right, or even workable, language for all purposes.  This is true for Ocaml- you shouldn&#039;t write an OS in it, nor is it a good language for groking through log files looking for port scanners.  It&#039;s true for C- C is also a cruddy language for groking through port scanners, or just about any language where you&#039;re not directly interfacing with hardware.  C++ is exception for being the wrong language for any purpose.  And it&#039;s true for Perl.

So the question becomes: what is Perl, what is it good for?  Perl started life as a performance hack for bourne shell scripts.  And, to a large extent, it still is.  Perl is a good language for those short scripts to grok through log files, make sure the proper daemons are running, etc.  

In this context, prototypes are too heavy weight- at best, they&#039;re meaningless noise, at worst they&#039;re impediments.  If the entire program is 100 lines long, there is no advantage to black boxes- you can hold the entire program in your head, as such that is the most efficient way to approach the problem.  It&#039;s only when you&#039;re programming in the large that prototypes become usefull, and very shortly thereafter (IMHO) required.

The car analogy applies here- what is the better vehicle, the 18-wheeled semitruck, or the Ford escort?  Well, it depends.  If what you want to do is to run down to the grocery store for a loaf of bread and a gallon of milk, the escort is a much more practical vehicle.  If what you want to do is haul a household&#039;s worth of stuff from one city to another, the semitruck is a much more practical vehicle.</description>
		<content:encoded><![CDATA[<p>I think I, Mr. Ocaml Advocate, am going to take a contrarian position here, and argue that <em>within the context of perl</em> prototypes <em>are</em> a bad idea.</p>
<p>OK, I&#8217;ll give you a minute to pick yourself back up off the floor and for the heart palpitations to die down.  Breathe.</p>
<p>I disbelieve in golden hammer languages, the one true language that is the right, or even workable, language for all purposes.  This is true for Ocaml- you shouldn&#8217;t write an OS in it, nor is it a good language for groking through log files looking for port scanners.  It&#8217;s true for C- C is also a cruddy language for groking through port scanners, or just about any language where you&#8217;re not directly interfacing with hardware.  C++ is exception for being the wrong language for any purpose.  And it&#8217;s true for Perl.</p>
<p>So the question becomes: what is Perl, what is it good for?  Perl started life as a performance hack for bourne shell scripts.  And, to a large extent, it still is.  Perl is a good language for those short scripts to grok through log files, make sure the proper daemons are running, etc.  </p>
<p>In this context, prototypes are too heavy weight- at best, they&#8217;re meaningless noise, at worst they&#8217;re impediments.  If the entire program is 100 lines long, there is no advantage to black boxes- you can hold the entire program in your head, as such that is the most efficient way to approach the problem.  It&#8217;s only when you&#8217;re programming in the large that prototypes become usefull, and very shortly thereafter (IMHO) required.</p>
<p>The car analogy applies here- what is the better vehicle, the 18-wheeled semitruck, or the Ford escort?  Well, it depends.  If what you want to do is to run down to the grocery store for a loaf of bread and a gallon of milk, the escort is a much more practical vehicle.  If what you want to do is haul a household&#8217;s worth of stuff from one city to another, the semitruck is a much more practical vehicle.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

