Capitolo 3
Applicazioni: 6/10
Cosa si può programmare con Python?
Ecco tutti i modi in cui viene usato!
Abbiamo detto che è un linguaggio adatto a qualsiasi scopo (general purpose) e che viene facilmente usato in ambiti anche completamente diversi tra loro, per piccoli e grandi progetti, sia offline che online.
Aspetta però, anche se Python viene usato in diversi settori non vuol dire che sia “forte” in tutto!
Offre il meglio di sé in:
- Sviluppo web.
- “Scripting” semplice.
- Analisi dei dati.
Riprenderemo questi tre aspetti nel capitolo sul lavoro.
Intanto vediamo cosa ci consente di creare.
Sviluppo web:
Per quanto riguarda l’ambito web, Python viene utilizzato in due modi, molto diversi tra loro.
Possiamo utilizzare il linguaggio per creare veri e propri siti web. Questa attività non viene fatta utilizzando il linguaggio “puro”, ma delle “strutture” già pronte (frameworks), che aiutano lo sviluppatore a creare siti web.
Perchè sono così utili i web frameworks quando si parla di sviluppo web con Python?
Ora te lo spiego, ti faccio un esempio:
Immagina di voler creare un sito internet, se lo scrivessi in Python puro, senza utilizzare nessun tipo di framework (struttura), dovresti scrivere da solo tutte quelle funzionalità basilari che servono semplicemente a far funzionare un sito internet.
Innanzitutto dovresti creare un sistema che colleghi gli indirizzi web a dei file, ad esempio:
www.miosito.it/home sarà collegato a home.html
www.miosito.it/accedi sarà collegato a login.html
www.miosito.it/blog sarà collegato al file blog.html
Inoltre, se volessi inserire una funzione di registrazione la dovresti creare a mano, e dovresti fare lo stesso anche per inserire un sistema di pagine private (non visibili per chi non ha fatto il login ma visibili dopo che lo si effettua) o un sistema di pagamento in un e-commerce, ecc. (la lista è molto lunga e potrebbe continuare all’infinito).
La morale della favola è che non potresti dedicarti alle funzioni “particolari” del tuo sito, ma dovresti perdere tempo a riscrivere tutte quelle che sono le funzioni basilari comuni a varie tipologie di siti.
I Frameworks servono proprio a questo, ti offrono una sorta di struttura già pronta, con degli strumenti già creati da altri sviluppatori (sempre in Python), che puoi utilizzare e configurare in base alla tue esigenze.
Quindi con un framework avresti già tutte le funzioni basilari di un sito, e dovresti solo configurarle, aggiungendo quelle più particolari.
Ci sono vari frameworks scritti in Python e ovviamente non tutti hanno le stesse “funzionalità”: magari uno gestisce più cose di un altro oppure utilizza un metodo diverso per fare la stessa cosa.
Ci sono frameworks con tantissime funzioni e tantissimi strumenti a disposizione per aiutarti a fare qualsiasi cosa tu voglia!
Più strumenti offre il framework e maggiore è il codice Python che contiene, che si traduce in un maggiore “peso” in MB.
Ci sono anche framework molto leggeri, che mettono a disposizione pochi strumenti basilari. Non sempre i frameworks con mille funzioni sono la scelta migliore.
Immagina di dover fare un mini sito con una sola pagina principale molto semplice, senza nulla di elaborato. Usando un framework “pesante” andresti ad utilizzare solo l’1% di tutti i suoi strumenti quindi, in questo caso, non avrebbe senso appesantire inutilmente il sito con funzionalità che non utilizzi. In questo caso avrebbe più senso utilizzare un framework leggero che offra solo ciò che ti serve, e nulla di più.
Tra i più famosi framework web troviamo:
- Leggeri: Bottle, Webpy e Flask
- Completi: Django e TurboGears
Volevo citare anche Plone, un CMS (Content Management System) scritto proprio in Python utilizzando Zope.
Cos’è un CMS? Bella domanda!
L’idea del CMS è quella di creare un sito senza saper programmare. Ti permette di personalizzare tutto tramite un pannello amministrativo visuale, che ha sicuramente una maggiore semplicità di utilizzo rispetto alle righe di codice, per chi non vuole programmare.
Ovviamente i CMS servono a creare siti “standard”, vedi Wordpress di PHP per creare blog e simili.
Ma questo non è l’unico modo di utilizzare Python sul web.
Esiste anche un altro modo ma, ti avviso, andiamo sul tecnico quindi non spaventarti se leggerai parole particolari.
C’è Twisted per scrivere servizi di rete, il CGI (Common Gateway Interface) fino alla gestione dei socket. Con Python è possibile accedere a database attraverso varie modalità, il DB-API, l’ODBC o anche l’ORM (come SQLAlchemy).
Software (programmi)
Per la cronaca, tra i programmatori, i programmi vengono chiamati “applicazioni desktop” e si possono creare anche con Python.
Python non è un linguaggio pensato per un singolo sistema operativo, quindi possiamo scrivere programmi che vengano eseguiti su Windows, Mac e Linux.
Uno degli strumenti più usati per questo genere di sviluppo è TkInter che include al suo interno anche il sistema gestione dell’interfaccia grafica, ovvero quello che si vede quando si usa il programma. Altri strumenti da citare sono PYQt e wxPython.
Analisi dei dati
Possiamo dire che Python è il leader dei linguaggi scientifici, viene utilizzato in bioinformatica, fisica, matematica, ingegneria, GIS, scienze e più in generale nell’ambito di ricerca.
Non è un caso, c’è un motivo che ha fatto crescere la sua popolarità nell’ambito scientifico: le ottime librerie a disposizione.
Cos’è una libreria? Non l'avevo già spiegato?
Lo spiego ancora.
Prendiamo in considerazione SciPy, una libreria scientifica, che al suo interno contiene dei codici scritti da altri programmatori per risolvere determinati problemi.
Ad esempio:
Ci basta importare la libreria nel nostro codice Python per poter richiamare delle funzioni statistiche, di interpolazione, di algebra lineare, quantizzazione vettoriale (non ho idea di cosa sia) e così via.
Insomma, possiamo richiamare queste funzioni senza aver scritto noi il codice, quindi un enorme vantaggio.
Qui puoi trovare la lista delle librerie Python usate in ambito scientifico.
Machine Learning
Machine chè? Cosa vuol dire?
In italiano possiamo tradurlo letteralmente come “apprendimento automatico”, ossia creare dei “programmi” in grado di imparare da soli.
Non sono argomenti facilissimi ma Python viene utilizzato anche per questo, oltre che per tutto il resto.
Dalle cose più semplici, come saper prevedere quando finiranno le scorte in magazzino, di un particolare prodotto, alle più divertenti, come predire l’andamento del mercato azionario per diventare milionario! (Scherzo, quest’ultima non è così fattibile).
Ad ogni modo anche in questo settore ci sono ottime librerie che includono algoritmi di apprendimento automatici come Scikit-Learn, NLTK e TensorFlow.
Visione computerizzata
Lo so, in italiano il nome non rende. Computer Vision suona molto meglio e di maggiore impatto.
Se non sai di cosa si tratta è normale.
Sono qui per spiegartelo!
Hai presente quando nei film di spionaggio si vede una porta super sicura e blindata che si apre solo con il riconoscimento dell’occhio?
Ecco, quello rientra nella computer vision!
Senza viaggiare troppo con la fantasia possiamo pensare invece a Facebook e al suo sistema di riconoscimento dei volti,o a YouTube che identifica automaticamente i video “per adulti” grazie a calcoli sui colori (principalmente sulla pelle umana).
Game Development
Già, si utilizza anche per la creazione di giochi, sia a livello commerciale che amatoriale.
Non mi credi?
Ecco qualche gioco famoso che probabilmente conosci e che utilizza Python: Battle Field 2, BattleField 2142 e BattleField heroes, EVE Online e Metin 2
Gli strumenti più usati sono PyGame, PyKyra e i motori di rendering 3D.
Creazione di script
Qui il discorso è enorme!
Innanzitutto chiariamo cos’è uno “script”: è un termine molto generico che indica semplicemente una porzione di codice del programma, non per forza visuale (cioè con finestrelle e bottoni), con un suo compito preciso.
Viene utilizzato per la creazione di script “generici”, per automatizzare qualcosa di noioso e manuale.
Per esempio:
Immagina di gestire il centro assistenza clienti di un'azienda informatica, e di ricevere tantissime email da parte di clienti che non riescono ad installare un certo programma e che, puntualmente, hanno un errore tipo 505 che blocca l’installazione.
Cosa puoi fare? Rispondere manualmente a ogni singolo cliente?
Sicuramente esiste una soluzione migliore!
Con Python potresti creare uno script che controlli ogni X minuti se hai ricevuto una nuova email e, qualora tu l’abbia ricevuta, cerchi nel testo se ci sono parole come: ‘505’ o ‘errore’.
A questo punto, se dovesse trovarle, invierebbe una risposta automatica preparata in precedenza.
Questo è un ottimo esempio di automazione con uno script Python.
Inoltre viene usato anche nel web scraping.
Di cosa si tratta?
Traduciamolo in italiano: web è sempre web mentre “scraping”, tradotto, diventa qualcosa come raschiatura, quindi letteralmente “raschiare il web”.
Immagina di voler scaricare tutte le immagini che trovi su un sito internet, come puoi fare?
A mano?
Hahah certo che no!
Farlo a mano sarebbe un’operazione monotona e noiosa, quindi è meglio automatizzarla.
Potresti creare uno script Python, che gironzola in tutte le pagine del sito da te indicato, e che scarichi tutte le immagini che trova.
Questo è un esempio di web scraping, ma in realtà puoi usarlo per “raschiare” quello che vuoi, non solo immagini.