<?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/"
		>
<channel>
	<title>Comments on: “Elements of Programming” Chapter 1:&#160;Foundations</title>
	<atom:link href="http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/feed/" rel="self" type="application/rss+xml" />
	<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/</link>
	<description>The next generation of C++</description>
	<lastBuildDate>Sun, 05 Sep 2010 06:48:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Ahmed Charles</title>
		<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/comment-page-1/#comment-513</link>
		<dc:creator>Ahmed Charles</dc:creator>
		<pubDate>Fri, 26 Feb 2010 18:19:03 +0000</pubDate>
		<guid isPermaLink="false">http://cpp-next.com/?p=901#comment-513</guid>
		<description>&lt;p&gt;I noticed that Domain as defined at the bottom of page 12 is used to determine both the domain and codomain of the square procedure on page 13. That seems a bit less than precise.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I noticed that Domain as defined at the bottom of page 12 is used to determine both the domain and codomain of the square procedure on page 13. That seems a bit less than precise.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Dave Abrahams</title>
		<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/comment-page-1/#comment-448</link>
		<dc:creator>Dave Abrahams</dc:creator>
		<pubDate>Wed, 27 Jan 2010 17:37:18 +0000</pubDate>
		<guid isPermaLink="false">http://cpp-next.com/?p=901#comment-448</guid>
		<description>&lt;blockquote cite=&quot;comment-395&quot;&gt;

&lt;strong&gt;&lt;a href=&quot;#comment-395&quot; rel=&quot;nofollow&quot;&gt;Sean Parent&lt;/a&gt;&lt;/strong&gt;: Relationships are external to the type – regardless of how important that relationship is. Consider an array, “a”, with 3 elements. a[1] is after a[0] and before a[2]. Those are very important properties of a[1]. But copying a[1] severs those relationships.
&lt;/blockquote&gt;

&lt;p&gt;Yeah, but so does moving.  That makes memory order a very different kind of relationship.&lt;/p&gt;

&lt;blockquote cite=&quot;comment-395&quot;&gt;
Let’s not go too far down this path though since it is outside the scope of EoP – and on this topic I can’t speak for Alex and Paul except that I suspect they would agree with me that there is enough material in dealing with relationship properties to write another book.
&lt;/blockquote&gt;

&lt;p&gt;I&#039;m willing to &quot;not go too far&quot; down this path, but just for the record, I don&#039;t buy what you&#039;re selling here.  I believe these types &lt;em&gt;do&lt;/em&gt; undercut the statement about all types being intrinsically (or logically) Regular, principally because they break the relationship between move and copy that makes Regular meaningful.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote cite="comment-395">

<strong><a href="#comment-395" rel="nofollow">Sean Parent</a></strong>: Relationships are external to the type – regardless of how important that relationship is. Consider an array, “a”, with 3 elements. a[1] is after a[0] and before a[2]. Those are very important properties of a[1]. But copying a[1] severs those relationships.
</blockquote>

<p>Yeah, but so does moving.  That makes memory order a very different kind of relationship.</p>

<blockquote cite="comment-395">
Let’s not go too far down this path though since it is outside the scope of EoP – and on this topic I can’t speak for Alex and Paul except that I suspect they would agree with me that there is enough material in dealing with relationship properties to write another book.
</blockquote>

<p>I&#8217;m willing to &#8220;not go too far&#8221; down this path, but just for the record, I don&#8217;t buy what you&#8217;re selling here.  I believe these types <em>do</em> undercut the statement about all types being intrinsically (or logically) Regular, principally because they break the relationship between move and copy that makes Regular meaningful.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Dave Abrahams</title>
		<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/comment-page-1/#comment-447</link>
		<dc:creator>Dave Abrahams</dc:creator>
		<pubDate>Wed, 27 Jan 2010 17:32:36 +0000</pubDate>
		<guid isPermaLink="false">http://cpp-next.com/?p=901#comment-447</guid>
		<description>&lt;p&gt;I would have an easier time with this if it didn&#039;t circle back to a statement that &quot;the type is still intrinsically regular.&quot;   Still, if I put that together with its context (&quot;we can still use equational reasoning&quot;), I may be able to understand.  What I think you&#039;re saying is that, even if we can&#039;t implement equality, there is still a fundamental platonic notion of equality that applies and allows us to reason about programs.&lt;/p&gt;

