Oggi parliamo di Django e Python in un'intervista al nostro architect Stefano Mancini, esperto del linguaggio e del web framework.
Oggi ti parlo di due pezzi grossi di DevInterface, ossia Python e Django, rispettivamente un linguaggio di programmazione e il suo web framework più rappresentativo: insieme a Ruby e Ruby on Rails, sono i linguaggi che usiamo maggiormente per sviluppare le nostre applicazioni. Ecco perché mi piacerebbe farti conoscere questi fantastici strumenti in modo semplice, raccontandoti i vantaggi che possiamo trarre dal loro utilizzo e, soprattutto, i vantaggi che tu, come nostro cliente, puoi avere scegliendo di sviluppare la tua web app in Python piuttosto che in altri linguaggi. Siccome io non sono un programmatore ho deciso di chiedere a Stefano, il nostro co-founder, di spiegarci un po' di cosette su Python e Django visto che lui è un esperto. Marco – Ciao Stefano, prima di iniziare presentati ai nostri lettori: raccontaci cosa ti ha portato ad iniziare con la programmazione e come sei arrivato a fondare DevInterface insieme a Claudio.
Stefano – Ciao Marco. Mi chiamo Stefano Mancini, e iniziai ad accostarmi alla programmazione già dalle scuole superiori. Da lì in poi cominciò quella che tuttora è la mia più grande passione, per cui mi iscrissi all'Università degli Studi di Verona e nel 2006 divenni dottore in informatica. Dopo la laurea, lavorai tre anni presso Glaxo come consulente e sviluppatore di applicazioni in Java. I successivi due anni fui assunto da Unicredit per sviluppare un progetto software relativo alle banche, sempre in Java. Contemporaneamente ero anche freelancer, sviluppatore di applicazioni in Java, Ruby, Ruby on Rails, Python e Django.
Ad inizio 2011 io e Claudio Marai, decidemmo di fondare insieme DevInterface. Volevamo poter mettere in pratica le nostre conoscenze, la nostra creatività e tutte le metodologie di sviluppo che ci appassionavano in modo autonomo.
Marco – Stefano, puoi spiegarci cosa sono Django e Python e perché spesso i due sono nominati insieme?
Stefano – Python è un linguaggio di programmazione adatto allo sviluppo di applicazioni web; insiemi a Ruby, è il linguaggio che più utilizziamo per sviluppare le nostre app all'interno di DevInterface.
Django è invece un web framework, ossia un'architettura logica di supporto che rende più semplice il lavoro allo sviluppatore poiché permette di ottenere in pochissimo tempo il codice relativo alle attività più comuni nella progettazione di un'app. Al posto di creare ogni volta la sessione di un utente (login, logout, salvataggio dati su database) per esempio, che è una componente comune di moltissime app web, Django ci dà la possibilità di gestirla in modo molto più semplice.
Django è il più famoso web framework basato su Python.
Marco – Raccontaci un po' della loro storia.
Stefano – Python fu ideato nel 1991, prima del suo famosissimo e più utilizzato cugino PHP (1994). Il suo nome deriva dai Monthy Python, un gruppo comico attivo in Gran Bretagna negli anni '70 dei quali il suo ideatore, Guido Van Rossum, era fortemente appassionato.
Django, invece, fu distribuito per la prima volta nel 2005 dalla Django Software Foundation, un'organizzazione senza scopo di lucro; il suo scopo iniziale era gestire siti di notizie.
Marco – Come ti sei accostato a questi linguaggi, e da quanto tempo li utilizzi?
Stefano – L'università mi ha dato un solido background di Java e, come ti ho raccontato prima, anche le mie prime esperienze lavorative. La particolarità di Java è che si tratta di un linguaggio compilato, ossia necessita di un compilatore appunto, che traduca il codice che scrivo in linguaggio macchina, dopodiché viene eseguito dal processore. Già al termine dell'università, però, ero interessato ad apprendere dei linguaggi interpretati (come appunto Python, e anche Ruby), nei quali cioè agisce un applicativo chiamato interprete il quale esegue direttamente il codice sorgente. Inoltre, nel 2006, si stava sviluppando il concetto di Test Driven Developement e di sviluppo AGILE del software: ciò mi avvicinò ai web framework Django e Rails, poiché il TDD è radicato all'interno della loro filosofia. Iniziai così a studiarli da autodidatta.
Marco – Python è diffuso come linguaggio? Ci sono delle applicazioni conosciute che sono state scritte con esso?
Stefano – Python è uno dei linguaggi più diffusi a livello accademico poiché la sua filosofia è molto semplice: dev'esserci uno e un solo modo per risolvere un determinato problema (mentre con Ruby o altri linguaggi si può implementare la stessa funzione in molti modi diversi). Inoltre, quando nel 2008 Google lanciò App Engine, piattaforma di sviluppo e hosting, impose di utilizzare soltanto Python come linguaggio di programmazione per le app ospitate nei suoi server (ora se ne possono usare anche altri). Alcune delle app più conosciute sono sviluppate in Python: parliamo di Instagram, Pinterest, Mozilla Firefox tra le altre.
Marco – A DevInterface utilizziamo anche Ruby e Ruby on Rails. Quali sono le differenze tra essi e Python/Django?
Stefano – In questo caso, come spiegato prima per Python e Django, Ruby è il linguaggio di programmazione e Ruby on Rails il web framework più importante scritto in Ruby.
Ruby è un linguaggio più “elegante" e flessibile, nel senso che permette di elaborare le soluzioni più disparate per risolvere un certo problema: il programmatore talvolta, può quindi elaborare soluzioni molto creative, ma allo stesso tempo troppo intricate e dov'è difficile trovare eventuali errori. Python invece è molto più diretto, ha lo scopo di rendere tutto il più ovvio possibile al programmatore: esso, come ho detto prima, si impone di risolvere un determinato problema in un solo modo. Questo approccio sacrifica l'eleganza e la creatività di Ruby, lasciando spazio però ad una grande semplicità sia nell'apprendimento del linguaggio che nella ricerca di eventuali bug.
Inoltre, il framework Ruby on Rails si aggiorna molto frequentemente, seguendo a ruota le innovazioni tecnologiche. Per Django, invece, vengono rilasciati aggiornamenti meno spesso, aspettando che una certa tecnologia sia effettivamente consolidata prima di adattarvisi.
Come puoi capire, quindi, quest'ultimo è adatto a progetti che hanno bisogno di una forte stabilità per un periodo di tempo prolungato, mentre Rails si adatta meglio a progetti che dovranno essere sempre aggiornati rispetto alle ultime tecnologie e necessiteranno di continui aggiornamenti.
Marco – Credi che l'utilizzo di Python/Django rappresenti un fattore di vantaggio competitivo per DevInterface?
Stefano – Sicuramente l'utilizzo di queste tecnologie, insieme anche a Ruby e Rails, ci permette di essere molto competitivi sul mercato, poiché possiamo scegliere quale delle due utilizzare in base alla natura del progetto che ci viene presentato.
Riferendoci esclusivamente all'uso di Python, esso rappresenta un gran vantaggio per noi soprattutto perché ci sono poche aziende che lo utilizzano. Inoltre, essendo appunto facile da apprendere, la formazione dei nostri dipendenti dura meno e dà dei risultati tangibili in poco tempo.
Tutto ciò va a favore del cliente: la struttura di questo linguaggio, infatti, ci permette di essere più veloci a rilasciare delle parti di applicazione funzionanti, più rapidi ad accogliere le richieste dei clienti e di ottimizzare i tempi.
Marco – E questi sono i vantaggi, quali sono gli svantaggi nel suo utilizzo invece? Stefano – Come ho spiegato prima, per Django vengono rilasciati un minor numero di aggiornamenti rispetto a Rails per esempio, perciò è più lento a seguire le tecnologie: questo, però, per alcuni progetti può essere un vantaggio, poiché avranno bisogno di maggior stabilità nel tempo. Se invece il cliente avesse bisogno di aggiornare di continuo il suo prodotto, sceglieremmo Rails.
Marco – Attualmente qual'è il numero di applicazioni sviluppate in totale dalla nascita di DevInterface? E quante di esse sono state sviluppate in Django/Python?
Stefano – Finora abbiamo sviluppato 40 applicazioni in totale, dalla nascita di DevInterface. Di queste, 10 sono state sviluppate in Python/Django, mentre il restante in Ruby/Ruby on Rails.
Se questo articolo ti è stato utile sei libero di condividerlo sui social e di seguirci su Facebook e Twitter.
Se vuoi scoprire di più riguardo alle tecnologie che utilizziamo o vuoi sviluppare un'applicazione con noi, contattaci.