<story><title>Unfortunate Python</title><url>http://excess.org/article/2011/12/unfortunate-python/</url><text></text></story><parent_chain><item><author>LeafStorm</author><text>Most of this I agree with, with a few comments/caveats:&lt;p&gt;&amp;#62; Easy Stuff First&lt;p&gt;The unfortunate part about this particular example is that subprocess&apos;s interface isn&apos;t really that well-designed, and so people resort to os.system simply because it is less complicated than subprocess.&lt;p&gt;&amp;#62; Ducks In A Row&lt;p&gt;I don&apos;t think isinstance is really that bad, but checking based on something&apos;s exact type is definitely wrong.&lt;p&gt;&amp;#62; Toys are for Children&lt;p&gt;One of the problems of a batteries-included stdlib is that you have to support it just about forever. Though I would like to note that for basic async programming Tornado is surprisingly good, and less complex than Twisted.&lt;p&gt;&amp;#62; Foreign Concepts&lt;p&gt;Apparently this is especially useful for scientific and mathematical computing. I can&apos;t see how it&apos;s especially dangerous since just about everyone will use list instead.</text></item></parent_chain><comment><author>icebraining</author><text>I disagree that subprocess is complicated. Replacing the os.system() is really simple: &lt;a href=&quot;http://docs.python.org/library/subprocess.html#replacing-os-system&quot; rel=&quot;nofollow&quot;&gt;http://docs.python.org/library/subprocess.html#replacing-os-...&lt;/a&gt;&lt;p&gt;I think people are just used to system(), particularly if they come from C.</text></comment>
<story><title>Unfortunate Python</title><url>http://excess.org/article/2011/12/unfortunate-python/</url><text></text></story><parent_chain><item><author>LeafStorm</author><text>Most of this I agree with, with a few comments/caveats:&lt;p&gt;&amp;#62; Easy Stuff First&lt;p&gt;The unfortunate part about this particular example is that subprocess&apos;s interface isn&apos;t really that well-designed, and so people resort to os.system simply because it is less complicated than subprocess.&lt;p&gt;&amp;#62; Ducks In A Row&lt;p&gt;I don&apos;t think isinstance is really that bad, but checking based on something&apos;s exact type is definitely wrong.&lt;p&gt;&amp;#62; Toys are for Children&lt;p&gt;One of the problems of a batteries-included stdlib is that you have to support it just about forever. Though I would like to note that for basic async programming Tornado is surprisingly good, and less complex than Twisted.&lt;p&gt;&amp;#62; Foreign Concepts&lt;p&gt;Apparently this is especially useful for scientific and mathematical computing. I can&apos;t see how it&apos;s especially dangerous since just about everyone will use list instead.</text></item></parent_chain><comment><author>angusgr</author><text>&lt;i&gt;&amp;#62; Foreign Concepts&lt;/i&gt; ... &lt;i&gt;I can&apos;t see how it&apos;s especially dangerous since just about everyone will use list instead.&lt;/i&gt;&lt;p&gt;I think it&apos;s potentially dangerous if/when Python newbies from other languages pick up old idioms and (ab)use them thinking they&apos;re &quot;Pythonic&quot;.&lt;p&gt;I haven&apos;t seen it with a Python codebase, but I have worked on a Java codebase that was developed from scratch by C developers new to Java. They used lots of arrays (same sin), minimal Collections, and lots of for(i = 0; i &amp;#60; arr.length; i++) instead of foreach. Urgh.&lt;p&gt;So it isn&apos;t Python&apos;s fault, but I see how it could pose a danger.</text></comment>