[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