&lt;p&gt;Fine, as far as it goes.  But &quot;Regular&quot; as defined &lt;em&gt;does&lt;/em&gt; include efficiency guarantees.  When you say &quot;intrinsically regular&quot; it implies to me that Regular is in there somewhere waiting to be realized.  I think you really mean something more like &quot;logically regular,&quot; i.e. the phrase needs a qualifier that implies a weakening of the notion of regularity, and &quot;intrinsic&quot; implies strengthening (or at least, not weakening).&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I would have an easier time with this if it didn&#8217;t circle back to a statement that &#8220;the type is still intrinsically regular.&#8221;   Still, if I put that together with its context (&#8220;we can still use equational reasoning&#8221;), I may be able to understand.  What I think you&#8217;re saying is that, even if we can&#8217;t implement equality, there is still a fundamental platonic notion of equality that applies and allows us to reason about programs.</p>

<p>Fine, as far as it goes.  But &#8220;Regular&#8221; as defined <em>does</em> include efficiency guarantees.  When you say &#8220;intrinsically regular&#8221; it implies to me that Regular is in there somewhere waiting to be realized.  I think you really mean something more like &#8220;logically regular,&#8221; i.e. the phrase needs a qualifier that implies a weakening of the notion of regularity, and &#8220;intrinsic&#8221; implies strengthening (or at least, not weakening).</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ruzon</title>
		<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/comment-page-1/#comment-420</link>
		<dc:creator>Mark Ruzon</dc:creator>
		<pubDate>Tue, 12 Jan 2010 00:19:34 +0000</pubDate>
		<guid isPermaLink="false">http://cpp-next.com/?p=901#comment-420</guid>
		<description>&lt;p&gt;I think it&#039;s no more complicated than saying (e.g.) that &#039;int&#039; refers to a fixed-size integer type and not Z, the set of all integers.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I think it&#8217;s no more complicated than saying (e.g.) that &#8216;int&#8217; refers to a fixed-size integer type and not Z, the set of all integers.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Andrzej Krzemienski</title>
		<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/comment-page-1/#comment-415</link>
		<dc:creator>Andrzej Krzemienski</dc:creator>
		<pubDate>Sun, 10 Jan 2010 11:45:10 +0000</pubDate>
		<guid isPermaLink="false">http://cpp-next.com/?p=901#comment-415</guid>
		<description>&lt;p&gt;Hi, in section 1.3 (Objects) we read &quot;This book uses a programming language that has no way to describe values and value types as separate from objects and object types.&quot; I am having trouble imagining how would such a separation look like, and how/if it would be helpful. Could anyone give me a hint?&lt;/p&gt;

&lt;p&gt;Regards,
&amp;rzej&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi, in section 1.3 (Objects) we read &#8220;This book uses a programming language that has no way to describe values and value types as separate from objects and object types.&#8221; I am having trouble imagining how would such a separation look like, and how/if it would be helpful. Could anyone give me a hint?</p>

<p>Regards,
&amp;rzej</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Sean Parent</title>
		<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/comment-page-1/#comment-412</link>
		<dc:creator>Sean Parent</dc:creator>
		<pubDate>Wed, 30 Dec 2009 23:55:26 +0000</pubDate>
		<guid isPermaLink="false">http://cpp-next.com/?p=901#comment-412</guid>
		<description>&lt;p&gt;It&#039;s about time to get moving on to Chapter 2. Please e-mail your homework for Chapter 1 to eop-study@cpp-next.com and Dave and I will summarize.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>It&#8217;s about time to get moving on to Chapter 2. Please e-mail your homework for Chapter 1 to <a href="mailto:eop-study@cpp-next.com">eop-study@cpp-next.com</a> and Dave and I will summarize.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Sean Parent</title>
		<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/comment-page-1/#comment-411</link>
		<dc:creator>Sean Parent</dc:creator>
		<pubDate>Wed, 30 Dec 2009 23:51:40 +0000</pubDate>
		<guid isPermaLink="false">http://cpp-next.com/?p=901#comment-411</guid>
		<description>&lt;p&gt;It wasn&#039;t intended to be a Zen meditation. Let&#039;s use one of the above examples - graph isomorphism. We can define that two graphs are equal iff they are isomorphic. Now, we can claim that if we copy a graph, the new graph is equal to the original. We know that representational equality implies true equality so we could use representational equality to verify our copy. We can&#039;t implement a general, useful, equality (one that terminates for graphs beyond some size) so our implementation is necessarily incomplete. But the type is still intrinsically regular and we can still use equational reasoning to reason about our code, although there may be many operations for which we can&#039;t verify the results - even though we can prove them correct.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>It wasn&#8217;t intended to be a Zen meditation. Let&#8217;s use one of the above examples &#8211; graph isomorphism. We can define that two graphs are equal iff they are isomorphic. Now, we can claim that if we copy a graph, the new graph is equal to the original. We know that representational equality implies true equality so we could use representational equality to verify our copy. We can&#8217;t implement a general, useful, equality (one that terminates for graphs beyond some size) so our implementation is necessarily incomplete. But the type is still intrinsically regular and we can still use equational reasoning to reason about our code, although there may be many operations for which we can&#8217;t verify the results &#8211; even though we can prove them correct.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Sean Parent</title>
		<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/comment-page-1/#comment-410</link>
		<dc:creator>Sean Parent</dc:creator>
		<pubDate>Wed, 30 Dec 2009 23:35:11 +0000</pubDate>
		<guid isPermaLink="false">http://cpp-next.com/?p=901#comment-410</guid>
		<description>&lt;p&gt;[Sorry for the break - buried by the holidays!] &quot;p belongs to Domain(f)&quot; does not imply &quot;p belongs to definition space of f&quot;. But for any such definition you can read an implied &quot;where op is defined&quot;. In early drafts the book was very rigorous about always stating that requirement, but it was observed that the definition space is better managed as pre-conditions, not type requirements, and so these requirements were pulled. The book is still rigorous about managing the pre-condition that the values passed to a function are within the definition space for the function (we&#039;ll see discussion of this in Chapter 2).&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[Sorry for the break - buried by the holidays!] &#8220;p belongs to Domain(f)&#8221; does not imply &#8220;p belongs to definition space of f&#8221;. But for any such definition you can read an implied &#8220;where op is defined&#8221;. In early drafts the book was very rigorous about always stating that requirement, but it was observed that the definition space is better managed as pre-conditions, not type requirements, and so these requirements were pulled. The book is still rigorous about managing the pre-condition that the values passed to a function are within the definition space for the function (we&#8217;ll see discussion of this in Chapter 2).</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ruzon</title>
		<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/comment-page-1/#comment-409</link>
		<dc:creator>Mark Ruzon</dc:creator>
		<pubDate>Tue, 29 Dec 2009 23:13:51 +0000</pubDate>
		<guid isPermaLink="false">http://cpp-next.com/?p=901#comment-409</guid>
		<description>&lt;p&gt;Domain(f) is a type, and the definition space of f is a set of values.   So &quot;p belongs to Domain(f)&quot; does not imply &quot;p belongs to the definition space of f.&quot;  The converse is true, of course.&lt;/p&gt;

&lt;p&gt;BinaryOperation (p. 31) is defined as an Operation that takes two parameters.  An &lt;i&gt;associative&lt;/i&gt; binary operation satisfies the condition you mention, but this is merely a property of &lt;i&gt;some&lt;/i&gt; binary operations.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Domain(f) is a type, and the definition space of f is a set of values.   So &#8220;p belongs to Domain(f)&#8221; does not imply &#8220;p belongs to the definition space of f.&#8221;  The converse is true, of course.</p>

<p>BinaryOperation (p. 31) is defined as an Operation that takes two parameters.  An <i>associative</i> binary operation satisfies the condition you mention, but this is merely a property of <i>some</i> binary operations.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Suton</title>
		<link>http://cpp-next.com/archive/2009/11/%e2%80%9celements-of-programming%e2%80%9d-chapter-1-foundations/comment-page-1/#comment-402</link>
		<dc:creator>Andrew Suton</dc:creator>
		<pubDate>Mon, 14 Dec 2009 19:39:03 +0000</pubDate>
		<guid isPermaLink="false">http://cpp-next.com/?p=901#comment-402</guid>
		<description>&lt;p&gt;Well, the first take turned out to be a total failure. Not surprising... A diagram--even multiple diagrams--probably won&#039;t be sufficient to capture the number of concepts (not a pun) established in this chapter. Part of the problem is that this chapter addresses such a broad scope of topics and the semantic connections between them are numerous and sometimes not easily defined. I&#039;ll have to give a diagrammatic presentation some more thought, sketch out some ideas, etc.&lt;/p&gt;

&lt;p&gt;It might be that the optimal presentation is actually a wiki. That might also be useful for attaching specific conversation threads to a definition or concept. Just a thought.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Well, the first take turned out to be a total failure. Not surprising&#8230; A diagram&#8211;even multiple diagrams&#8211;probably won&#8217;t be sufficient to capture the number of concepts (not a pun) established in this chapter. Part of the problem is that this chapter addresses such a broad scope of topics and the semantic connections between them are numerous and sometimes not easily defined. I&#8217;ll have to give a diagrammatic presentation some more thought, sketch out some ideas, etc.</p>

<p>It might be that the optimal presentation is actually a wiki. That might also be useful for attaching specific conversation threads to a definition or concept. Just a thought.</p>]]></content:encoded>
	</item>
</channel>
</rss>
