Bugs in CPython 3.1.1 [wave.py]

A

Alf P. Steinbach

* Steve Holden:
Alf said:
* Steve Holden: [...]
FYI there is already some feedback in the tracker.
Yeah, someone who had the bright idea that maybe there isn't a bug,
thinking instead that maybe a "wrong" name in *a comment* might be the
culprit -- of all things!

He was probably just trying to be helpful.

But what do you say to someone who tries to help but is really just
making a mess of things? Obama tackled that nicely when he got
Thorbjørned (Thorbjørn Jagland applying some heavy pressure to give him
the Nobel Peace Price). But I'm not Obama...
You do just what I am doing now.

No, as I stated, I'm not into politics.


Cheers & hth.,

- Alf
 
S

Steve Holden

Alf said:
* Steve Holden:
Alf P. Steinbach wrote:

If you have any suggestions for improving things (and the same goes for
any other readers) I will be happy to listen to them. I do agree that
the bug tracker is a rather high hurdle for people to have to jump over
just to offer feedback on software faults, but the PSF doesn't have the
resources to man customer service lines and the like, so we do what we
can with web-based automation.

Well, regarding the bug tracker register-an-account process, checking
headers of a duplicate confirmation mail that arrived even later than
what I already commented on,


Received: from mr1.start.no (unknown [195.159.73.42])
by mail6.start.no (Postfix) with ESMTP id 54EFE1534F8
for <[email protected]>; Tue, 12 Jan 2010 12:56:05 +0100 (CET)
Received: from psf.upfronthosting.co.za (bugs.python.org [88.198.142.26])
by mr1.start.no (Postfix) with ESMTP id B24C92B2035
for <[email protected]>; Tue, 12 Jan 2010 12:53:53 +0100 (CET)
Received: from psf.upfronthosting.co.za (localhost [10.0.0.1])
by psf.upfronthosting.co.za (Postfix) with ESMTP id AE98D786B3
for <[email protected]>; Tue, 12 Jan 2010 12:25:53 +0100 (CET)


As you can see the mail spent exactly 28 minutes (to the second)
whirring about within "psf.upfronthosting.co.za" before being sent on to
my ISP, where it used about 3 minutes on orienting itself towards my
machine.

I think that mail hang-up may be easiest to fix...
Agreed, I have passed that to postmaster at python.org. I am not really
sure why that mail host was involved in the transaction, but then I
don't spend my days handling email servers.
Perhaps use other SMTP server (would be easiest solution).

Perhaps change to CAPTCHA instead of mail confirmation.
That's another possibility, yes.
Other suggestions I have would, I think, require a lot of work. And I'm
not sure it's worth it. But my experience is that Google scores 0 on bug
reporting, not even allowing you to report anything, at all; Microsoft
scores 8 or so, up from 1 on my scale (they used to have
lead-you-around-in-circles forms leading to punch-you-in-the nose server
errors etc., like Google now, but worse because you were paying for
this!, but they totally changed their tune a few years back, now really
good, *except* for the worst most bloated MS software/malware ever, the
Microsoft installer, which unfortunately CPython uses, a light-weight
installer would be much better!); and then the GNU g++ team scores top
marks, 10+, because I've had a g++ bug reported and fixed within just
hours! :)
Thanks again for the comments. Let's hope something changes as a result!

regards
Steve
 
T

Terry Reedy

Perhaps change to CAPTCHA instead of mail confirmation.

I disagree. The point of mail confirmation is not just to assure that a
human is registering, but that we have a valid email for responses to be
sent to. Many issues are filed with inadaquate info (platform, Python
version, full traceback, adequate code snippet, or whatever). So we need
to be able to reach a person.

Besides which, automated image recognition + barely paid human captcha
farms have made letter image increasingly useless. Many are now so
obscure that *I* usually get them wrong.

If there were to be a 'human verifier' system, it might be better based
on file-in-the-blank questions about Python.

What might be changed more easily is to accept a report but impound it
until the confirmation reply. Being able to spit out what one has to say
while it is still fresh in the mind should make the email wait more
tolerable. What do you think?


Terry Jan Reedy
 
S

Steven D'Aprano

Yeah, someone who had the bright idea that maybe there isn't a bug,
thinking instead that maybe a "wrong" name in *a comment* might be the
culprit -- of all things!

He was probably just trying to be helpful.

But what do you say to someone who tries to help but is really just
making a mess of things?

Before pointing out the mote in another person's eye, you should consider
the enormous beam in yours. You initially reported a completely bogus
error (NameError: name 'framerate' is not defined) and Brian responded to
that.

