Topic: Tema: Python 2.5, 2.6 e 3.0  (Letto 4974 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #15 il: Settembre 08, 2008, 19:18 »
Basta scegliere cosa si vuole supportare e comportarsi di conseguenza, io recentemente ho mollato il supporto per 2.4 e uso 2.5 per le mie cose, e probabilmente farò lo stesso con 2.6. Con Twisted o cose simili vogliono supporto anche per 2.3 se ben ricordo, quindi basta evitare tutte le novità delle versioni successive. Con il 3 il discorso è un po' diverso perché al contrario delle 2.x non è retrocompatibile quindi in teoria dovresti fare 2 versioni, ma in pratica bisogna vedere, perché non so esattamente quanto i tool 2to3 riescano a fare e quante siano effettivamente le differenze. Cose tipo range() e zip() che non ritornano più liste non dovrebbero essere un grosso problema, al massimo si può fare list(range(10)) che funziona sia sul 2.3 (anche se non sarebbe necessario) che sul 3.0, cose tipo dict.iteritems() che ora è semplicemente dict.items() può essere convertito dai tool, il print('foobar') dovrebbe funzionare anche in py2.3, u'stringa unicode' e 'stringa normale' possono essere convertite dal 2to3 in 'stringa unicode' e b'stringa byteosa', per la divisione penso che il 2to3 sia in grado di mettere l'import, altrimenti si usa float(x)/y, le new-style classes ci sono dal 2.2, basta inheritare da object (eventualmente il 2to3 lo toglierà, visto che nel 3 sono di default), altre cose?

Offline Markon

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 4.104
  • Punti reputazione: 5
    • Mostra profilo
    • Neolithic
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #16 il: Settembre 08, 2008, 19:27 »
Uhm, è questo il fatto.
gennaro diceva: io devo fare un progetto di 1-2 anni (solitamente un progetto che richiede questo tempo è abbastanza grosso)... come mi dovrei comportare?

Non ha senso evitare le novità, perchè queste vengono introdotte per un motivo preciso.
Ad esempio i generatori NON compatibili in py 2.4. E tutti sappiamo quanto possono essere importanti questi generatori. Ma vabè.. era solo un esempio.
Voglio dire, stiamo parlando di un linguaggio interpretato, che deve comunque avanzare nel tempo.

Secondo me la cosa migliore è scriversi l'implementazione del programma in C/C++ e utilizzare l'interfaccia in Python.
Poi non saprei. Dopotutto attualmente questa cosa che ho detto viene fatta in moltissimi programmi (basti pensare a KDE, scritto in C++, che grazie a binding presenta anche programmi scritti in Python).

Se invece vuoi metterti lì e scrivere il codice per Python 2.4, python 2.5, python 2.6 e python 3.0 sei libero di farlo.

Ehehe ... poi ovviamente come diceva Wolf prima, tutto dipende dal progetto che devi fare.
Puoi anche cazzeggiare per 2 anni :D

Tuttavia conoscendo il tipo che ha posto la domanda, dubito.

Ciao!

Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #17 il: Settembre 08, 2008, 19:44 »
Ma infatti nessuno ti obbliga a supportare 2.3/4 e anche se dovessi farlo non è un grosso problema perché in genere si riesce a trovare un compromesso. Questo problema in genere ce l'hanno quelli che hanno già scritto una lib tempo fa e ora diversi altri programmi la usano, e quindi passare da 2.3 a 2.6 o 3.0 creerebbe problemi a tutti quelli che usano versioni precedenti. Inoltre bisogna precisare che se tu stai scrivendo un programma (soprattutto se nuovo) e non una libreria o cose simili, in genere sei abbastanza libero di usare quello che vuoi, cancellare e rifare quello che non ti piace senza troppi problemi (ammesso che non ci sia altro codice che si basa su questo programma (e cmq puoi sempre cambiare il codice senza cambiare le API (per esempio io ho spostato il mio bot da xchat con py2.4 a twisted con py2.5 senza cambiare le api e nessuno s'è accorto di niente, anche se l'ho riscritto mezzo))). Non penso che sia un problema aggiornare python o avere 2-3 versioni diverse installate, il problema maggiore è quando hai molto codice che funziona su py2.3 e usare cose che ci sono in py2.6 ti costringe ad aggiornare tutto questo codice (stesso problema che hanno quelli di twisted (da notare che se riuscissero ad aggiornare tutto twisted a 2.6 uno dovrebbe sì aggiornare l'interprete, ma se ha del codice scritto per py2.3 che si basa su twisted dovrebbe funzionare anche se loro usassero 2.6)). Inoltre non penso che abbia senso scrivere il programma in C "perché i generatori non sono compatibili" o cose simili, potrebbe aver senso per altri motivi, ma le versioni di python non c'entrano niente qua (imo).

