Python rpm'y i pliki *.py *.pyc *.pyo
Mateusz Korniak
mateusz w ant.gliwice.pl
Wto, 10 Wrz 2002, 13:46:59 CEST
On Tuesday 10 September 2002 13:21, wrobell wrote:
> On Tue, Sep 10, 2002 at 01:04:57PM +0200, Mateusz Korniak wrote:
> > > A rzeczywiście. Nigdy nie wpadłem na pomysł, żeby w ten sposób to
> > > zrobić... Tylko trzeba to nieszczęsne -O zapodać.
> >
> > To nie jest 'nieszczesne'. Użytkownik powinien miec świadomość kiedy chce
> > używać -O ( co może zmienić zachowanie programu (pomijając wątpliwy efekt
> > przyspieszenia)), a kiedy nie. Oczywiście prawidłowe (bez błędów) *.py
> > powinny działać tak samo w obu przypadkach .. ale to może być tylo
> > teoria.
> >
> > > 2. W przypadku braku .pyc i _podania_ -O oraz braku .pyo i nie podania
> > > -O, powinien zaimportować dostępną wersję.
> >
> > IMHO nie powinien. (patrz wyżej)
>
> No to się nie zgadzamy. To tak jakbyś musiał jakieś chocki
> klocki odstawiać, żeby uruchomić programy w C skompilowane
> raz z -O2, a raz z -Os, albo w przypadku Javy bez -O lub z -O.
>
Ta analogia jest zła IMHO.
Przenosząc ją na grunt gcc, Twoje rozwiązanie pozwalałoby kompilatorowi gcc
wybierać/losować czy ma kompilować poszczególne pliki źródłow używając
-DNODEBUG albo i nie, i tak nonsensownie posklejany kod dystrybuować.
Zauważ że jeśli gcc wygeneruje kod który działa inaczej* pod różnymi trybami
opytmalizacji to jest to błąd kompliatora. Natomiast gdy program dziala
inaczej* przy użyciu lub nie NODEBUG to na ogół jest to wina programisty.
I wola programisty C/C++ powinno być czy kod jest kompilowany z -DNODEBUG czy
bez, a gcc powinno konsekwentnie podążać za wola programisty.
I teraz analogicznie, wolą programisty Pythona jest czy chce uruchamiać
programy z asercjami i mieć zdefiniowane __debug__ w kodzie na 1/0, czy nie
( -O), a python powinien konsekwentnie podążąć za tą wolą.
Ufff, czy teraz się zgadzamy ? :)
Jeśli nawet nie to i tak ma to mniejsze znaczenie (bo python działa tak ja
chce i sądze ze dobrze) wobec drugiego pytania. Czemu dalej dystrybuować
*.pyc/ *.pyo a nie tak jak mi się wydaje sensowniej *.py/ *.pyo ?
* działa inaczej - rozumiem generuje inne wyniki dla tych samych danych, a nie
zużywa inną ilość zasobów.
--
Mateusz Korniak
"Black holes are where God divided by zero." - Steven Wright
Więcej informacji o liście dyskusyjnej pld-devel-pl