standard libraries don't behave like standard 'libraries'
naughtysriram at gmail.com
Thu Nov 12 12:54:00 CET 2009
On Nov 12, 4:35 pm, "Diez B. Roggisch" <de... at nospam.web.de> wrote:
> Sriram Srinivasan schrieb:
> > On Nov 12, 3:56 pm, "Diez B. Roggisch" <de... at nospam.web.de> wrote:
> >> Sriram Srinivasan schrieb:
> >>> I guess why every programming language has some kind of a 'standard
> >>> library' built in within it.
> >>> In my view it must not be called as a 'library' at all. what it does
> >>> is like a 'bunch of built-in programs ready-made to do stuff'.
> >>> Lets see what a 'library' does:
> >>> 1. offers books for customers
> >>> 1.1 lets user select a book by genre, etc
> >>> 1.2 lets user to use different books of same genre, etc
> >>> 1.3 lets user to use books by same author, etc for different genre
> >>> 2. keeps track of all the books + their genre
> >>> 2.1 first knows what all books it has at present
> >>> 2.2 when new book comes it is added to the particular shelf sorted by
> >>> genre,author,edition, etc.
> >>> 2.3 when books become old they are kept separately for future
> >>> reference
> >>> 2.4 very old books can be sent to a museum/discarded
> >>> I guess no standard library does the minimum of this but wants to be
> >>> called a library.
> >>> As a python user I always wanted the standard library to have such
> >>> features so the user/developer decides to use what set of libraries he
> >>> want.
> >>> consider the libraries for 2.5 ,2.6, 3K are all available to the user,
> >>> the user selects what he wants with something like.
> >>> use library 2.5 or use library 2.6 etc.
> >>> The 2 main things that the library management interface has to do is
> >>> intra library management and inter library management.
> >>> intra library mgmt- consider books to be different libraries
> >>> (standard, commercial, private, hobby, etc)
> >>> inter library mgmt- consider books to be modules inside a library
> >>> ( standard, commercial, private, hobby, etc)
> >>> if somehow we could accomplish this kind of mother of a all plugin/ad-
> >>> hoc system that is a real breakthrough.
> >>> Advantages:
> >>> 1. new modules can be added to the stream quickly
> >>> 2. let the user select what he want to do
> >>> 3. modules (that interdepend on each other) can be packed into small
> >>> distribution and added to the stream quickly without waiting for new
> >>> releases
> >>> 4. solution to problems like py 2.x and 3.x
> >>> 5. users can be up to date
> >>> 6. documentation becomes easy + elaborate to users
> >>> 7. bug managing is easy too
> >>> 8. more feed back
> >>> 9. testing also becomes easy
> >>> 10. many more , i don't know.. you have to find.
> >>> Python already has some thing like that __future__ stuff. but my
> >>> question is how many people know that? and how many use that? most of
> >>> them wait until old crust gets totally removed. that is bad for user
> >>> and python. that is why problems like py2.x py3.x originate. If there
> >>> is a newer book collection it must always be available at the library.
> >>> i must not go to another library to get that book.
> >> You are greatly oversimplifying things, and ignoring a *lot* of issues
> >> here. The reason for __future__ is that it can *break* things if new
> >> features were just introduced. Take the with-statement, reachable in
> >> python2.5 throug
> >> from __future__ import with_statement
> >> It introduces a new keyword, which until then could be happily used as
> >> variable name.
> >> So you can't arbirtarily mix code that is written with one or the other
> >> feature missing.
> >> Then there is the issue of evolving C-APIs (or ABI), wich makes modules
> >> incompatible between interpreters.
> >> And frankly, for most of your list I don't see how you think your
> >> "approach" reaches the stated advantages. Why is documentation becoming
> >> easier? Why bug managing? Why testing?
> >> I'm sorry, but this isn't thought out in any way, it's just wishful
> >> thinking IMHO.
> >> Diez
> > __future__ as you said helps in stop breaking things. what i suggest
> > that if both the libraries (in yr case-with is defined in one and
> > other with is not defined is a simple one) like py2.x and py3.x exists
> > and i want to use 3.x features in the morning then in the evening i
> > want to use 2.x or something like that just add on the library and i
> > get the require functionality
> This doesn't make sense to me. What are you doing in the morning, and
> what in the evening, and to what extend is the code the same or are you
> talking about different pieces of code?
ok let me make it more clear..
forget how you use python now.. i am talking about __futuristic__
there is no more python2.x or python3.x or python y.x releases. there
is only updates of python and standard library say 1.1.5 and 1.1.6.
let the difference be an old xml library updated with a new regex
i am coding my program now.
i want my application to be compatible with 1.1.5 library
use library 1.1.5
import blah form blahblah
i cannot use regex feature of xml in this application
i then update my library in the evening
now both the libraries are present in my system.
now i try using the new feature
use library 1.1.6 #thats all now i get all features
import blah from blahblah
More information about the Python-list