Python dispone di numerosissimi strumenti che facilitano e completano l’esperienza di programmazione. Il problema è, appunto, che sono troppi. Ogni volta bisogna ricercare i migliori fra la sterminata costellazione di strumenti di sviluppo.
E quindi ho deciso di fare una lisa. Soprattutto per me, dato che ogni volta che mi capita di reinstallare il sistema perdo un bel po’ di tempo a ricordarmi quali fossero tutti i tools che avevo installato.
IDE
La scelta dell’IDE è sempre la più importante. Sebbene Python non necessiti di chissà quale IDE avanzato, un po’ di comodità in più non fa certo male. La mia scelta ricade a pari merito su due IDE molto importanti:
Per il momento sto utilizzando la seconda configurazione ma in passato ho usato la prima. A voi la scelta.
CHECKER
Python è un linguaggio interpretato, ragion per cui gran parte degli errori di sintassi vengono fuori solamente in fase di esecuzione. Ci sono però programmi in grado di individuarli da subito.
Questa è la mia scelta. Fa tutte le cose di PyChecker e, in aggiunta, fa anche alcuni controlli riguardo le convenzioni stilistiche di Python. Un ottimo “tutor”. Inoltre è integrato con PyDev, quindi se usate Eclipse è veramente una mano santa.
DEBUGGER
Il debug in python è integrato. Basta importare il modulo pdb e lanciare il programma con:
Vi rimando alla guida ufficiale per maggiori informazioni.
TESTING FRAMEWORK
Gli ambienti di test sono strumenti che permettono di scrivere dei test per verificare il buon funzionamento di una classe o di un modulo che abbiamo appena scritto. In Java io utilizzavo JUnit. È quindi naturale che in Python abbia scelto:
PyUnit ricalca molto da vicino la sintassi di JUnit. Inoltre è integrato con Eclipse. Per test semplici è veramente intuitivo, per roba più complessa basta dare una letta alla documentazione.
CODE COVERAGE
Gli strumenti di code coverage sono tools che tengono traccia di quale parte di codice eseguiamo durante un test e di quale non eseguiamo. È molto facile infatti che durante un test capiti di trovarsi ad eseguire, ad esempio, solamente un ramo di un IF e che, come al solito, l’errore si nasconda nel ramo che non eseguiamo mai. I programmi di code coverage ci segnalano proprio questa eventualità.
Questo è il programma di coverage in Python per eccellenza. Integrata con PyDev. Esiste anche un espansione (figleaf) che però non ho mai avuto modo di provare.
DOCUMENTAZIONE
Scrivere la documentazione è essenziale. Generare la documentazione dai commenti del codice sorgente è ancora più essenziale in quanto ci risparmia una marea di tempo. In Java esiste il famoso javadoc. Ovviamente il Python non è da meno.
Epydoc, di cui ho scritto anche una rapida guida tempo fa, è un tool fenomenale. Non è perfettamente integrato con Python 3 (almeno nell’ultima versione che ho usato) ma fa dannatamente bene il suo lavoro.
Credo che per il momento la lista sia piuttosto esaustiva. Spero vi sia utile.
Alla prossima. 🙂
Il tuo post cade a fagiolo, proprio adesso nel mio tempo libero sto facendo un programmino in python per impararlo e stavo andando solo di gedit. Più che altro perché Eclipse+PyDev non mi fa impazzire.
Invece riguardo la realizzazione di interfacce grafiche conosci qualche strumento di supporto?
Volevo trattare anche quel tipo di programmi. Il problema è che dipende troppo dal tipo di libreria grafica che si sta utilizzando. Gtk, Qt, Wx o altre… E a seconda di quale si usa cambiano programmi e tools. Io per esempio uso PyQt solitamente.
Io pensavo a wx, dovrebbero essere in grado di appoggiarsi alle librerie grafiche del sistema operativo, almeno questa era la cosa carina delle wx del C++. Qualcosa ho trovato, ma piuttosto confuso o ide apparentemente completi a pagamento.
Di solito in Python si possono benissimo usare i tools del C++. Esistono poi dei piccoli strumenti che convertono i risultati in qualcosa di adatto al Python. Almeno così funziona per le Qt e le Gtk.
Alla fine per adesso sto andando a mano, ho sempre avuto problemi ad usare degli strumenti. Ho visto wxFormBuilder che non sembra male, il problema è che non so bene come mettere mano all’XRC che genera. Quindi vado a mano, wxPy sono praticamente identiche alle wxWidgets originali.
Più o meno si tratta di quello che utilizzo io. A parte coverage che non ho mai utilizzato. Comunque ottima lista “della spesa”.
Ovviamente non avevo la pretesa di stilare una lista innovativa. XD Solo che quando cominciai mi avrebbe fatto comodo una lista così. 😀