I don't know why you're claiming he was responding to a name that was
commented out, when you included a traceback clearly showing that the
line was executed.

If we're supposed to think Brian "is really just making a mess of
things" (your words) for responding to incorrect information, what are we
supposed to think of the person who submitted the incorrect information
in the first place?

I think you need to chill out and stop treating a simple bug report as a
personal slight on you.
 
S

Steven D'Aprano

* André:

I'm sorry but your conclusion does not follow from the fact that you
point out.

It is hopeless, especially for a newbie, to create correct Python
2.x+3.x compatible code, except totally trivial stuff of course.

So you allege, but André points out that there are existing, non-trivial
applications that work unmodified under both Python 2.x and 3.x. For
example, CherryPy:

http://www.cherrypy.org/wiki/WhatsNewIn32

You're welcome to your own opinion, of course, but not your own reality,
and the reality is that it is NOT "hopeless" to write correct Python code
that operates under both 2.6 and 3.x. It's not hopeless because it's been
done. You might even be able to target versions older than 2.6 if you
really work at it, as CherryPy does.

Continuing to assert something which is demonstrably untrue simply means
you lose credibility among those who are familiar with Python.


This due most of all to the language differences, but also to the fact
that there are PLENTY of libraries that haven't yet been ported, like
PIL...

Right, and if your application requires PIL, then it is impossible, but
for the countless applications that *don't* require PIL, it makes no
difference at all.


[...]
The problem is writing code that is correct with both languages, which
is hopeless when e.g. integer division changes underfoot, like "/"
meaning two different things depending on the language, print syntax
changing, so forth.

from __future__ import division
from __future__ import print_function
from future_builtins import hex, map # or whatever


Not even close to hopeless.
 
A

Alf P. Steinbach

* Steven D'Aprano:
So you allege, but André points out that there are existing, non-trivial
applications that work unmodified under both Python 2.x and 3.x. For
example, CherryPy:

http://www.cherrypy.org/wiki/WhatsNewIn32

You're welcome to your own opinion, of course, but not your own reality,
and the reality is that it is NOT "hopeless" to write correct Python code
that operates under both 2.6 and 3.x. It's not hopeless because it's been
done. You might even be able to target versions older than 2.6 if you
really work at it, as CherryPy does.

Continuing to assert something which is demonstrably untrue simply means
you lose credibility among those who are familiar with Python.

You're confusing the existence of special cases where something has been done,
at great cost, with a belief that it's practical to do so in general.

It's not exactly like confusing existential versus universal quantification, but
it's close.

Thus, your demonstration amounts to "it's not hopeless to walk on the moon:
look, Louis Armstrong did!" -- uh, Neil, whatever.

He he. :)

No, sorry, I apologize, I'm unkind now.

*Slapping my keyboard hand*

But it gets to me how often people here sort of rise to the defense of Python as
if it needed defending.

It's a great language, it needs no defense, especially not of the kind where one
tries to suppress facts and silence critique. Indeed, what it needs seems to
instead be the opposite, a good dose of reality and openness. The reality is
that the divide between 2.x and 3.x is still very wide, and utterly hopeless for
a newbie to cross (professionals can do so at great cost).

Over in C++-land it's opposite.

Even the most enhusiastic C++ programmers almost revel in finding faults with
the language and its standard library, tools etc. And I think that's because
there's no inferiority complex, or very little of it. So, repeating: Python is a
great language, it really is, but There Are Issues, of course there are issues,
and the best way or at least a good way to go about it is adopt that (great, but
of course has issues) as one's basic view, and be critical.

Right, and if your application requires PIL, then it is impossible, but
for the countless applications that *don't* require PIL, it makes no
difference at all.

They require other stuff. :)

Plus, the basic language issues are at the core of all these problems.

But see above.

[...]
The problem is writing code that is correct with both languages, which
is hopeless when e.g. integer division changes underfoot, like "/"
meaning two different things depending on the language, print syntax
changing, so forth.

from __future__ import division
from __future__ import print_function
from future_builtins import hex, map # or whatever


Not even close to hopeless.

You might consider that I'm very much aware of the above facilities.

Then be a little critical and think about, what problems could it be that, in
spite of that to you apparent simplicity, hinders the widespread adoption of
Python 3.x?

Repeating, Python is a great language. I'm not about dissing the language. I
think it's rather silly when people believe that, and it's rather sad when they
then employ negative sum thinking: think positive!

Cheers & hth.,

