<?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: The Accuracy of Future Predictions</title>
	<atom:link href="http://www.codesimplicity.com/post/the-accuracy-of-future-predictions/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codesimplicity.com/post/the-accuracy-of-future-predictions/</link>
	<description></description>
	<lastBuildDate>Fri, 03 May 2013 14:52:50 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
	<item>
		<title>By: Lyman Hurd</title>
		<link>http://www.codesimplicity.com/post/the-accuracy-of-future-predictions/comment-page-1/#comment-4390</link>
		<dc:creator>Lyman Hurd</dc:creator>
		<pubDate>Wed, 20 Feb 2013 22:08:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesimplicity.com/?p=1022#comment-4390</guid>
		<description>By that criterion, Microsoft Visual C++ failed for quite a while.  Only recently did it get into line with the iterator of a for loop having the scope of the loop it enclosed (i.e., the following was not legal in VC++ but is perfectly good ANSI):

for (int i = 1; i &lt; 10; i++) {
// do something
}

for (int i = 1; i &lt; 20; i++) {
// do something else
}

In VC++ it used to complain that you were trying to define &quot;i&quot; twice in the same scope.</description>
		<content:encoded><![CDATA[<p>By that criterion, Microsoft Visual C++ failed for quite a while.  Only recently did it get into line with the iterator of a for loop having the scope of the loop it enclosed (i.e., the following was not legal in VC++ but is perfectly good ANSI):</p>
<p>for (int i = 1; i &lt; 10; i++) {<br />
// do something<br />
}</p>
<p>for (int i = 1; i &lt; 20; i++) {<br />
// do something else<br />
}</p>
<p>In VC++ it used to complain that you were trying to define &quot;i&quot; twice in the same scope.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Max Kanat-Alexander</title>
		<link>http://www.codesimplicity.com/post/the-accuracy-of-future-predictions/comment-page-1/#comment-3436</link>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		<pubDate>Fri, 18 Jan 2013 07:03:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesimplicity.com/?p=1022#comment-3436</guid>
		<description>So you know, once upon a time, I wrote two blogs posts about almost this exact subject. (Backwards compatibility in general, but it&#039;s relevant to what you&#039;ve said.)

http://www.codesimplicity.com/post/ways-to-create-complexity-break-your-api/

http://www.codesimplicity.com/post/when-is-backwards-compatibility-not-worth-it/

In truth, I think that the level of backwards-compatibility that C has maintained is likely a weakness at this point. The more and more you nail down a piece of software, the more and more it will degrade over time by not being able to adjust itself or improve itself as time passes. You&#039;re certainly correct that backwards-compatibility is a boon to developers, and it should never be broken without reason. But as I try to get across in the two articles above, the ultimate decision should be a balance between simplicity for existing users and simplicity for future users.

-Max</description>
		<content:encoded><![CDATA[<p>So you know, once upon a time, I wrote two blogs posts about almost this exact subject. (Backwards compatibility in general, but it&#8217;s relevant to what you&#8217;ve said.)</p>
<p><a href="http://www.codesimplicity.com/post/ways-to-create-complexity-break-your-api/" rel="nofollow">http://www.codesimplicity.com/post/ways-to-create-complexity-break-your-api/</a></p>
<p><a href="http://www.codesimplicity.com/post/when-is-backwards-compatibility-not-worth-it/" rel="nofollow">http://www.codesimplicity.com/post/when-is-backwards-compatibility-not-worth-it/</a></p>
<p>In truth, I think that the level of backwards-compatibility that C has maintained is likely a weakness at this point. The more and more you nail down a piece of software, the more and more it will degrade over time by not being able to adjust itself or improve itself as time passes. You&#8217;re certainly correct that backwards-compatibility is a boon to developers, and it should never be broken without reason. But as I try to get across in the two articles above, the ultimate decision should be a balance between simplicity for existing users and simplicity for future users.</p>
<p>-Max</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick Barnes</title>
		<link>http://www.codesimplicity.com/post/the-accuracy-of-future-predictions/comment-page-1/#comment-3417</link>
		<dc:creator>Nick Barnes</dc:creator>
		<pubDate>Mon, 14 Jan 2013 13:47:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesimplicity.com/?p=1022#comment-3417</guid>
		<description>Of course the Python 2 code will still work in Python 2, including 2.7.3.  There are a few things in Python 2.0 that don&#039;t work in 2.7, but this isn&#039;t one of them.  Python 3 is deliberately incompatible.

I think that the culture of language implementors and designers has gone a little wrong since the 1980s - there used to be a very serious concern about backwards compatibility.  For instance any C compiler worthy of the name had better compile &quot;ANSI C&quot; without any semantic changes.  I write &quot;ANSI C&quot;, technically ambiguous, because that is *still* the shorthand used by C programmers to mean ISO/IEC 9899:1990, which was basically settled in about 1987.  C compilers mostly also do a fine job of &quot;K&amp;R C&quot;, vintage 1973, although there is more variation because the semantics were not so clearly nailed down.  Ditto implementations for a number of other languages from the 1970s and 1980s (e.g. Common Lisp: the Lisp implementations I use are strictly compliant with the 1994 Common Lisp standard, which was the result of a convergent standards process begun in the mid 1980s).  The implementations have moved on, and can *also* handle other languages (e.g. C11), but have not dropped or impaired in any way their support for languages defined more than 20 years ago.  This is a huge strength that the implementors of languages such as Python should emulate.</description>
		<content:encoded><![CDATA[<p>Of course the Python 2 code will still work in Python 2, including 2.7.3.  There are a few things in Python 2.0 that don&#8217;t work in 2.7, but this isn&#8217;t one of them.  Python 3 is deliberately incompatible.</p>
<p>I think that the culture of language implementors and designers has gone a little wrong since the 1980s &#8211; there used to be a very serious concern about backwards compatibility.  For instance any C compiler worthy of the name had better compile &#8220;ANSI C&#8221; without any semantic changes.  I write &#8220;ANSI C&#8221;, technically ambiguous, because that is *still* the shorthand used by C programmers to mean ISO/IEC 9899:1990, which was basically settled in about 1987.  C compilers mostly also do a fine job of &#8220;K&amp;R C&#8221;, vintage 1973, although there is more variation because the semantics were not so clearly nailed down.  Ditto implementations for a number of other languages from the 1970s and 1980s (e.g. Common Lisp: the Lisp implementations I use are strictly compliant with the 1994 Common Lisp standard, which was the result of a convergent standards process begun in the mid 1980s).  The implementations have moved on, and can *also* handle other languages (e.g. C11), but have not dropped or impaired in any way their support for languages defined more than 20 years ago.  This is a huge strength that the implementors of languages such as Python should emulate.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Max Kanat-Alexander</title>
		<link>http://www.codesimplicity.com/post/the-accuracy-of-future-predictions/comment-page-1/#comment-3415</link>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		<pubDate>Mon, 14 Jan 2013 07:45:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesimplicity.com/?p=1022#comment-3415</guid>
		<description>What you really end up with, when you try to do that, is a lot of extra complexity for a future that doesn&#039;t arrive, and a ton of work to now adapt it to the future that really did show up.</description>
		<content:encoded><![CDATA[<p>What you really end up with, when you try to do that, is a lot of extra complexity for a future that doesn&#8217;t arrive, and a ton of work to now adapt it to the future that really did show up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Max Kanat-Alexander</title>
		<link>http://www.codesimplicity.com/post/the-accuracy-of-future-predictions/comment-page-1/#comment-3414</link>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		<pubDate>Mon, 14 Jan 2013 07:44:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesimplicity.com/?p=1022#comment-3414</guid>
		<description>Nope, that is impossible. The future is infinitely complex, and software cannot be. Attempts to do this are one of the primary causes of overly-complex, unmaintainable systems.</description>
		<content:encoded><![CDATA[<p>Nope, that is impossible. The future is infinitely complex, and software cannot be. Attempts to do this are one of the primary causes of overly-complex, unmaintainable systems.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Simon</title>
		<link>http://www.codesimplicity.com/post/the-accuracy-of-future-predictions/comment-page-1/#comment-3413</link>
		<dc:creator>Simon</dc:creator>
		<pubDate>Mon, 14 Jan 2013 07:42:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesimplicity.com/?p=1022#comment-3413</guid>
		<description>Well, you *could* spend a lot of effort on designing and implementing a system to adapt to any possible change of circumstances that might occur in the future. Which is probably the only possible way of making sure that such a change will never happen... :)</description>
		<content:encoded><![CDATA[<p>Well, you *could* spend a lot of effort on designing and implementing a system to adapt to any possible change of circumstances that might occur in the future. Which is probably the only possible way of making sure that such a change will never happen&#8230; <img src='http://www.codesimplicity.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
