From: John Bokma on
John Nagle <nagle(a)animats.com> writes:

> Python 3 is a nice cleanup of some legacy syntax issues. But
> that's just not enough. Perl 6 is a nice cleanup of Perl 5,

Eh, I wouldn't call Perl 6 a "nice cleanup". It's much better to
consider it a new language with roots in Perl 5 (amongst others). Or
to quote from http://dev.perl.org/perl6/:

"Perl 5 and Perl 6 are two languages in the Perl family, but of
different lineages."

> and look how that went. Ten years on, it's not even mainstream, let
> alone dominant.

I don't think that's the point of Perl 6 (if one can even say such a
thing, that is). Right now, (I) think of Perl 6 as a test bed for features
that couldn't be put in Perl 5 in an easy manner. Or (I) think of it as a
programming language lab.

My best guess is that with coming Christmas there will be a Perl 6
comparable to Python 3. But huge disclaimer: I hardly follow Perl 6
development.

--
John Bokma j3b

Hacking & Hiking in Mexico - http://johnbokma.com/
http://castleamber.com/ - Perl & Python Development
From: Ben Finney on
geremy condra <debatem1(a)gmail.com> writes:

> On Wed, Jul 7, 2010 at 8:26 PM, Brendan Abel <007brendan(a)gmail.com> wrote:
> > Python 3.x will continue to change.  The incompatibilities between
> > 3.x and 2.x will only become more numerous.  If your goal is to
> > support 2.x, and 3.x, you'd be best supporting them separately.
>
> I maintain two projects that have to work from 2.5 to 3.1. On one of
> them (~5kloc) we took the separate support route, and on the other
> (~30kloc) I decided to keep a single codebase. IME the maintenance
> burden on the former is substantially higher than the latter.

The point, one more time with feeling, is that the incompatibilities
between 2.x and 3.x will *increase* over time.

If you now have a code base that is relatively easy to maintain for both
Python 2.x and 3.x, that is a result of much back-porting efforts and of
a new-feature moratorium that is currently in effect. Enjoy that
situation as you may, because it is guaranteed not to last.

Indeed, the feature moratorium is designed in part to help slow-moving
codebases migrate to Python 3.x before Python resumes its normal pace of
change again. If you're choosing to use that time to further entrench
codebases for Python 2.x, I think that's a short-sighted choice.

Python 2.7 is the last 2.x, no further 3.x features will be back-ported.
New 3.x features will begin to appear after the moratorium ends. The
combination of those two means that *the single-codebase burden will
only increase over time* as Python 3.x diverges further from what Python
2.x can support.

--
\ “Programs must be written for people to read, and only |
`\ incidentally for machines to execute.” —Abelson & Sussman, |
_o__) _Structure and Interpretation of Computer Programs_ |
Ben Finney
From: Paul Rubin on
Ben Finney <ben+python(a)benfinney.id.au> writes:
> The point, one more time with feeling, is that the incompatibilities
> between 2.x and 3.x will *increase* over time.

The issue is less the "incompatibilities" than the -backwards-
incompatibilities. Yes, Python 3 may introduce forward
incompatibilities by adding features absent from Python 2. But it will
be possible to maintain a common codebase simply by not using those
features. On the other hand, the door appears closed for Python 3
adding more stuff that breaks Python 2 code.

From: geremy condra on
On Wed, Jul 7, 2010 at 9:14 PM, Ben Finney <ben+python(a)benfinney.id.au> wrote:
> geremy condra <debatem1(a)gmail.com> writes:
>
>> On Wed, Jul 7, 2010 at 8:26 PM, Brendan Abel <007brendan(a)gmail.com> wrote:
>> > Python 3.x will continue to change.  The incompatibilities between
>> > 3.x and 2.x will only become more numerous.  If your goal is to
>> > support 2.x, and 3.x, you'd be best supporting them separately.
>>
>> I maintain two projects that have to work from 2.5 to 3.1. On one of
>> them (~5kloc) we took the separate support route, and on the other
>> (~30kloc) I decided to keep a single codebase. IME the maintenance
>> burden on the former is substantially higher than the latter.
>
> The point, one more time with feeling, is that the incompatibilities
> between 2.x and 3.x will *increase* over time.

....and? I don't get to use features from 2.7, why would I expect to
use features from 3.3?

> If you now have a code base that is relatively easy to maintain for both
> Python 2.x and 3.x, that is a result of much back-porting efforts and of
> a new-feature moratorium that is currently in effect. Enjoy that
> situation as you may, because it is guaranteed not to last.

I have to target the oldest version of Python I want to support. New
features are irrelevant. I'm not sure why I should need to explain
that to you.

> Indeed, the feature moratorium is designed in part to help slow-moving
> codebases migrate to Python 3.x before Python resumes its normal pace of
> change again. If you're choosing to use that time to further entrench
> codebases for Python 2.x, I think that's a short-sighted choice.

I welcome the day that I can stop supporting 2.x. Until then, I have to
support both and your argument is irrelevant.

> Python 2.7 is the last 2.x, no further 3.x features will be back-ported.
> New 3.x features will begin to appear after the moratorium ends. The
> combination of those two means that *the single-codebase burden will
> only increase over time* as Python 3.x diverges further from what Python
> 2.x can support.

See above.

Geremy Condra
From: Ben Finney on
Paul Rubin <no.email(a)nospam.invalid> writes:

> Ben Finney <ben+python(a)benfinney.id.au> writes:
> > The point, one more time with feeling, is that the incompatibilities
> > between 2.x and 3.x will *increase* over time.
>
> The issue is less the "incompatibilities" than the -backwards-
> incompatibilities.

Yes, that's what I meant. Python 3 is deliberately under no obligation
to support code that works in Python 2. If something needs fixing, and
that fix would involve breaking Python 2 code, then that's not a
consideration any more.

The predictable result is that Python 3 will continue to gain
backward-incompatible changes in future.

> On the other hand, the door appears closed for Python 3 adding more
> stuff that breaks Python 2 code.

What gives you that idea? Can you reference a specific statement from
the PYthon developers that says that?

--
\ “Not to be absolutely certain is, I think, one of the essential |
`\ things in rationality.” —Bertrand Russell |
_o__) |
Ben Finney