Per riassumere i problemi sono 2:
Aggiornare l'interprete: non mi sembra un grosso problema e si possono tenere anche più versioni installate.
Aggiornare il codice: se il programma che stai facendo è nuovo non c'è nessun problema a parte la questione 2.x/3.x ma come ho detto nel post precedente non mi sembra sia un problema.
« Ultima modifica: Settembre 08, 2008, 19:55 da Wolf »

Offline gennaro

  • python sapiens
  • *
  • moderatore
  • Post: 595
  • Punti reputazione: 0
    • Mostra profilo
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #18 il: Settembre 08, 2008, 20:30 »
Citazione
Per riassumere i problemi sono 2:
Aggiornare l'interprete: non mi sembra un grosso problema e si possono tenere anche più versioni installate.
Aggiornare il codice: se il programma che stai facendo è nuovo non c'è nessun problema a parte la questione 2.x/3.x ma come ho detto nel post precedente non mi sembra sia un problema.
Installare librerie di terze parti su ognuno degli interpreti installati... :sleepy:

Citazione
Perché limitativa?
Perchè se python ha delle caratteristiche vantaggiose voglio poterle usare senza preoccuparmi della compatibilità... 

Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #19 il: Settembre 08, 2008, 20:39 »
Se vuoi le caratteristiche vantaggiose (che cmq in genere sono abbastanza marginali) devi rinunciare alla retrocompatibilità e viceversa, ma questo accade con tutti le cose.

In teoria se il tuo programma dipende da qualcosa dovrebbe pensarci da solo a installare le librerie nell'interprete che poi andrà ad usare, quindi il problema non si pone (e anche se fosse non mi sembra un ostacolo tale da giustificare la scelta di un altro linguaggio).

Offline Beppe

  • python sapiens
  • *****
  • Post: 672
  • Punti reputazione: 0
    • Mostra profilo
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #20 il: Settembre 08, 2008, 22:42 »
Se vuoi le caratteristiche vantaggiose (che cmq in genere sono abbastanza marginali) devi rinunciare alla retrocompatibilità e viceversa, ma questo accade con tutti le cose.

concordo con Wolf...le cose nella vita cambiano  ;)

Offline Markon

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 4.104
  • Punti reputazione: 5
    • Mostra profilo
    • Neolithic
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #21 il: Settembre 08, 2008, 22:48 »
Sì, le cose nella vita cambiano.
Ma se su Debian Etch è installato di default Python 2.4 non è certo colpa mia. Nè tanto meno di Debian.
Il fatto è che se io voglio fare un progetto serio, come twisted o Zope, noterete che sarò costretto a supportare SOLO una versione (nel caso di Zope funziona solo con Python 2.4, un bordello se vuoi usare py2.5).

Non posso, per mancanza di tempo, supportare ben 3 versioni, a meno che non ci siano persone disposte a farlo per me.
E' ovvio che se parliamo di un progettino di 4000 - 5000 righe di codice possiamo pure metterci lì e perdere un po' di tempo...
Ma se 4000-5000 righe di codice costituiscono solo l'ABC del nostro programma... insomma...

 

Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #22 il: Settembre 08, 2008, 22:54 »
Ma py2.4 funziona anche con l'interprete >2.4, quindi puoi benissimo usare Zope su py2.6 e nel *tuo* codice usare py2.6, il codice di Zope invece userà solo roba del 2.4 e sul 2.6 funzionerà.

Anche se su Debian è installato di default il 2.4 nessuno ti vieta di mettere 2.6 nelle dipendenze del tuo programma e/o nessuno impedisce a chi dovrà usare il tuo programma di installare anche py2.6. Cmq se il 3.0 esce in orario sarà inserito in diverse distro che usciranno poco dopo.

Offline Markon

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 4.104
  • Punti reputazione: 5
    • Mostra profilo
    • Neolithic
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #23 il: Settembre 09, 2008, 10:11 »
Citazione
Ma py2.4 funziona anche con l'interprete >2.4

