Domini Applicativi

Avete un progetto da svolgere e vi state chiedendo se Python possa essere adatto? Con buona probabilità c'è già una libreria che vi può essere utile.

Sviluppo web

Esistono numerosi sistemi di sviluppo web, ma vogliamo aiutarvi nella scelta tramite un messaggio apparso sulla nostra mailinglist.

Se serve una libreria per un'applicazione web, dire che ce ne sono 50 non aiuta certo a scegliere. Le possibilità suggerite permettono di fare tutto nelle rispettive classi (framework minimale, stack completo, ecc), sono le piu' conosciute, sono ben documentate, ecc. Può essere che esistano alternative che per una certa feature sono meglio di quello suggerite, anzi è più che probabile. Ci sta che l'utente finisca per trovare l'ORM di Django limitativo e avrebbe preferito TurboGears con SQLAlchemy (è solo un esempio random, non e' attacco all'ottimo Django), ma porre tutte le scelte all'inizio, senza che l'utente ne abbia usata nessuna e quindi senza alcun termine di paragone, è una cosa che disorienta e non aiuta.

Quando dopo aver fatto un po' di esperienza l'utente potrà paragonare le varie librerie con cognizione di causa, solo allora potrà prendere una decisione chiara. Se a questo punto della sua evoluzione l'utente trovasse Flask troppo dispersivo e con troppe dipendenze (ancora una volta è solo un esempio), solo allora sarà possibile suggerirgli qualcos'altro come Bottle; ma prima di allora dire che esiste una differenza di questo genere è solo per voler parlare, non perché sia un'informazione che all'utente serve. La libertà di scelta è bella, ma fa comodo quando si ha dimestichezza col campo, si è usata una libreria e se ne conoscono i punti di forza e le debolezze. Per tutti gli altri (per quasi tutti in generale) possiamo anche sbilanciarci e dire che Django va più che bene. Restassi su un'isola deserta mi porterei Django, ci spaccherei anche le noci di cocco. La valutazione può essere riassunta in: li ho usati e funzionano. Ne ho usati altri e tendenzialmente hanno funzionato anche quelli. Django spacca bene le noci di cocco però.

  • framework leggeri come Bottle, Webpy o Flask
  • framework di sviluppo web Django e TurboGears
  • l'application server Zope e il suo Content Management System Plone
  • il framework Twisted per scrivere servizi di rete
  • se non potete fare a meno di CGI (Common Gateway Interface) scripts
  • ed ovviamente potete scendere giù fino ai socket...

Accesso ai database

Python definisce una modalità standard di accesso ai database, la cosiddetta DB-API attualmente alla v2.0.

Sono supportati nativamente diversi database (relazionali o non-relazionali), oltre ad essere disponibili attraverso ODBC. Praticamente è possibile collegarsi con qualsiasi database esistente, tra i principali segnaliamo:

È anche possibile usare i database ad un livello superiore attraverso un Object-Relational mapper come ad esempio SQLAlchemy.

Applicazioni desktop

Python include nella libreria standard i binding alla libreria di sviluppo TkInter, ma se desiderate interfacciarvi con altri toolkit grafici, non c'è che l'imbarazzo della scelta.

Tra le più diffuse segnaliamo:

  • wxPython fusione della libreria C++ wxWidgets con Python
  • PyQt (tutorial)
  • PyGTK
  • GenroPy framework per fare applicativi web che si presentano come applicativi desktop

Giochi e grafica 3D

Python è ampiamente usato per lo sviluppo di giochi sia a livello commerciale che "hobbistico".

Tra i principali strumenti ricordiamo:

Inoltre vi segnaliamo PyWeek che è una divertente gara per sviluppatori di videogiochi aperta a tutti.

Calcolo scientifico e numerico

Python è ampiamente usato in ambiente scientifico, vedi ad esempio:

Sviluppo software

Esistono innumerevoli aspetti legati allo sviluppo software, che possono aiutare ogni sviluppatore a diventare un programmatore migliore. Anche Python non si sottrae a questo compito e fornisce alcuni strumenti a dir poco vitali:

  • Trac è uno dei progetti migliori nel suo genere. Si tratta di un wiki che integra un sistema di bugtracking altamente configurabile
  • Buildbot è un framework studiato per costruire e controllare lo sviluppo software attraverso test e definendo processi di sviluppo controllati
  • Roundup è un semplice, ma efficace, sistema di tracciamento estremamente personalizzabile

IDE ed Editors

Come il titolo suggerisce, questo paragrafo non si occupa di un ambito specifico che potrete affrontare con Python, ma più concretamente del mezzo col quale affronterete i vari aspetti dello sviluppo.

Uno dei più annosi e controversi quesiti che ci vengono posti dagli sviluppatori, siano essi neofiti o meno, riguarda sicuramente la scelta del miglior strumento disponibile per lo sviluppo in Python. Dopo anni di dibattiti e discussioni possiamo affermare con una certa tranquillità che non esiste un ambiente ideale e/o adatto a tutte le esigenze.

Per scegliere lo strumento più adatto ai vostri gusti bisognerà affidarsi alla pratica e all'esperienza che ci indicheranno la strada migliore. Questo sarà ottenibile dedicando attenzione ai vari software a disposizione, semplicemente provandoli. Esistono molte guide o video sparsi per la rete, ma avendone la possibilità non rinunciate ad un po' di sano empirismo.

C'è però una cosa che ci sentiamo di consigliarvi: sporcatevi le mani con la console. Almeno una volta nella vita sarete chiamati a dover effettuare aggiunte/correzioni/modifiche direttamente su server senza interfaccia grafica e/o in ambienti minimali, dove non avrete a disposizione altro che la console. A questo punto la vostra pratica sui vari VIM, Emacs o qualunque altro editor da schermo nero, vi salverà letteralmente la faccia (ci ringrazierete per questo consiglio).

Vi lasciamo una lista degli strumenti più diffusi: