<?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"
	>
<channel>
	<title>Comments on: Anti-IDE Myths</title>
	<atom:link href="http://bill.burkecentral.com/2008/02/06/anti-ide-myths/feed/" rel="self" type="application/rss+xml" />
	<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/</link>
	<description>tech talk radio</description>
	<pubDate>Sat, 19 Jul 2008 13:39:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
		<item>
		<title>By: Stephan Schmidt</title>
		<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/#comment-1844</link>
		<dc:creator>Stephan Schmidt</dc:creator>
		<pubDate>Wed, 19 Mar 2008 12:30:55 +0000</pubDate>
		<guid isPermaLink="false">http://billburke.wordpress.com/?p=91#comment-1844</guid>
		<description>(Fowler wrote the refactoring book in 1999, 4 years after Java)

Peace
-stephan</description>
		<content:encoded><![CDATA[<p>(Fowler wrote the refactoring book in 1999, 4 years after Java)</p>
<p>Peace<br />
-stephan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephan Schmidt</title>
		<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/#comment-1843</link>
		<dc:creator>Stephan Schmidt</dc:creator>
		<pubDate>Wed, 19 Mar 2008 12:29:37 +0000</pubDate>
		<guid isPermaLink="false">http://billburke.wordpress.com/?p=91#comment-1843</guid>
		<description>"I asked Bill if everyone should have to wait a long time, on the order of 10-15 years, before an IDE truly becomes valuable for a given language."

Intellij came much earlier than 15 years or even 10 years after Java was invented. Just do some research before stating facts. Tip: Google it (if you can't do that as it seem to be the case, it's 5 years)

Peace
-stephan</description>
		<content:encoded><![CDATA[<p>&#8220;I asked Bill if everyone should have to wait a long time, on the order of 10-15 years, before an IDE truly becomes valuable for a given language.&#8221;</p>
<p>Intellij came much earlier than 15 years or even 10 years after Java was invented. Just do some research before stating facts. Tip: Google it (if you can&#8217;t do that as it seem to be the case, it&#8217;s 5 years)</p>
<p>Peace<br />
-stephan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Farzad</title>
		<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/#comment-1686</link>
		<dc:creator>Farzad</dc:creator>
		<pubDate>Thu, 07 Feb 2008 02:21:12 +0000</pubDate>
		<guid isPermaLink="false">http://billburke.wordpress.com/?p=91#comment-1686</guid>
		<description>I don't really fit into this discussion in any sense, but I have to say I don't agree with Steve when he says IDEs do not find more than syntactical errors. I don't know about many IDEs since I have been hooked up with IntelliJ IDEA for so long that there is no other IDEs in the world for me, but IDEA actually captures very small and hard to find problems. Some of those really depend on its ability to understand types and their static binding + whatever dynamic binding they can have. So I argue these things are more or less impossible for a dynamic language. As an example, the following code is obviously wrong:

&lt;code&gt;
public class TestIde {
    public static void main(String[] args) {
        Object obj = getSomeObject();

        if (!(obj instanceof Double))
            return;

        System.out.println("&#62;&#62;&#62; size = " + ((String) obj).length());
    }

    public static Object getSomeObject() {
        return (double) 10;
    }
}
&lt;/code&gt;

since when the code gets to the system out point the obj is definitely Double or something that extends Double, the cast is going to throw an exception because String is neither of them. IntelliJ IDEA here highlights the cast and tells you the cast is not going to work. You may argue this is a stupid code and one should not write a stupid code. However, this is just an example. In my own experience, I have always had to maintain someone else's code and I have always had to change something in the middle of a method and it is easy to ignore Ifs like what is in the example above, specially if the two parts of the code don't fit in screen so that you see them both at the same time. 

Well, that's my two cents :)</description>
		<content:encoded><![CDATA[<p>I don&#8217;t really fit into this discussion in any sense, but I have to say I don&#8217;t agree with Steve when he says IDEs do not find more than syntactical errors. I don&#8217;t know about many IDEs since I have been hooked up with IntelliJ IDEA for so long that there is no other IDEs in the world for me, but IDEA actually captures very small and hard to find problems. Some of those really depend on its ability to understand types and their static binding + whatever dynamic binding they can have. So I argue these things are more or less impossible for a dynamic language. As an example, the following code is obviously wrong:</p>
<p><code><br />
public class TestIde {<br />
    public static void main(String[] args) {<br />
        Object obj = getSomeObject();</p>
<p>        if (!(obj instanceof Double))<br />
            return;</p>
<p>        System.out.println(&#8221;&gt;&gt;&gt; size = &#8221; + ((String) obj).length());<br />
    }</p>
<p>    public static Object getSomeObject() {<br />
        return (double) 10;<br />
    }<br />
}<br />
</code></p>
<p>since when the code gets to the system out point the obj is definitely Double or something that extends Double, the cast is going to throw an exception because String is neither of them. IntelliJ IDEA here highlights the cast and tells you the cast is not going to work. You may argue this is a stupid code and one should not write a stupid code. However, this is just an example. In my own experience, I have always had to maintain someone else&#8217;s code and I have always had to change something in the middle of a method and it is easy to ignore Ifs like what is in the example above, specially if the two parts of the code don&#8217;t fit in screen so that you see them both at the same time. </p>
<p>Well, that&#8217;s my two cents <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: billburke</title>
		<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/#comment-1679</link>
		<dc:creator>billburke</dc:creator>
		<pubDate>Wed, 06 Feb 2008 16:58:46 +0000</pubDate>
		<guid isPermaLink="false">http://billburke.wordpress.com/?p=91#comment-1679</guid>
		<description>Nat, awesome observation.  I used to be the in your head, on paper guy, and now I'm moving towards the IDE approach.  What I saw was that a lot of Smalltalk developers (particularly Gavin) behave, in respect to developing with an IDE, as you describe.  It is taking me awhile to adapt to this method, but, I'm finding it better in most circumstances.</description>
		<content:encoded><![CDATA[<p>Nat, awesome observation.  I used to be the in your head, on paper guy, and now I&#8217;m moving towards the IDE approach.  What I saw was that a lot of Smalltalk developers (particularly Gavin) behave, in respect to developing with an IDE, as you describe.  It is taking me awhile to adapt to this method, but, I&#8217;m finding it better in most circumstances.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: God</title>
		<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/#comment-1678</link>
		<dc:creator>God</dc:creator>
		<pubDate>Wed, 06 Feb 2008 16:56:45 +0000</pubDate>
		<guid isPermaLink="false">http://billburke.wordpress.com/?p=91#comment-1678</guid>
		<description>There are better things for both of you to do with your limited time.</description>
		<content:encoded><![CDATA[<p>There are better things for both of you to do with your limited time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nat</title>
		<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/#comment-1677</link>
		<dc:creator>Nat</dc:creator>
		<pubDate>Wed, 06 Feb 2008 16:25:11 +0000</pubDate>
		<guid isPermaLink="false">http://billburke.wordpress.com/?p=91#comment-1677</guid>
		<description>It's chicken-and-egg.  If you use dynamic languages that do not (except for Smalltalk) have good IDE support for refactoring you learn to work in a way in which you do design outside the code (in your head, on paper, etc.) before committing the design to code.

If you use an IDE that has strong refactoring capabilities, you can use the code itself as your scratch-pad, so you learn to work in a way in which you experiment with live code rather than imagined or pencilled code that must later be typed in.</description>
		<content:encoded><![CDATA[<p>It&#8217;s chicken-and-egg.  If you use dynamic languages that do not (except for Smalltalk) have good IDE support for refactoring you learn to work in a way in which you do design outside the code (in your head, on paper, etc.) before committing the design to code.</p>
<p>If you use an IDE that has strong refactoring capabilities, you can use the code itself as your scratch-pad, so you learn to work in a way in which you experiment with live code rather than imagined or pencilled code that must later be typed in.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: billburke</title>
		<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/#comment-1676</link>
		<dc:creator>billburke</dc:creator>
		<pubDate>Wed, 06 Feb 2008 15:59:47 +0000</pubDate>
		<guid isPermaLink="false">http://billburke.wordpress.com/?p=91#comment-1676</guid>
		<description>Liam wrote "Maybe you should stop being a programmer, then."

Nah, most developers write sucky code if they are man enough to admit it.  In my case, I need an artificial productivity enhancer to bridge some of the gap between myself and developers like Steve.  And I'm *not* being facetious here!</description>
		<content:encoded><![CDATA[<p>Liam wrote &#8220;Maybe you should stop being a programmer, then.&#8221;</p>
<p>Nah, most developers write sucky code if they are man enough to admit it.  In my case, I need an artificial productivity enhancer to bridge some of the gap between myself and developers like Steve.  And I&#8217;m *not* being facetious here!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: billburke</title>
		<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/#comment-1674</link>
		<dc:creator>billburke</dc:creator>
		<pubDate>Wed, 06 Feb 2008 14:32:06 +0000</pubDate>
		<guid isPermaLink="false">http://billburke.wordpress.com/?p=91#comment-1674</guid>
		<description>Steve, I didn't contradict myself.  Go reread what I've been writing.  If you read between the lines, I've added a lot of greyness to my arguments.

As far as the Python docstrings, I still stand by my statement that self-documenting code is far superior. </description>
		<content:encoded><![CDATA[<p>Steve, I didn&#8217;t contradict myself.  Go reread what I&#8217;ve been writing.  If you read between the lines, I&#8217;ve added a lot of greyness to my arguments.</p>
<p>As far as the Python docstrings, I still stand by my statement that self-documenting code is far superior.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Liam</title>
		<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/#comment-1673</link>
		<dc:creator>Liam</dc:creator>
		<pubDate>Wed, 06 Feb 2008 12:57:09 +0000</pubDate>
		<guid isPermaLink="false">http://billburke.wordpress.com/?p=91#comment-1673</guid>
		<description>&lt;blockquote&gt;I write sucky code&lt;/blockquote&gt;

Maybe you should stop being a programmer, then.</description>
		<content:encoded><![CDATA[<blockquote><p>I write sucky code</p></blockquote>
<p>Maybe you should stop being a programmer, then.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Vinoski</title>
		<link>http://bill.burkecentral.com/2008/02/06/anti-ide-myths/#comment-1670</link>
		<dc:creator>Steve Vinoski</dc:creator>
		<pubDate>Wed, 06 Feb 2008 05:56:35 +0000</pubDate>
		<guid isPermaLink="false">http://billburke.wordpress.com/?p=91#comment-1670</guid>
		<description>Bill, you should try to stop contradicting yourself. In your previous posting you were complaining about the fact that the magic of modern IDEs could not be applied to dynamic languages because they lack static typing, but now in this posting you're pointing out how all these IDEs do in fact support all these dynamic languages. What exactly is your actual point again?

I'm sure I'm not alone in thinking that your buddy's story isn't funny at all, but is instead quite sad. Clearly, their putting type names into Python function names was intended to help only the human programmer, not the Python runtime or libraries. So why not use the Python features intended specifically for assisting the programmer? If they were really having trouble tracking function expectations, it might have been because they were erroneously trying to use and enforce static language approaches rather than taking full advantage of the language's dynamism. Obviously, I don't know for sure because I don't know any of that project's details, but I've certainly seen this issue cause problems for other dynamic language development efforts. At the very least, a more useful approach for them, &lt;a href="http://steve.vinoski.net/blog/2008/02/05/static-languages-rationalizations-and-myths/" rel="nofollow"&gt;as I mentioned in my blog&lt;/a&gt;, would have been to fill out each function's docstring and make it as descriptive as possible. The docstrings are readily available to the developer from the Python interactive prompt, and they would have been way more useful to your friend's team than their Hungarian notation variant.</description>
		<content:encoded><![CDATA[<p>Bill, you should try to stop contradicting yourself. In your previous posting you were complaining about the fact that the magic of modern IDEs could not be applied to dynamic languages because they lack static typing, but now in this posting you&#8217;re pointing out how all these IDEs do in fact support all these dynamic languages. What exactly is your actual point again?</p>
<p>I&#8217;m sure I&#8217;m not alone in thinking that your buddy&#8217;s story isn&#8217;t funny at all, but is instead quite sad. Clearly, their putting type names into Python function names was intended to help only the human programmer, not the Python runtime or libraries. So why not use the Python features intended specifically for assisting the programmer? If they were really having trouble tracking function expectations, it might have been because they were erroneously trying to use and enforce static language approaches rather than taking full advantage of the language&#8217;s dynamism. Obviously, I don&#8217;t know for sure because I don&#8217;t know any of that project&#8217;s details, but I&#8217;ve certainly seen this issue cause problems for other dynamic language development efforts. At the very least, a more useful approach for them, <a href="http://steve.vinoski.net/blog/2008/02/05/static-languages-rationalizations-and-myths/" rel="nofollow">as I mentioned in my blog</a>, would have been to fill out each function&#8217;s docstring and make it as descriptive as possible. The docstrings are readily available to the developer from the Python interactive prompt, and they would have been way more useful to your friend&#8217;s team than their Hungarian notation variant.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
