Una guida per sviluppatori ai pro e ai contro di Python

Python è classificato dalla Python Software Foundation come facile da imparare e funzionante ovunque. È utile per una vasta gamma di tipi di applicazioni, tra cui sviluppo Web, elaborazione scientifica e istruzione. Google e Instagram sono stati tra i tanti utenti di Python e il linguaggio ha un buon punteggio negli indici di popolarità.

Ma Python ha avuto i suoi problemi, con domande sollevate sulle sue prestazioni e stranezze di progettazione. Per arrivare al fondo di ciò che è giusto - e forse non così giusto - su Python, Editor at Large Paul Krill ha chiesto ai dignitari della comunità Python il loro contributo.

Professionisti di Python

Leggilo, usalo con facilità. "La caratteristica principale di un programma Python è che è facile da leggere", afferma Pierre Carbonnelle, programmatore e blogger Python che gestisce l'indice del linguaggio PyPL. "Questo ha dei vantaggi per te e per gli altri. Ti aiuta a pensare più chiaramente quando scrivi programmi e aiuta gli altri che manterranno o miglioreranno il tuo programma. In entrambi i casi, scrivere un programma Python richiede meno sforzo che scriverne uno in un altro linguaggio come C ++ o Java. " La leggibilità di Python facilita lo sviluppo open source, ha aggiunto Carbonnelle.

Python è facile da usare ed estremamente popolare nel mondo accademico, creando un ampio pool di talenti, afferma Sumit Chachra, CTO di Tivix, una società di consulenza software specializzata nello sviluppo di Python / Django. Django e Python sono sfruttati da Tivix nello sviluppo Web e mobile, afferma.

Python è un modo molto produttivo per scrivere codice, afferma Stephen Deibel, di Wingware, che rende Wing Python IDE. "Alcuni di questi derivano dalla sintassi semplice e dalla leggibilità: non esiste praticamente alcun" boilerplate ". Alcuni provengono dalla libreria standard e integrata ricca e ben progettata e dalla disponibilità di molti open source di terze parti librerie e moduli. " Essendo facile da capire, il codice è più facile da mantenere, aggiunge. 

Python, dice Chachra, è tipizzato dinamicamente e flessibile, con codice meno dettagliato. Tuttavia, cita la digitazione dinamica come potenziale negativo (vedi sotto).

Internet delle cose opportunità. Python potrebbe diventare popolare per l'Internet delle cose, poiché su di esso si basano nuove piattaforme come Raspberry Pi, afferma Carbonnelle. La documentazione di Raspberry Pi cita il linguaggio come "un meraviglioso e potente linguaggio di programmazione facile da usare (facile da leggere e scrivere) e con Raspberry Pi ti consente di connettere il tuo progetto al mondo reale".

Vantaggi della codifica asincrona. Python, dice Deibel, "è ottimo per scrivere codice asincrono, che invece di threading utilizza un singolo ciclo di eventi per lavorare in piccole unità". Questo codice, dice, è spesso più facile da scrivere e mantenere senza confondere conflitti di risorse, deadlock, ecc. "I generatori di Python sono un ottimo modo per interleave eseguire molti cicli di elaborazione in questo approccio." 

L'approccio multiparadigm è il migliore di Java. L'approccio alla programmazione di Python non è limitato come quello di Java, afferma Carbonnelle. "Ad esempio, non è necessario creare una classe OO per stampare 'Hello world' in Python, devi farlo in Java." A differenza di Java, Python è multiparadigma e supporta stili di programmazione OO, procedurali e funzionali, afferma. (Java ha recentemente aggiunto funzionalità funzionali in Java 8.)

"In Python, tutto è un oggetto", afferma Brian Curtin, membro del consiglio di amministrazione di Python Software Foundation e collaboratore principale di CPython. "È possibile scrivere applicazioni in Python utilizzando diversi paradigmi di programmazione, ma rende molto chiaro e comprensibile il codice orientato agli oggetti."

Contro di Python

La velocità può essere un problema. "Poiché è un linguaggio interpretato, spesso è molte volte più lento dei linguaggi compilati", afferma Curtin. "Tuttavia, si torna a separare il linguaggio dal runtime. Alcuni benchmark del codice Python eseguiti con PyPy funzionano più velocemente del codice C equivalente o di altri."

"Un possibile svantaggio di Python è la sua bassa velocità di esecuzione", afferma Carbonnelle. Ma molti pacchetti Python sono stati ottimizzati nel corso degli anni ed eseguiti a velocità C, dice.

Le prestazioni, dice Chachra, "sono più lente rispetto ai linguaggi più vecchi come C / C ++ e anche a quelli più recenti come Go".

Assenza da mobile computing e browser. "Python è presente su molte piattaforme server e desktop, ma è debole nel mobile computing; pochissime applicazioni per smartphone sono sviluppate con Python", afferma Carbonnelle. "Inoltre è raramente visto sul lato client di un'applicazione Web."

Python non è nei browser Web, osserva Deibel. "È un vero peccato. C'è brython, ma non credo che sia utilizzabile nel mondo reale." Python è difficile da proteggere, ed è per questo che non è nei browser, aggiunge. "Non esiste ancora un buon sandbox / jail sicuro per Python, e penso che sia considerato fondamentalmente impossibile per CPython (l'implementazione standard). 

Limitazioni di progettazione. I devoti di Python hanno citato diversi problemi con il design del linguaggio. Poiché la lingua è tipizzata dinamicamente, richiede più test e presenta errori che vengono visualizzati solo in fase di esecuzione, afferma Chachra.

Il blocco dell'interprete globale di Python, nel frattempo, significa che solo un thread può accedere agli interni di Python alla volta, afferma Deibel. "Questo potrebbe essere meno importante in questi giorni, dal momento che puoi facilmente generare attività per separare i processi utilizzando il modulo multiprocessing o scrivere invece codice asincrono." 

Curtin dice che ci sono alcune convenzioni sull'uso di Python, ma gli spazi vuoti significativi sono quelli applicati dall'interprete. "La struttura dei programmi Python deve essere coerente, quindi quando le parentesi o altri identificatori consentono all'utente maggiore libertà in altri linguaggi, l'indentazione è ciò che conta quando si parla di Python."