[Python] Sviluppare in python 2 o python 3
Davide Muzzarelli
d.muzzarelli a dav-muz.net
Mar 9 Giu 2015 00:50:07 CEST
Il 08/06/2015 21:42, Matteo Scarpa ha scritto:
> perché si sviluppano ancora applicazioni in python 2.qualcosa
> (ovviamente a meno di necessitá particolari tipo la libreria c'é solo
> per quella specifica versione) ripsetto che a una 3,qualcosa? É una cosa
> prettamente di guisti/abitudine o c´é qualcosa sotto?
Ciao Matteo,
cerco di essere il più sintetico possibile, i pignoli in lista non me ne
vogliano se lascio margini d'imprecisione nella risposta ;)
Premetto che lavoro su progetti web o che hanno a che fare col web. In
questo ambito è desiderabile poter soddisfare il numero più alto
possibile di richieste al secondo utilizzando il minimo possibile di RAM.
Stiamo rimanendo su Python 2 per i seguenti motivi, rispetto a Python 3:
- Python 2 è più veloce.
- Python 2 consuma meno memoria.
- Ancora non tutte le librerie che ci servono sono supportate su Python
3 e quelle supportate spesso mancano di qualcosa pur di mantenere una
certa retrocompatibilità (anche solo una libreria importante può
bloccare una migrazione).
- In Python 3 si è persa l'opportunità di fare una buona implementazione
di Unicode per cui non si vedono vantaggi nel passaggio.
- Python 3 è considerato pienamente maturo dalla versione 3.4, che è
relativamente recente.
- La migrazione 2to3 funziona solo parzialmente bene con Python 3.5, ci
sono diverse cose da fare a mano per migrare un'intera applicazione e
non si può fermare tutto il business nel frattempo.
Per fare un cambio di versione così importante non è sufficiente la
motivazione "perché Python 3 è più recente", ci vuole almeno un benefit
veramente importante non raggiungibile diversamente per poter
giustificare i costi di migrazione.
Per inciso, non ha senso migrare se non c'è un beneficio tangibile e
consistente a livello di fatturato, in modo da compensare i costi di
migrazione e dare un vantaggio competitivo. Piuttosto è meglio
continuare a supportare il software su Python 2 per qualche anno e poi,
eventualmente, approfittare dell'occasione per rivedere l'applicazione.
Per alcuni progetti sto passando a Go invece che a Python 3, questi sono
i benefit che percepisco come importanti:
- Tipizzazione statica, errori in fase di compilazione invece che a runtime
- Binario compilato senza dipendenze esterne (deploy facile)
- Tempi di compilazione minimi (spesso meno di quanto ci mette Python a
partire)
- Garbage collector sufficientemente buono
- Unicode
- Facile da imparare anche per i junior, seppur non facile quanto Python
- Indicativamente 10 volte più performante di Python
- Indicativamente 10 volte meno memoria consumata rispetto a Python
- Comodo per gestire concorrenza e parallelismo
Buona serata,
Davide Muzzarelli
Maggiori informazioni sulla lista
Python