Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python 3.0 and language evolution

Python 3.0 breaks backwards compatibility with previous versions and splits the language into two paths (at least temporarily). Do you know of any other language that went through such a major design phase while in maturity?

Also, do you believe that this is how programming languages should evolve or is the price to pay simply too high?

like image 397
kgiannakakis Avatar asked Nov 07 '08 20:11

kgiannakakis


People also ask

In which year was the Python 3.0 language developed?

Python 3.0 final was released on December 3rd, 2008. Python 3.0 (a.k.a. "Python 3000" or "Py3k") is a new version of the language that is incompatible with the 2.

How has Python changed over the years?

Removing many duplicate tools unfortunately meant that all previous Python 2 code was not compatible with Python 3.0. Some of the most notable changes are that print is now a built-in function, removal of the Python 2 input , unification of str and unicode , and changes in integer division.

Did Python 3.0 removed the duplicate programming constructs and modules?

However, as Python had accumulated new and redundant ways to program the same task, Python 3.0 had an emphasis on removing duplicative constructs and modules, in keeping with the Zen of Python: "There should be one— and preferably only one —obvious way to do it".

How Python has changed the world?

Python can be used to develop different applications like web applications, graphic user interface based applications, software development application, scientific and numeric applications, network programming, Games and 3D applications and other business applications.


1 Answers

The only language I can think of to attempt such a mid-stream change would be Perl. Of course, Python is beating Perl to that particular finish line by releasing first. It should be noted, however, that Perl's changes are much more extensive than Python's and likely will be harder to detangle.

(There's a price for Perl's "There's More Than One Way To Do It" philosophy.)

There are examples like the changes from version to version of .NET-based languages (ironic, considering the whole point of .NET was supposed to be API stability and cross-platform compatibility). However, I would hardly call those languages "mature"; it's always been more of a design-on-the-go, build-the-plane-as-we-fly approach to things.

Or, as I tend to think of it, most languages come from either "organic growth" or "engineered construction." Perl is the perfect example of organic growth; it started as a fancy text processing tool ala awk/sed and grew into a full language.

Python, on the other hand, is much more engineered. Spend a bit of time wandering around the extensive whitepapers on their website to see the extensive debate that goes into every even minor change to the language's syntax and implementation.

The idea of making these sorts of far-reaching changes is somewhat new to programming languages because programming languages themselves have changed in nature. It used to be that programming methodologies changed only when a new processor came out that had a new instruction set. The early languages tended to either be so low-level and married to assembly language (e.g. C) or so utterly dynamic in nature (Forth, Lisp) that such a mid-stream change wouldn't even come up as a consideration.

As to whether or not the changes are good ones, I'm not sure. I tend to have faith in the people guiding Python's development, however; the changes in the language thus far have been largely for the better.

I think in the days to come the Global Interpreter Lock will prove more central than syntax changes. Though the new multiprocessor library might alleviate most of that.

like image 160
Jason L Avatar answered Oct 05 '22 11:10

Jason L