- Alf
 
A

Alf P. Steinbach

* Steven D'Aprano:
Before pointing out the mote in another person's eye, you should consider
the enormous beam in yours. You initially reported a completely bogus
error (NameError: name 'framerate' is not defined) and Brian responded to
that.

I don't know why you're claiming he was responding to a name that was
commented out, when you included a traceback clearly showing that the
line was executed.

No, the out-commented line was not executed and was not shown in any traceback.

Comments are not executed.

If we're supposed to think Brian "is really just making a mess of
things" (your words) for responding to incorrect information, what are we
supposed to think of the person who submitted the incorrect information
in the first place?

I'm sorry but you're trying to make people believe something that you know is
false, which is commonly called lying.

The error report included the line numbers of the buggy lines, plus a correction
of the output: I first pasted incorrect error message, then corrected that
*immediately*. But I just found no way to edit the original message, so both
that and the correction ended up present. The correction with "Sorry, here's the
correct message", or words to that effect. In the one and only original submission.

So it's not like the person responding should have any problem at all, and it's
not like he was presented with incorrect information. To top it off he did not
respond to the output that was corrected. He believed the problem was a name in
a comment.

I think you need to chill out and stop treating a simple bug report as a
personal slight on you.

I'm sorry but you're again trying to make people believe something that you know
is false, which is commonly called lying: it is not the case that I have strong
feelings or any feelings at all about that bug report or any other.

But you're starting to annoy me.

I think it's OK when you respond to technical issues where you have
misunderstood something basic, even when you do that by assertion, as you
usually do (it would be better if you just asked about things that you don't
understand). But it's not OK when you're trying to create impressions that are
false, and it's not OK when you try to demonstrate telepathic powers and discuss
others' emotions and motivations. I tell you straight.


- Alf
 
A

Alf P. Steinbach

* Terry Reedy:
I disagree. The point of mail confirmation is not just to assure that a
human is registering, but that we have a valid email for responses to be
sent to. Many issues are filed with inadaquate info (platform, Python
version, full traceback, adequate code snippet, or whatever). So we need
to be able to reach a person.

Besides which, automated image recognition + barely paid human captcha
farms have made letter image increasingly useless. Many are now so
obscure that *I* usually get them wrong.

If there were to be a 'human verifier' system, it might be better based
on file-in-the-blank questions about Python.

What might be changed more easily is to accept a report but impound it
until the confirmation reply. Being able to spit out what one has to say
while it is still fresh in the mind should make the email wait more
tolerable. What do you think?

I think those are all good points. :)


Cheers,

- Alf
 
S

Stefan Behnel

Alf P. Steinbach, 13.01.2010 06:39:
* Steven D'Aprano:

You're confusing the existence of special cases where something has been
done, at great cost, with a belief that it's practical to do so in general.

Unless you can prove that it's *not* practical in general, you will have to
live with the fact that it was, and continues to be, practical for existing
code bases (and certainly for new code), so it clearly is not hopeless to
do so, not even "in general".

Stefan
 
S

Stefan Behnel

Alf P. Steinbach, 13.01.2010 06:55:
* Steven D'Aprano:

I'm sorry but you're again trying to make people believe something that
you know is false, which is commonly called lying: it is not the case
that I have strong feelings or any feelings at all about that bug report
or any other.

Then why don't you just stop blaming the world for that terrible doom that
was laid upon you by running into a bug?

But you're starting to annoy me.

Funny that it's you writing that.

Stefan
 
S

Steven D'Aprano

Then be a little critical and think about, what problems could it be
that, in spite of that to you apparent simplicity, hinders the
widespread adoption of Python 3.x?


(1) Most Linux distributions still come standard with Python 2.5 or
older, not even 2.6. Consequently, most developers are still writing for
2.5 or even 2.4 and won't even consider 3.1 until the distros provide it
as standard. Apple also comes standard with 2.5, and I believe that when
hardware vendors supply it on Windows systems, it's typically 2.5 also.

(2) Because of the negativity of people overstating the differences
between 2.x and 3.x.

(3) And because of the slow pace at which major third-party libraries
have supported 3.x, which is mostly a matter of man-power rather than
technical difficulty.


It is difficult to support both 2.4 and 2.5, because 2.5 introduces a
whole lot of excellent features that 2.4 doesn't have. I know, because
I've tried. (After spending much effort trying to develop my own
compatibility layer, I eventually decided to just stop supporting 2.4.)
Do people go on and on and on about how it is "hopeless" to support
multiple versions of 2.x? No, of course they don't. It requires extra
work, and it's inconvenient, but it can be done and it is done.

