Appendix D
Altro materiale
Arrivati a questo punto qual è la direzione da prendere? Le possibilità sono molte e vanno dall'ampliamento della conoscenza dell'informatica in generale, all'applicazione di Python in campi specifici.
Gli esempi proposti in questo libro sono stati deliberatamente semplici ma non hanno mostrato appieno quelle che sono le capacità più entusiasmanti del linguaggio. Ecco un campionario di estensioni di Python e di suggerimenti per progetti che le usano.
- La programmazione dell'interfaccia grafica (detta anche "GUI", graphical user interface) permette al tuo programma di interagire con l'operatore sotto forma di ambiente grafico.
Il primo pacchetto grafico nato per Python è stato Tkinter, basato sui linguaggi di scripting Tcl e Tk di Jon Ousterhout. Tkinter è sempre presente nelle distribuzioni di Python.
Un'altra piattaforma piuttosto conosciuta è wxPython. Questa è essenzialmente una maschera per facilitare l'uso di wxWindows, un pacchetto scritto in C++ che implementa un sistema a finestre usando un'interfaccia nativa in ambiente Windows e Unix (Linux incluso). Le finestre ed i controlli in wxPython tendono ad essere più semplici da programmare rispetto ai corrispondenti Tkinter.
Qualsiasi tipo di programmazione con interfaccia grafica ti porterà ad un ambiente di programmazione controllato dall'evento, dove non è tanto il programmatore ma l'operatore a decidere il flusso di esecuzione. Questo stile di programmazione necessita di un po' di pratica per poter essere gestito nel modo migliore e talvolta può comportare una completa riscrittura del programma.
- La programmazione Web integra Python con Internet. Possiamo, per esempio, costruire programmi web client che aprono e leggono una pagina remota in modo abbastanza semplice, tanto che le difficoltà sono confrontabili con quelle (minime) che si possono incontrare durante l'apertura di un file su disco locale.
Ci sono moduli Python che permettono l'accesso a file remoti via ftp e moduli che consentono di ricevere e spedire email. Python è ampiamente usato anche per la gestione di form di introduzione dati nei web server.
- I database sono paragonabili a dei super-file dove i dati sono memorizzati secondo schemi predefiniti e sono accessibili in vari modi. Python è dotato di un certo numero di moduli per accedere a dati di diversi tipi di database, sia Open Source che commerciali.
- La programmazione a thread permette di eseguire diversi flussi di programma allo stesso tempo a partire da un unico programma. Se hai presente come funziona un browser per Internet puoi farti un'idea di cosa questo significhi: in un browser vengono caricate più pagine contemporaneamente e mentre ne guardi una il caricamento delle altre prosegue in modo quasi del tutto trasparente.
- Quando ci troviamo alle prese con necessità particolari ed è indispensabile una maggiore velocità di esecuzione Python può essere integrato da moduli scritti in altri linguaggi, tipo il C ed il C++. Queste estensioni formano la base dei moduli presenti nelle librerie standard di Python. Anche se le procedure per l'integrazione di questi moduli possono essere piuttosto complesse esiste uno strumento chiamato SWIG (Simplified Wrapper and Interface Generator) che permette di semplificare enormemente l'operazione.
Siti e libri su Python
Prima di procedere con le raccomandazioni degli autori, per quel che
riguarda le risorse disponibili in Internet, ti consiglio di dare
un'occhiata ai siti www.zonapython.it, www.python.it e
python.programmazione.it che
possono rappresentare un buon trampolino di lancio grazie anche
(e soprattutto) al fatto di essere in lingua italiana.
- L'homepage di Python, www.python.org è il luogo dove iniziare ogni ricerca: troverai aiuto, documentazione, link ad altri siti e mailing list dei SIG (Special Interest Group) alle quali puoi eventualmente associarti.
- L'Open Book Project www.ibiblio.com/obp contiene non
soltanto questo libro, ma versioni simili per Java e C++ scritti da
Allen Downey. Inoltre potrai trovare una serie di altri documenti
che spaziano dai circuiti elettrici a Python (Python for Fun
di Chris Meyers), passando per il sistema operativo Linux (The
Linux Cookbook by Michael Stultz, con 300 pagine di suggerimenti
e tecniche). La versione tradotta in italiano e gli aggiornamenti
saranno raggiungibili dal sito www.zonapython.it.
- Se poi vai su Google e cerchi "python -snake -monty" potrai rimanere stupito della mole di informazioni disponibili.
Per quanto concerne i libri, la bibliografia su Python, in italiano, si sta via via ampliando. Prova a chiedere in libreria: non ha neanche tanto senso indicare dei titoli quando il materiale disponibile è soggetto a variazioni così repentine. Non dimenticare che Python è un linguaggio giovane ed è soggetto a continue modifiche.
Per quanto concerne i libri in lingua inglese tra gli altri si distinguono quelli del nostro Alex Martelli.
Una ricerca in www.amazon.com presenta circa 200 titoli disponibili. Tra questi consigliamo:
- Python in a Nutshell di Alex Martelli, è un ottimo riferimento per programmatori. Risolve brillantemente le difficoltà che insorgono quando è necessario ricordare la sintassi del linguaggio e dei suoi molti moduli, tratta sia le parti più usate delle librerie standard che le estensioni più conosciute.
- Python Cookbook di Alex Martelli e David Ascher, è un'ottima raccolta di "ricette" basate su esempi pratici e offre la soluzione a oltre 200 problemi in ogni campo di applicazione.
- Core Python Programming di Wesley Chun (750 pagine), copre il linguaggio a partire dai concetti fondamentale per arrivare a trattare di tecniche avanzate.
- Python Essential Reference (2nd edition) di David M. Beazley e Guido Van Rossum è molto ben fatto, tratta il linguaggio ed i moduli della libreria standard.
- Python Pocket Reference di Mark Lutz really, sebbene non così completo come la Python Essential Reference è un ottimo riferimento per le funzioni usate più frequentemente.
- Python Programming on Win32 di Mark Hammond e Andy Robinson deve far parte della biblioteca di chiunque si appresti a programmare in Python in ambiente Windows.
Informatica in generale
Ecco qualche suggerimento per ulteriori letture, inclusi molti dei libri favoriti dagli autori. Trattano delle tecniche di programmazione da preferire e dell'informatica in generale.
- The Practice of Programming di Kernighan e Pike, oltre alla progettazione e alla codifica degli algoritmi e delle strutture di dati, tratta del debug, del test e del miglioramento delle performance dei programmi. Non ci sono esempi in Python.
- The Elements of Java Style di Al Vermeulen è un altro piccolo libro che tratta dei punti caratteristici della buona programmazione usando come riferimento il linguaggio Java.
- Programming Pearls di Jon Bentley è un classico e consiste di una raccolta di casi reali trattati dall'autore nella sua rubrica Communications of the ACM. Ciò che emerge è il concetto che raramente la prima idea per lo sviluppo di un programma è quella ottimale. È piuttosto datato (1986) ed è stato seguito da un secondo volume.
- The New Turing Omnibus di A.K Dewdney fornisce un'introduzione indolore a 66 argomenti correlati all'informatica, dall'elaborazione parallela ai virus, passando per gli algoritmi genetici. Tutti gli argomenti sono trattati in modo divertente e succinto.
- Turtles, Termites and Traffic Jams di Mitchel Resnick mostra come il comportamento complesso può nascere dal coordinamento di semplici attività delegate a molteplici agenti. Molti degli esempi del libro sono scritti in StarLogo, sono stati sviluppati da studenti e possono essere riscritti usando Python.
- Gödel, Escher, Bach: un'eterna ghirlanda brillante di Douglas Hofstadter. Se ti piace la ricorsione la troverai come protagonista di questo libro, pubblicato anche in lingua italiana * Note. L'autore dimostra la relazione esistente tra la musica di J.S.Bach, le immagini di Cornelius Escher ed il teorema dell'incompletezza di Gödel.