Certo, questo sì, perchè appunto c'è retrocompatibilità. Ma se devi fare il contrario? Non mi pare.
Quindi per un'applicazione deve installare un interprete a parte. E ancora peggio, su un sistema che presenta solo python2.4 e tu hai bisogno di python 2.5, devi fargli installare quest'altro interprete.
All'uscità di Python 2.6 mica tutti aggiornano i pacchetti per farli funzionare con la 2.6?
(Non parlo di retrocompatibilità, perchè almeno quella c'è ancora. Ma proprio di dipendenze. Dopo sputtani il sistema solo perchè il pacchetto magari non è aggiornato, e ti trovi con interpreti e librerie "appese")
Quindi ... hai bisogno di tenerti python 2.5.
A questo punto ti serve un programma che può girare solo su python 2.6, perchè hanno avuto l'idea geniale di introdurre il "with" e il programmatore s'è scocciato di gestire la retrocompatibilità con la versione 2.5.
E via! Installiamo anche python 2.6.

E finalmente ci troviamo con 3 interpreti. Ma c'è retrocompatibilità.

Guarda questo codice:

[hlpycode]try:
        print 5 / 0
except ZeroDivisionError:
        print "Errore"
        quit()
else:
        print "Quello e` il risultato"
finally:
        print "Exiting"[/hlpycode]


Non è compatibile con python2.4!
Per cui tu mi "obblighi" a passare alla versione 2.5.
Ma in un'azienda una cosa del genere è un casino. Tant' è vero che molte aziende stanno ancora alla versione 2.3!
Per cui il supporto delle aziende per ora riguarda almeno python >= 2.3 .

E' ovvio che novità comportano nuove installazioni etc. (Pensate se fosse a pagamento, tutti rimarrebbero alla 2.3 eheh), però.. non so... mi pare che gli aggiornamenti siano troppo "veloci".
Penso che Python venga aggiornato troppo spesso, considerando che attualmente viene utilizzato Python2.3
Certo, non è un danno, ma attualmente ci stanno già 3 versioni in uso e supportate: py2.3 , 2.4, e 2.5. A questa lista si aggiungerà la 2.6. Non penso sia una cosa buona personalmente, anche perchè ci sarà bisogno ancora di più persone.


Per quanto riguarda Zope, guarda che dice qui.
Praticamente tu puoi usare pure l'interprete Python 2.5, ma è supportato solo python 2.4 per ora. Dunque... tu puoi, ma poi non ti "lamentare", "te l'avevamo detto".


Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #24 il: Settembre 09, 2008, 15:29 »
Citazione
Certo, questo sì, perchè appunto c'è retrocompatibilità. Ma se devi fare il contrario? Non mi pare.
Il contrario non ha senso, la retrocompatibilità serve appunto per eseguire codice vecchio con gli interpreti nuovi, gli interpreti vecchi non hanno modo di sapere cosa verrà introdotto in futuro (anche se in py c'è il from __future__ import ... che in parte risolve il problema).
Citazione
Quindi per un'applicazione deve installare un interprete a parte. E ancora peggio, su un sistema che presenta solo python2.4 e tu hai bisogno di python 2.5, devi fargli installare quest'altro interprete.
All'uscità di Python 2.6 mica tutti aggiornano i pacchetti per farli funzionare con la 2.6?
Questo dipende da diversi fattori, se chi ha fatto il programma ha deciso di usare solo py3beta e uno vuole eseguire il programma è costretto a installarlo, altrimenti può farne a meno. Non vedo cosa ci sia di strano a portarsi dietro delle dipendenze.
Citazione
Ma proprio di dipendenze. Dopo sputtani il sistema solo perchè il pacchetto magari non è aggiornato, e ti trovi con interpreti e librerie "appese"
Io su linux ho installato sia 2.4 che 2.5 e non ho di questi problemi... In ogni caso una volta che installi la versione più recente non c'è motivo di tenere quelle vecchie, visto che la 2.6 sarà in grado di eseguire il codice di programmi scritti per py2.3
Citazione
Non è compatibile con python2.4! Per cui tu mi "obblighi" a passare alla versione 2.5.
Se usi cose che non sono compatibili con py2.4 ovviamente hai bisogno del 2.5, ma nessuno mi obbliga a usarle (se sei un programmatore) e nessuno ti obbliga a usare il mio programma (se sei un utente).
Citazione
Tant' è vero che molte aziende stanno ancora alla versione 2.3!
Se è per questo è anche pieno di aziende che usano COBOL o robe simili, ma le tue scelte devono anche essere basate su chi utilizza il programma.
Citazione
mi pare che gli aggiornamenti siano troppo "veloci"
Non mi pare, c'è una main release ogni 10 anni, se guardi PHP o Perl sono già alla 6, noi siamo appena alla 3.
Py 2.6/3.0 dovrebbe uscire a ottobre 2008 se ho ben capito, py2.5 dovrebbe essere della fine del 2006, py 2.4 è della fine del 2004 e py 2.3 è dell'estate del 2003, quindi esce una versione circa ogni 1.5/2 anni, quindi quelli che usano ancora 2.3 e 2.4 hanno avuto 4-5 anni per aggiornarsi.
Citazione
Certo, non è un danno, ma attualmente ci stanno già 3 versioni in uso e supportate: py2.3 , 2.4, e 2.5. A questa lista si aggiungerà la 2.6. Non penso sia una cosa buona personalmente, anche perchè ci sarà bisogno ancora di più persone.
Come ho già detto cosa supportare lo decidi tu, se vuoi supportarle tutte scriverai in py2.3 e tutti quelli che avranno uno qualsiasi di questi 4 interpreti potranno eseguire il codice, se decidi di scriverlo in 2.5 funzionerà solo a chi usa py >=2.5.
Citazione
Praticamente tu puoi usare pure l'interprete Python 2.5, ma è supportato solo python 2.4 per ora
Come vedi anche quelli di Zope si evolvono man mano, come è normale che sia. In genere si rimane indietro di 2-3 versioni per dare tempo ai ritardatari di aggiornarsi, quindi ora che esce 2.6 si può anche iniziare a tagliare fuori il 2.3, quando uscirà la 2.7 si potrà pensare di tagliar fuori la 2.4 e dopo un po' supportare solo la 3 (non prima di 2-3 anni probabilmente).

Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #25 il: Settembre 09, 2008, 15:41 »
Cmq oggi ero a lezione e dovevo passare un programma in python2.5 dal portatile al telefonino, per poterlo usare durante la lezione senza star lì a tirare fuori il portatile ogni volta e (ironia della sorte) sul cell avevo python 2.2 :D
Su una 70ina di linee di codice non ha funzionato: x = y if cond else z (fixato con and/or), reversed() (ho provato con [::-1] ma non ha funzionato e ho dovuto usare l.reverse()) e enumerate() (fixato con zip(range(len(x)), x)). Il resto ha funzionato tutto perfettamente, e considerando che che il 2.2 è di 6-7 anni fa mi sembra un risultato più che buono (e il codice originale non era stato scritto con l'intenzione di supportare versioni vecchie, visto che in genere gira sul 2.5 e quindi ho usato tutto quello che il 2.5 offriva).

Offline billiejoex

  • python sapiens
  • *****
  • Post: 522
  • Punti reputazione: 1
    • Mostra profilo
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #26 il: Settembre 09, 2008, 17:47 »
Nessuno obbliga a passare a 3.x sin da subito, anzi, sono gli stessi sviluppatori di Python che lo sconsigliano.
La versione 3.0, in particolare, la vedo molto come una beta. Una qualche stabilità di Python 3000 si raggiungerà solamente nelle versioni successive (3.1, forse anche 3.2 se non addirittura dopo ancora).
Il trunk 2.x resterà utilizzato e manutenuto ancora per parecchi anni e quello che mi sentirei di consigliare ad un neofita è di imparare e lavorare sulla versione 2.x, se non altro perchè il 99% delle cose imparate rimangono cmq valide per Python 3.x.

Poi l'effettiva piega che prenderà il tutto secondo me è tutta da vedere.
Personalmente non escludo un rifiuto di parecchia gente ad utilizzare 3.x a priori, specialmente all'inizio.
Io stesso ho provato più volte a portare pyftpdlib dalla 2.x a 3.x ma ho fallito puntualmente a causa dell'introduzione dei bytes e le varie differenze che sono state introdotte alle stringhe e ad unicode che, ad ora, non ho assolutamente capito (e credo che molti altri mi faranno compagnia).

Offline manzo

  • python neanderthalensis
  • *
  • moderatore
  • Post: 478
  • Punti reputazione: 1
    • Mostra profilo
Re: Tema: Python 2.5, 2.6 e 3.0
« Risposta #27 il: Settembre 16, 2008, 15:57 »
In pratica sono rimasto a Python 2.5 e volevo capire come muovermi.  :confused:

se lo sono chiesti anche su Stack Overflow, vedi le risposte qui: http://stackoverflow.com/questions/69909/is-it-better-to-write-new-codesoftware-for-python-30-or-python-26