Trying to support everything from 2.0 to 3.1 would be horrible, but not
because 3.1 is so different from 2.x. The oldest versions of the 2.x
series lack so many features that have become fundamental to modern
Python: no generators, no decorators, no iterators, and others. But
supporting 2.6 and 3.0/3.1 is nothing as so hard. I would argue that,
fundamentally, there are fewer differences between 2.6 and 3.1 than
between 2.1 and 2.5.

Upgrading a major application or library to support 3.x is a big job,
simply because *any* re-factorising of a major application is a big job.
But writing a new application supporting 2.6 and 3.x from scratch is a
much simpler process. Likewise writing small scripts.

To say as you do that the change in the semantics of the division
operator makes the task "hopeless" is simply ridiculous. It's a one-line
fix: "from __future__ import division" at the top of each module, and you
now have identical semantics in both 2.6 and 3.x.

Nobody is trying to understate the complexity of writing a large
application that supports both 2.6 and 3.x, or of taking an existing
library written for 2.5 and upgrading it to support 3.1. But the
magnitude of these tasks is no greater (and potentially smaller) than
supporting (say) 2.3 through 2.5. To describe it as "hopeless" is simply
mistaken and weakens your credibility.
 
S

Stefan Behnel

Terry Reedy, 13.01.2010 04:40:
What might be changed more easily is to accept a report but impound it
until the confirmation reply. Being able to spit out what one has to say
while it is still fresh in the mind should make the email wait more
tolerable. What do you think?

Sounds like a very good idea to me. It could still send out a notification
to the relevant component maintainers, so that they can deal with the bug
(e.g. open it up manually or drop it as spam) even if the reporter takes a
day or two to respond to the confirmation e-mail.

Stefan
 
A

Alf P. Steinbach

* Stefan Behnel:
Alf P. Steinbach, 13.01.2010 06:39:

Unless you can prove that it's *not* practical in general, you will have
to live with the fact that it was, and continues to be, practical for
existing code bases (and certainly for new code), so it clearly is not
hopeless to do so, not even "in general".

Simple proof: Python 3.x still lacks widespread usage. :)


Cheers & hth.,

- Alf
 
A

Alf P. Steinbach

* Stefan Behnel:
Alf P. Steinbach, 13.01.2010 06:55:

Then why don't you just stop blaming the world for that terrible doom
that was laid upon you by running into a bug?

I'm sorry but as Steven did in the quoted material above you're trying to make
people believe something that you know is false: I haven't blamed the world, nor
described the bug as terrible or a doom, and you know that.

On the other hand, I did let out some steam here, at the start of thread. :)

While making sure that nobody else would have to waste time on that bug.

It shouldn't be anything to get upset by.

However, that happens. In Norway in the week that was a woman died because the
emergency services got upset about the nephew's strong language. They decided
that instead of an ambulance let's send the police, so the poor woman died while
the police where shackling all the relatives (with force) outside the house...

Funny that it's you writing that.

Yeah, it's understandable if you harbor Negative Feelings about me. I have the
annoying habit of seeing that something's wrong and saying it, and as I recall
there was a very poular movie about such a guy once, where many of the laughs
came from just how incredibly annoying it was that he was right all the time in
spite of his social position at the bottom of the ladder, sort of exremely
incongruous. Happily *I* am often wrong, perhaps 40% of the contested issues, so
if you focus on that then perhaps all may still be well. :)


Cheers & hth.,

- Alf
 
S

Stefan Behnel

Alf P. Steinbach, 13.01.2010 09:00:
I'm sorry but as Steven did in the quoted material above you're trying
to make people believe something that you know is false: I haven't
blamed the world, nor described the bug as terrible or a doom, and you
know that.

I admit that I took the freedom to rephrase your original wording.

However, that happens. In Norway in the week that was a woman died
because the emergency services got upset about the nephew's strong
language. They decided that instead of an ambulance let's send the
police, so the poor woman died while the police where shackling all the
relatives (with force) outside the house...

So, if I understand your anecdote right, who is it you are trying to kill here?

Yeah, it's understandable if you harbor Negative Feelings about me.

Sorry to disappoint you - I don't.

Stefan
 
S

Steven D'Aprano

* Steven D'Aprano:

No, the out-commented line was not executed and was not shown in any
traceback.

I have no idea what commented lines NOT shown you are talking about, but
you attacked Brian for referring to the NameError relating to framerate.
You claimed that he was:

