<?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:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for A Programmers Place</title>
	<atom:link href="http://vanemden.wordpress.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://vanemden.wordpress.com</link>
	<description>Observations, Reviews, and Essays</description>
	<lastBuildDate>Thu, 27 Aug 2009 21:34:00 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Ventilated Prose by Rowley</title>
		<link>http://vanemden.wordpress.com/2009/01/01/ventilated-prose/#comment-145</link>
		<dc:creator>Rowley</dc:creator>
		<pubDate>Thu, 27 Aug 2009 21:34:00 +0000</pubDate>
		<guid isPermaLink="false">http://vanemden.wordpress.com/?p=59#comment-145</guid>
		<description>And yet, there is no Wikipedia entry on Ventilated Prose.

Excellent article.</description>
		<content:encoded><![CDATA[<p>And yet, there is no Wikipedia entry on Ventilated Prose.</p>
<p>Excellent article.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on I remember Edsger Dijkstra (1930 &#8211; 2002) by Dijkstra, ALGOL 60, 與 van Wijngaarden</title>
		<link>http://vanemden.wordpress.com/2008/05/06/i-remember-edsger-dijkstra-1930-2002/#comment-143</link>
		<dc:creator>Dijkstra, ALGOL 60, 與 van Wijngaarden</dc:creator>
		<pubDate>Sun, 05 Jul 2009 15:01:31 +0000</pubDate>
		<guid isPermaLink="false">http://vanemden.wordpress.com/?p=15#comment-143</guid>
		<description>[...] 從 Maarten van Emden 的 blog 上看到這段關於 Edsger Dijkstra 與第一個 ALGOL 編譯器的軼事。 [...]</description>
		<content:encoded><![CDATA[<p>[...] 從 Maarten van Emden 的 blog 上看到這段關於 Edsger Dijkstra 與第一個 ALGOL 編譯器的軼事。 [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Against Structured Programming by Soei</title>
		<link>http://vanemden.wordpress.com/2009/04/22/against-structured-programming/#comment-133</link>
		<dc:creator>Soei</dc:creator>
		<pubDate>Sun, 24 May 2009 02:42:49 +0000</pubDate>
		<guid isPermaLink="false">http://vanemden.wordpress.com/?p=87#comment-133</guid>
		<description>The idea of programs as transformations or operators from state to state, where states are described by a set of assertions is very interesting. We need to look at more extended examples, and see what operations are possible for two triples, other than composition as shown in the given example. The link to structured programming and goto&#039;s is I think less significant and less interesting, in fact somewhat distracting the basic idea</description>
		<content:encoded><![CDATA[<p>The idea of programs as transformations or operators from state to state, where states are described by a set of assertions is very interesting. We need to look at more extended examples, and see what operations are possible for two triples, other than composition as shown in the given example. The link to structured programming and goto&#8217;s is I think less significant and less interesting, in fact somewhat distracting the basic idea</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Rewriting a Utility by Michael</title>
		<link>http://vanemden.wordpress.com/2008/12/10/rewriting-a-utility/#comment-58</link>
		<dc:creator>Michael</dc:creator>
		<pubDate>Mon, 09 Mar 2009 18:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://vanemden.wordpress.com/?p=33#comment-58</guid>
		<description>We assume that division is slow, but is it? Why not compute the size required directly? (Also, name the function so that the caller is alerted to release the memory):

&lt;code&gt;
char* createStringFrom(int n)
{
       	int neg = n0) ++digits;
       	if(neg)++digits;
        char* result = malloc(sizeof(char)*(digits+1));
	result[digits] = 0;
	int k;
	int e = neg?1:0;
	for(k=digits-1;k&gt;=e;--k)
	{
		char c = &#039;0&#039; + n%10;
		n = n/10;
		result[k] = c;
	}
	if(neg)
	{
		result[0] = &#039;-&#039;;
	}
	return result;
}&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>We assume that division is slow, but is it? Why not compute the size required directly? (Also, name the function so that the caller is alerted to release the memory):</p>
<p><code><br />
char* createStringFrom(int n)<br />
{<br />
       	int neg = n0) ++digits;<br />
       	if(neg)++digits;<br />
        char* result = malloc(sizeof(char)*(digits+1));<br />
	result[digits] = 0;<br />
	int k;<br />
	int e = neg?1:0;<br />
	for(k=digits-1;k&gt;=e;--k)<br />
	{<br />
		char c = '0' + n%10;<br />
		n = n/10;<br />
		result[k] = c;<br />
	}<br />
	if(neg)<br />
	{<br />
		result[0] = '-';<br />
	}<br />
	return result;<br />
}</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Cargo-cult Engineering by Kevin Hely</title>
		<link>http://vanemden.wordpress.com/2008/08/27/cargo-cult-engineering/#comment-44</link>
		<dc:creator>Kevin Hely</dc:creator>
		<pubDate>Sun, 28 Sep 2008 00:37:52 +0000</pubDate>
		<guid isPermaLink="false">http://vanemden.wordpress.com/?p=24#comment-44</guid>
		<description>I couldn&#039;t agree more. It&#039;s about time someone said this. Thank you.

Parenthetically, I might add that, when I took undergrad courses on compiler design and operating system design, it was quite clear that the main topic of study was &quot;techniques for the systematic design of non-trivial software artefacts&quot;. The specific applications were merely example &quot;carriers&quot; for technique, like études for music students. I find it hard to see how to transmit this ability to students without using detailed specific examples. (However, this was in the mid-eighties... evidently things have changed in CS education since then.)</description>
		<content:encoded><![CDATA[<p>I couldn&#8217;t agree more. It&#8217;s about time someone said this. Thank you.</p>
<p>Parenthetically, I might add that, when I took undergrad courses on compiler design and operating system design, it was quite clear that the main topic of study was &#8220;techniques for the systematic design of non-trivial software artefacts&#8221;. The specific applications were merely example &#8220;carriers&#8221; for technique, like études for music students. I find it hard to see how to transmit this ability to students without using detailed specific examples. (However, this was in the mid-eighties&#8230; evidently things have changed in CS education since then.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Cargo-cult Engineering by Michael</title>
		<link>http://vanemden.wordpress.com/2008/08/27/cargo-cult-engineering/#comment-42</link>
		<dc:creator>Michael</dc:creator>
		<pubDate>Sat, 20 Sep 2008 17:15:08 +0000</pubDate>
		<guid isPermaLink="false">http://vanemden.wordpress.com/?p=24#comment-42</guid>
		<description>Now that I have made the apparently succesful transition from &quot;scientist&quot; to &quot;programmer&quot;, I am struck by a number of things about the products we (at Apple) produce. Your interesting article brought some of these to mind.

Most of the software that I have been involved with here works almost all the time, is used (a lot) by many people, and improves the quality of their lives, at least from there own perspective. The characteristic of this software that distinguishes it from Dijkstra&#039;s products is that the software is created, enhanced and maintained by teams of people. Some of them write lines of code, while others maintain wikis, manage bug-tracking databases, run tests, design interfaces and so on. Certainly that subset who actually churn out lines of C needed a lot of training. The courses we taught as part of our undergradaute program were fine for this training. On the other hand, I would say that the grades we gave were a very poor predictor of programmer quality. The only exception is that those few people who consistently attained As in evry course they ever took were likely to be successful programmers.

But there is a lot more to a successful software product than lines of code. And I see little evidence that these factors can be taught at a University or any other institute. Rather, they are a pool of much individual experience and talent.</description>
		<content:encoded><![CDATA[<p>Now that I have made the apparently succesful transition from &#8220;scientist&#8221; to &#8220;programmer&#8221;, I am struck by a number of things about the products we (at Apple) produce. Your interesting article brought some of these to mind.</p>
<p>Most of the software that I have been involved with here works almost all the time, is used (a lot) by many people, and improves the quality of their lives, at least from there own perspective. The characteristic of this software that distinguishes it from Dijkstra&#8217;s products is that the software is created, enhanced and maintained by teams of people. Some of them write lines of code, while others maintain wikis, manage bug-tracking databases, run tests, design interfaces and so on. Certainly that subset who actually churn out lines of C needed a lot of training. The courses we taught as part of our undergradaute program were fine for this training. On the other hand, I would say that the grades we gave were a very poor predictor of programmer quality. The only exception is that those few people who consistently attained As in evry course they ever took were likely to be successful programmers.</p>
<p>But there is a lot more to a successful software product than lines of code. And I see little evidence that these factors can be taught at a University or any other institute. Rather, they are a pool of much individual experience and talent.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on I remember Edsger Dijkstra (1930 &#8211; 2002) by Andre Vellino</title>
		<link>http://vanemden.wordpress.com/2008/05/06/i-remember-edsger-dijkstra-1930-2002/#comment-34</link>
		<dc:creator>Andre Vellino</dc:creator>
		<pubDate>Fri, 01 Aug 2008 02:38:40 +0000</pubDate>
		<guid isPermaLink="false">http://vanemden.wordpress.com/?p=15#comment-34</guid>
		<description>Thanks, Maarten.  Those are interesting recollections indeed!</description>
		<content:encoded><![CDATA[<p>Thanks, Maarten.  Those are interesting recollections indeed!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on I remember Edsger Dijkstra (1930 &#8211; 2002) by Hamilton Richards</title>
		<link>http://vanemden.wordpress.com/2008/05/06/i-remember-edsger-dijkstra-1930-2002/#comment-33</link>
		<dc:creator>Hamilton Richards</dc:creator>
		<pubDate>Fri, 11 Jul 2008 17:12:47 +0000</pubDate>
		<guid isPermaLink="false">http://vanemden.wordpress.com/?p=15#comment-33</guid>
		<description>That&#039;s a very nice remembrance--it captures much of what made Edsger unique, adding some details which I never knew. 

He did, by the way, finally agree to accept a Macintosh, which he used for email and web browsing --but never for &quot;word processing&quot;

I&#039;ve taken the liberty of improving the Dijkstra Archive by adding a link to this post.

Thanks,

--Ham</description>
		<content:encoded><![CDATA[<p>That&#8217;s a very nice remembrance&#8211;it captures much of what made Edsger unique, adding some details which I never knew. </p>
<p>He did, by the way, finally agree to accept a Macintosh, which he used for email and web browsing &#8211;but never for &#8220;word processing&#8221;</p>
<p>I&#8217;ve taken the liberty of improving the Dijkstra Archive by adding a link to this post.</p>
<p>Thanks,</p>
<p>&#8211;Ham</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Possible Future History of Logic Programming by Andre Vellino</title>
		<link>http://vanemden.wordpress.com/2008/06/14/a-possible-future-history-of-logic-programming/#comment-31</link>
		<dc:creator>Andre Vellino</dc:creator>
		<pubDate>Mon, 16 Jun 2008 19:57:42 +0000</pubDate>
		<guid isPermaLink="false">http://vanemden.wordpress.com/?p=22#comment-31</guid>
		<description>My beef with Senner&#039;s book is that he also fails to acknowledge the seminal role of Logic Programming&#039;s innovations as a term-rewriting system. As we know, it took years for the full power of the virtual machine to become entrenched in conventional sequential computers but with the advent of commodity parallel CPUs in the early 2000s, the importance of term-rewriting for parallel computation became evident well into the second decade of the 21st century.  Innovations in automating the compilation parallel programs that had begun to bear fruit in the 1990&#039;s with Parlog, Concurrent Constraint Logic Programming etc. (research that was arrested in it&#039;s tracks because of the end of funding for the &quot;5th Generation&quot; computing project) found new life when the limitations Google&#039;s MapReduce and other similar methods for distributed computing became apparent.</description>
		<content:encoded><![CDATA[<p>My beef with Senner&#8217;s book is that he also fails to acknowledge the seminal role of Logic Programming&#8217;s innovations as a term-rewriting system. As we know, it took years for the full power of the virtual machine to become entrenched in conventional sequential computers but with the advent of commodity parallel CPUs in the early 2000s, the importance of term-rewriting for parallel computation became evident well into the second decade of the 21st century.  Innovations in automating the compilation parallel programs that had begun to bear fruit in the 1990&#8217;s with Parlog, Concurrent Constraint Logic Programming etc. (research that was arrested in it&#8217;s tracks because of the end of funding for the &#8220;5th Generation&#8221; computing project) found new life when the limitations Google&#8217;s MapReduce and other similar methods for distributed computing became apparent.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
