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