thinking instead that maybe a "wrong" name in *a comment*
might be the culprit

But in fact your initial error report included this traceback, which
displays a very much uncommented line of code:

Traceback (most recent call last):
File "C:\Documents and Settings\Alf\sound\error.py", line 6, in <module>
writer.setframerate( framerate )
NameError: name 'framerate' is not defined


Alf, I know you are able to read tracebacks, because you've demonstrated
the ability in the past. And I'm pretty sure that you're aware that can
too, because you're not an idiot.

So what puzzles me is, given that you can read the traceback you posted,
and we can too, why on earth do you claim that the reference to framerate
was commented out? The line that was executed is right there.



Comments are not executed.

Really? Well, that explains why none of my programs do anything!

*wink*


The error report included the line numbers of the buggy lines, plus a
correction of the output: I first pasted incorrect error message, then
corrected that *immediately*. But I just found no way to edit the
original message, so both that and the correction ended up present. The
correction with "Sorry, here's the correct message", or words to that
effect. In the one and only original submission.

Right. A simple, silly error that anyone could have made. We've all made
similarly embarrassing mistakes.

But you then responded with a public put-down on Brian all out of
proportion for his sin of *answering your initial post*. And that just
makes you look obnoxious.

I'm sorry but you're again trying to make people believe something that
you know is false, which is commonly called lying:

It must be nice to know what other people are thinking.

What am I thinking now?


it is not the case
that I have strong feelings or any feelings at all about that bug report
or any other.

Reading back over this thread, it's obvious how cool, calm and collected
you are. I can't imagine what I was thinking, that somebody who would say

"Well how f*****g darn patient do they expect me to be?"

has strong feelings over the issue?


(For the sarcasm impaired, that's sarcasm.)

But you're starting to annoy me.

I'm truly sorry to hear that.
 
A

Alf P. Steinbach

* Steven D'Aprano:
Nobody is trying to understate the complexity of writing a large
application that supports both 2.6 and 3.x, or of taking an existing
library written for 2.5 and upgrading it to support 3.1. But the
magnitude of these tasks is no greater (and potentially smaller) than
supporting (say) 2.3 through 2.5. To describe it as "hopeless" is simply
mistaken and weakens your credibility.

It seems that people here put a lot of meaning into "hopeless"...

Would it be better to say that it's "hard" or "very hard" or "impractical for
the novice"?

After all, the bug that this thread is about demonstrated that unit tests
designed for 2.x do not necessarily uncover 3.x incompatibilities.

Even at the level of Python's own standard library.

But, regarding reformulations that don't imply untrue things to anyone (or
nearly), I'd like the text on that page to still fit on one page. :)


Cheers,

- Alf
 
S

Steven D'Aprano

* Steven D'Aprano:

It seems that people here put a lot of meaning into "hopeless"...

Only the dictionary meaning.

Would it be better to say that it's "hard" or "very hard" or
"impractical for the novice"?

I don't even know why you feel the need to discuss 2.x in a book that's
about 3.x.

But given that you feel the need to, all I can ask is that you don't
overstate the difficulty. For a new project that doesn't rely on third-
party libraries that don't support 3.x, supporting 2.6 - 3.x shouldn't be
much harder than (say) supporting 2.3 through 2.5. That is to say, of
course it's hard, but it's always hard to support a range of versions
with different capabilities. The transition to 3.x is no different in
that regard.
 
A

Alf P. Steinbach

* Steven D'Aprano:
I have no idea what commented lines NOT shown you are talking about, but
you attacked Brian for referring to the NameError relating to framerate.

Well, first, let me state that this is debating details of something irrelevant
to anything.


Now, that said, Brian responded (first response, Brian subsequently made a patch
which fixed not just the bugs but also the unit test, so very good everything!),


<quote>
In your example, the "n_frames" name does not exist, which is causing the
problem. In your first comment, "framerate" also did not exist.

I don't know what a proper frame rate value is, but I just put 10 in there
and it worked fine. Can you confirm?
</quote>


Note that the "n_frames" that Brian here thinks "is causing the problem" is a
name only used in a comment in the demo code.

You claimed that he was:

thinking instead that maybe a "wrong" name in *a comment*
might be the culprit

But in fact your initial error report included this traceback, which
displays a very much uncommented line of code:

Traceback (most recent call last):
File "C:\Documents and Settings\Alf\sound\error.py", line 6, in <module>
writer.setframerate( framerate )
NameError: name 'framerate' is not defined

Note (1) that "n_frames" does *not* occur here -- or anywhere.

