<html>
<head>
</head>
<body>
IMHO,<br>
<br>
        both languages have the same problem: they are too slow.<br>
<br>
        As long as Python cannot be compiled, we need map(), filter() and
reduce().<br>
        The idea of "one obvious way to do it"  is plain stupid with current
performance.<br>
        As those efforts to interface to C -code show too: more power is
needed.<br>
<br>
        As soon as Scheme gets better unicode support, I will switch.<br>
<br>
-pekka-<br>
<br>
<a class="moz-txt-link-abbreviated" href="mailto:brueckd@tbye.com">brueckd@tbye.com</a> wrote:<br>
<blockquote type="cite" cite="mid:mailman.1029852209.8109.python-list@python.org">
  <pre wrap="">On 20 Aug 2002, FISH wrote:<br><br></pre>
  <blockquote type="cite">
    <blockquote type="cite">
      <pre wrap="">IMHO, compile time type-checking is a nice safety net, but if you get a <br>type error at compilation, it still means you made a mistake. <br></pre>
      </blockquote>
      <pre wrap="">Yes, but the error is flagged in compilation, as opposed to<br>five weeks after the product ships, when it crops up in a bug<br>report from a customer.<br></pre>
      </blockquote>
      <pre wrap=""><!----><br>Have you done any analysis or classification of your bugs that actually <br>shows that the bugs found in production would equate to syntax errors in a <br>compiled languaged? Anecdotally they tend to be two different types of <br>bugs; also I just scanned through our entire internal Bugzilla list and <br>see two things:<br><br>1) The production bugs in C++ and Java are similar to the ones in Python.<br>2) None of the Python bugs would have been found at compile time in a <br>statically-typed language.<br><br></pre>
      <blockquote type="cite">
        <pre wrap="">Strong and weak typing have their place.  Dynamic types are less<br>hassle to work with, but of course they push an added burden of<br>testing onto the developer<br></pre>
        </blockquote>
        <pre wrap=""><!----><br>You are deceiving yourself if you think (at least a good portion of) the<br>burden of testing is not already on the developer. The difference between<br>static and dynamic typed languages is that with the dynamicly-typed<br>language you don't have the false sense of security. You should be<br>suspicious of all warm fuzzies derived from code that successfully<br>compiles. :-)<br><br></pre>
        <blockquote type="cite">
          <pre wrap="">This is one of the reasons why I do not consider Python a suitable<br>alternative to Java.  Dynamic typing is fine for scripts, but when <br>it comes to full-blown 'ten thousand line' applications you really<br>should be looking as something IMHO which gives you the added<br>security of strong typing, to catch as many potential bugs as<br>possible.<br></pre>
          </blockquote>
          <pre wrap=""><!----><br>I think you mean 'static' and not 'strong' typing as Python *is* stronly <br>typed.<br><br>The perception that dynamically-typed languages don't work for large <br>applications is common, but it is a common *mis*conception (for example, <br>Google for one of the recent threads about successful large Python <br>applications - despite Python's limited popularity there are actually <br>quite a few large and successful Python projects - certainly too many to <br>be a fluke!).<br><br>One reason why your fear doesn't turn out to be true is the reason I <br>mentioned above: the bugs found in the field aren't the kind caught by <br>a compiler. They are algorithmic or coverage bugs - much higher level than <br>syntactic errors. They are bugs that stem from false assumptions or <br>unanticipated scenarios - the same screwups you make whether your language <br>is Python or C++. The difference is that in, say, C++ you have these kinds <br>of bugs PLUS t
he bugs that are due to incorrect memory management, use of <br>lower-level data structures, rigidly defined data types, etc. You end up <br>having MORE bugs because the developer has to manage far more details.<br><br>I'll go so far as to say that languages such as C++, VB, Java, are<br>actually *less* suitable for very large projects than Python, and their<br>suitability *decreases* as the size of the project increases. Languages<br>like Python actually enable the clean and robust creation of larger<br>programs by smaller groups of people - its clean syntax, high-level <br>built-in data types, automatic memory management, low cost of change, etc. <br>all combine to push back the limits of program complexity - the point at <br>which the application becomes too large and complex to manage. <br><br>Whatever comes after Python will further extend the limit of what a<br>program can be before becoming too complex. Moving from assembly language<br>to C opened the door to larger an
d more complex applications for the same<br>reasons, and moving from C++ or Java to Python yields similar results.<br><br></pre>
          <blockquote type="cite">
            <blockquote type="cite">
              <pre wrap="">in C, you can have type error when casting a void*, and you don't have <br>any info about the original type of the pointeur. Dynamic typing doesn't <br>means Python is not *strongly* typed.<br></pre>
              </blockquote>
              <pre wrap="">Surely the two are mutually exclusive?  Unless this is some very<br>novel use of the word 'strongly'?  :-)<br></pre>
              </blockquote>
              <pre wrap=""><!----><br>No. From section 3.1 of the Language Reference:<br><br>"Every object has an identity, a type and a value. An object's identity <br>never changes once it has been created ... An object's type is also <br>unchangeable."<br><br>Don't confuse objects with references to objects.<br><br>-Dave<br><br><br></pre>
              </blockquote>
              <br>
              </body>
              </html>