Zen di Python

Lo Zen di Python è una raccolta di 19 "principi guida" per la scrittura di programmi per computer che influenzano la progettazione del linguaggio di programmazione Python.[1] Il codice Python che si allinea con questi principi è spesso definito "Pythonic" - "Pythonico".[2]
L'ingegnere informatico Tim Peters scrisse questi principi e li pubblicò sulla mailing list di Python nel 1999.[3] Peters lasciò incompleto un ventesimo principio "da far compilare a Guido", riferendosi a Guido van Rossum, l'autore originale del linguaggio Python. Il posto vacante per un ventesimo principio non è stato colmato.
Lo Zen di Python di Peters è stato incluso come proposta ufficiale di miglioramento di Python numero 20 del linguaggio ed è stato rilasciato in pubblico dominio.[4] È anche incluso come un Easter egg nell'interprete di Python, dove può essere visualizzato inserendo import this.[1][4]
Nel maggio 2020, Barry Warsaw (sviluppatore di GNU Mailman) lo ha utilizzato come testo di una canzone.
Principi
[modifica | modifica wikitesto]I principi sono elencati come segue:
- Bello è meglio di brutto.
- Esplicito è meglio di implicito.
- Semplice è meglio di complesso.
- Complesso è meglio di complicato.
- Piatto è meglio di annidato.
- Sparso è meglio di denso.
- La leggibilità conta.
- I casi speciali non sono abbastanza speciali da infrangere le regole.
- Sebbene la praticità sia meglio della purezza.
- Gli errori non dovrebbero mai passare inosservati.
- A meno che non vengano esplicitamente messi a tacere.
- Di fronte all'ambiguità, rifiuta la tentazione di tirare a indovinare.
- Dovrebbe esserci un modo ovvio, e preferibilmente uno solo, per farlo.
- Sebbene questo modo potrebbe non essere ovvio all'inizio, a meno che non siate olandesi.
- Ora è meglio che mai.
- Sebbene mai sia spesso meglio di adesso.[d]
- Se l'implementazione è difficile da spiegare, è una cattiva idea.
- Se l'implementazione è facile da spiegare, potrebbe essere una buona idea.
- Gli spazi dei nomi sono un'idea fantastica: facciamone di più!
Essere Pythonico
[modifica | modifica wikitesto]Uno dei principi, "Dovrebbe esserci un modo ovvio, e preferibilmente uno solo, per farlo", può essere definito il modo "Pythonico".[5] La definizione ufficiale di "Pythonico" è:[2]
Un'idea o un pezzo di codice che segue da vicino le espressioni idiomatiche più comuni del linguaggio Python, anziché implementare il codice utilizzando concetti comuni ad altri linguaggi. Ad esempio, un'espresisone idiomatica comune in Python è quello di eseguire un ciclo su tutti gli elementi di un elemento iterabile utilizzando l'istruzione
for. Molti altri linguaggi non hanno questo tipo di costrutto, quindi le persone che non hanno familiarità con Python a volte usano un contatore numerico:for i in range(len(food)): print(food[i])A differenza del metodo più pulito, Pythonic:
for piece in food: print(piece)
Il codice che è difficile da comprendere o che si legge come una trascrizione approssimativa da un altro linguaggio di programmazione è detto non Pythonico .[6]
In pratica
[modifica | modifica wikitesto]Sin dal rilascio dello Zen di Python, sono state condotte ricerche sulla sua efficacia e sul suo utilizzo effettivo da parte degli sviluppatori. Nonostante le differenti di interpretazione tra programmatori principianti ed esperti, le interviste a 13 programmatori in Python con livelli di competenza diversi hanno mostrato che lo Zen di Python "influenza positivamente il modo in cui gli sviluppatori scrivono e parlano di codice".[5] I ricercatori hanno esteso questo caso di studio per esplorare l'uso degli idiomi Python sui repository GitHub e hanno scoperto che l'uso di "idiomi Pythonici" è aumentato nel tempo.[6] Scrivere codice Python in linea con lo Zen di Python può far risparmiare memoria e tempo di esecuzione.[7] Il desiderio di scrivere codice Pythonico ha portato alla creazione di strumenti di refactoring per aiutare i programmatori a raggiungere questo obiettivo.[8][9]
Note
[modifica | modifica wikitesto]- 1 2 Reitz, Code Style, su The Hitchhiker’s Guide to Python, 2011–2019. URL consultato il March 26, 2019.
- 1 2 (EN) Glossary, su Python Documentation. URL consultato il 7 febbraio 2024.
- ↑ Peters, The Python Way, su mail.python.org, June 4, 1999. URL consultato il March 26, 2019.
- 1 2 Peters, PEP 20—The Zen of Python, su python.org, August 19, 2004. URL consultato il March 26, 2019.
- 1 2 Carol V. Alexandru, José J. Merchante e Sebastiano Panichella, Proceedings of the 2018 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (PDF), Onward! 2018, Association for Computing Machinery, 24 ottobre 2018, pp. 1–11, DOI:10.1145/3276954.3276960, ISBN 978-1-4503-6031-9, OCLC 1362712424.
- 1 2 Warsaw, The Zen of Python, su We Fear Change, 10 May 2020.
- ↑
Zen di Python, su YouTube. - ↑ Warsaw, The Zen of Python, su We Fear Change, 10 May 2020.
- ↑ arXiv:2009.03302.