And that (2) the error report included this correction:

<quote>
Sorry, here's correct error message:

Traceback (most recent call last):
File "C:\Documents and Settings\Alf\sound\error.py", line 8, in <module>
writer.writeframes( b"\0"*2*4 )
File "C:\Program Files\cpython\python31\lib\wave.py", line 432, in writeframes
self.writeframesraw(data)
File "C:\Program Files\cpython\python31\lib\wave.py", line 416, in writeframesraw
self._ensure_header_written(len(data))
File "C:\Program Files\cpython\python31\lib\wave.py", line 459, in
_ensure_header_written
self._write_header(datasize)
File "C:\Program Files\cpython\python31\lib\wave.py", line 472, in _write_header
self._sampwidth * 8, 'data'))
struct.error: required argument is not an integer
Exception struct.error: 'required argument is not an integer' in <bound method
Wave_write.__del__ of <wave.Wave_write ob
ject at 0x00FE87F0>> ignored
</quote>

Which you can see that Brian was very well aware of, since he referred to <q>In
your first comment, "framerate" also did not exist.</q>, as opposed to this
corrected output.

But again, even though he did get off on the wrong foot, probably assuming that
it was a novice posting (and regarding Python I'm still a novice!), after that
he did superb job. So very much thanks to him, people will not have to struggle
with this bug. And perhaps the [wave] module will start getting more used! :)

Alf, I know you are able to read tracebacks, because you've demonstrated
the ability in the past. And I'm pretty sure that you're aware that can
too, because you're not an idiot.

So what puzzles me is, given that you can read the traceback you posted,
and we can too, why on earth do you claim that the reference to framerate
was commented out? The line that was executed is right there.

I don't claim and haven't claimed that framerate was commented out.

I referred to the fact that Brian (at first) thought that "n_frames" was, quote,
"causing the problem", and that that name only occurred in a comment.

Really? Well, that explains why none of my programs do anything!

*wink*




Right. A simple, silly error that anyone could have made. We've all made
similarly embarrassing mistakes.

But you then responded with a public put-down on Brian all out of
proportion for his sin of *answering your initial post*. And that just
makes you look obnoxious.

Nah, I didn't mention his name nor link to the error report.

Because I've made similar mistakes based on too low intake of coffee.

And after that, as mentioned, he did a superb job! :)


Reading back over this thread, it's obvious how cool, calm and collected
you are. I can't imagine what I was thinking, that somebody who would say

"Well how f*****g darn patient do they expect me to be?"

has strong feelings over the issue?

Of course I had strong feelings about the time wasted on the bug, and I'm not
one to hold my tongue, in general...

But no strong feelings about the bug report or handling of it.

I'm sure that you can understand that distinction, the two very different issues
(time wasted versus a puzzling Thorbjørning) now that I point it out, yes?

Just for good measure, let me once again point out that Brian, whom I didn't
name or refer to then, turned out to then do a superb job.

And in about no time at all.


Cheers,

- Alf
 
L

Lie Ryan

Alf said:
* Stefan Behnel:

Simple proof: Python 3.x still lacks widespread usage. :)

That's not a really sound proof, there was a after the release of 2.6
that people start migrating their code from 2.5; migration to 3.x is not
going to be different. Even nowadays, there are still a lot of codes
targeted for python 2.5 or 2.4 that will never have a chance to be
ported to 2.6.

It is valid to argue that the time gap is a bit longer in python 3.x;
but don't forget that 3.0 is intended to be a "preview" version, 3.1 a
beta and 3.2 a more stable production release. The recommended migration
path is to port to 2.x code to 2.6 then to 2.7 and then to 3.x. So to
establish a fairer comparison of the migration gap, you would have to
measure the adoption time between 2.7 to 3.2 (or 2.6 to 3.1, but not to
3.0).

We have yet releases 2.7 and 3.2, so it is still not possible to tell
how hard it is people think porting to 3.x is.
Over in C++-land it's opposite.

Even the most enhusiastic C++ programmers almost revel in finding
faults with the language and its standard library, tools etc. And
I think that's because there's no inferiority complex, or very
little of it. So, repeating: Python is a great language, it really
is, but There Are Issues, of course there are issues, and the best
way or at least a good way to go about it is adopt that (great,
but of course has issues) as one's basic view, and be critical.

if what you said is true, that will be a proof that python programmer's
PHI (programmer's happiness index) is higher than C++'s :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,183
Messages
2,570,965
Members
47,511
Latest member
svareza

Latest Threads

Top