Siamo dunque arrivati all’appuntamento finale con il resoconto della PyCon Italia 2009.
Ma prima di snocciolare numeri, riportare quel che ci è piaciuto di più e cosa ci ha convinto di meno di questa conferenza e tracciare infine un giudizio complessivo, passiamo ad esaminare i talk seguiti in prima persona.
Come il sabato, la domenica, pur essendo il terzo ed ultimo giorno di questa manifestazione (anche se potrebbero esserci dei cambiamenti in futuro), non lesina interventi, coprendo l’intero arco della giornata dalle 9 di mattina alle 7 di sera.
Nella primissima fascia il programma offriva una delle sessioni forse più “filosofiche” e meno tecniche tra tutte quelle approvate successivamente al Call for Papers.
Antonio Cangiano, italiano emigrato in Canada per lavorare alle dipendenze di IBM, ha presentato infatti “Diventare ricchi con Python“.
Si è trattato in buona sostanza di un’ampia digressione (considerato che ha coperto la durata massima prevista per un solo talk ovvero 90 minuti) sui modelli di business vincenti nelle realtà IT e che però prescindono a dire il vero dall’uso di Python.
E’ vero, Google, vedasi lo stesso caso Youtube, utilizza pesantemente Python come linguaggio sia per esporre i servizi sia per la costruzione dell’infrastruttura stessa, ma si possono citare casi analoghi come ad esempio Facebook dove le tecnologie sono diverse (il cui frontend è stato infatti realizzato con PHP).
A mio modo di vedere questi sono gli esempi limite che però lasciano il tempo che trovano.
Il successo su scala globale di queste applicazioni dipende da una favorevole congiuntura astrale di numerosi fattori dove probabilmente non è il mix di uno o più strumenti a essere vincenti, ma il time-to-market, l’idea, l’interfaccia user-friendly e via discorrendo.
Questo perché, come ha affermato con puntualità Lawrence Oluyede, per ogni tipologia di sito o di applicazione web possono venirti in mente decine di alter ego altrettanto ben realizzati se non addirittura migliori, eppure i prodotti che conquistano i favori di milioni di persone si contano sulle dita di una mano.
Da diverso tempo si discute dell’efficacia del cosiddetto “Enterprise 2.0“.
Anche qui su Appunti Digitali, diverse volte ci siamo spesi con un approccio critico verso tutta quest’ondata di entusiasmo e di hype sulle nuove tecnologie user-centered in un’ottica aziendale.
Sicuramente migliorano il rapporto produttore-consumatore/utente ma qual’è il rapporto di costi/benefici e che incremento possono apportare giro d’affari complessivo?
Non è certo un mistero che Facebook, pur avendo raggiunto valori stimati in cifre astronomiche sul mercato azionario, sia alla ricerca di un sistema di revenue affidabile, così come Youtube che al momento grava ancora, economicamente parlando, sulle spalle della grande G.
Tolta Google, che detiene (non senza occhiate interessate da parte dell’antitrust) pressoché il dominio sul mondo pubblicitario, appare chiaro come l’advertising nudo e crudo non sia sufficiente a far prosperare i conti delle realtà online ma ci vogliano iniziative collaterali.
Ovviamente in 90 minuti è impossibile esaurire queste tematiche ma tutto sommato uno sguardo a quel che succede in particolar modo oltreoceano offre sempre spunti interessanti di discussione.
Dopo il solito e per fortuna immancabile coffee break di metà mattinata, Van Rossum si è concesso ad una sessione ad hoc di Q&A (o per dirla all’italiana di “domande e risposte”).
I quesiti posti hanno spaziato un po’ su tutto il panorama Python presente e futuro. Adottando più uno stile manageriale che da sviluppatore sulle domande più scottanti ha in realtà sorvolato cercando di girare intorno alle problematiche esposte.
Ma considerato che Guido non capitava su suolo italiano da svariati lustri sono stati pur sempre tre quarti d’ora da ricordare.
La giornata è quindi proseguita come copione, sulla falsariga delle passate edizioni.
Prima si è tenuta l’estrazione dei premi gentilmente offerti dagli sponsor (libri O’Reilly, licenze software fino ad arrivare ad un biglietto comprensivo di alloggio per l’edizione 2009 di EuroPython che si terrà a Birmingham), in seguito la sessione di recruitment dove sviluppatori e società hanno la possibilità di conoscersi, confrontarsi e stabilire nuove collaborazioni.
Contemporaneamente, nella saletta in basso hanno avuto luogo i lightning talk, ovvero quelle sessioni piuttosto brevi e con argomenti mirati, magari scartati in precedenza quando si è trattato di stilare il programma definitivo.
Una volta rifocillati con il lauto banchetto previsto per il pranzo, è stata la volta di scegliere come proseguire il percorso pomeridiano ed abbiamo puntato decisi alla linea “verde” cioè “Scoprire Python”.
Il primo a parlare è stato quel Frederik Lundh al quale abbiamo accennato ieri nel resoconto del day 2.
Il titolo On improving the air-speed velocity of a Python suggeriva ancora una volta che il tema su cui lo speaker avrebbe incentrato tutto l’impianto del proprio talk riguardava essenzialmente l’implementazione di Python e la sua architettura.
Dopo aver elencato qualche numero impressionante sulla mole di dati gestita da Youtube (15 ore di video caricate ogni minuto) si è concentrato sul presentare gli aspetti sul quale il team di Google di cui fa parte sta lavorando.
L’obiettivo è quello di sviluppare quindi un CPython più veloce, ottimizzandolo e migliorando la parte di compilazione parallela ed il meccanismo a cui è stato fatto riferimento è il Global Interpreter Lock.
Il progetto Unladen Swallow, rilasciato a marzo, ha portato ad un miglioramento delle prestazioni del 35% (misurati su applicazioni reali quali i Django Template) di cui 25 basati sul codice e 10 su tweak applicati al compilatore.
Nello specifico si è giunti a:
- migliore generazione del bytecode prodotto
- Nuova versione di cPickle utilizzata spesso nelle applicazioni che fanno uso di sistemi di caching come memcache
- ottimizzazione dell’uso di funzioni built-in
Nel secondo trimestre 2009 si arriverà ad una seconda fase dove protagonista sarà la transizione alla LLVM ed un nuovo incremento prestazionale stimato in una forbice dal 10 al 25% a seconda dei contesti d’esecuzione; saranno tenuti in considerazione altri aspetti ritenuti importanti come la type inference e le annotazioni (che tanto piacciono a Lundh)
Successivamente ci si concentrerà, in un terzo momento, sull'”iterazione” dove gli obiettivi saranno:
- Python inlining (con la possibilità di injection di codice C)
- Call-Site caching
- portare le regular expression all’interno dell’IR LLVM
Le annotazioni ed implicazioni tecniche sono davvero molte e mi rendo conto non esauribili in questa disanima.
Il consiglio intanto è quello di sfogliare la documentazione presente nel sito ufficiale, in attesa di slide e webcast e magari di qualche post ad hoc presentati all’interno delle abituali rubriche di AD.
Subito dopo l’ultimo (ahinoi) coffee break sapevamo che ci sarebbero toccati 45 minuti di puro intrattenimento.
Raymond Hettinger, oltre a sfoggiare competenze ed esperienza davvero di prim’ordine (altrimenti non sarebbe uno sviluppatore di vecchia data del core Python) condensandole con proprietà di linguaggio e di chiarezza espositiva davvero non comuni, è un vero e proprio istrione sul palco.
Con una sorta di sessione interattiva durante la quale veniva richiesto il continuo feedback del pubblico sulle nozioni spiegate, Raymond si è districato attraverso la struttura semantica dei descrittori, definita una delle chiavi fondamentali per capire la logica di funzionamento di Python.
Questo perché entrano in gioco le cosiddette slot, la parola chiave Super (pesantemente rivista con la release 3.0), le proprietà, funzion, i metodi di classe e statici.
Prima di poter disporre delle slide il consiglio, per sciogliere eventuali dubbi, è quello di far uso della reference ufficiale.
L’ultima fascia della giornata proponeva talk davvero tutti interessanti ma, per i problemi di non ubiquità già esposti ieri, abbiamo privilegiato “Integrating and using Iron Python in a XNA Game“.
Con i progressi raggiunti dal progetto del porting sotto l’egida dell’infrastruttura .NET, DLR e gli aggiornamenti al framework ci saremmo aspettati qualche intervento in più ma ci siamo accontentati del “menu”, anche perché l’argomento presentato non è certamente dei più comuni seppur, per appassionati di videogiochi quali siamo noi, estremamente affascinante.
Negli ultimi anni c’è stata un’ascesa di linguaggi come Python e Lua per alcune fasi di sviluppo di un videogioco.
Solitamente l’utilizzo che se ne fa è in un’ottica di scripting.
Qui si è voluto porre invece l’accento anche in un’ottica di prototyping e unit testing, dove le performance contano abbastanza relativamente ed allo stesso tempo beneficiano dell’uso di Python stesso rispetto a linguaggi complessi come il C++.
XNA è un progetto Microsoft che mira alla diffusione e nascita di prodotti homebrew e la possibilità di studio in ambito accademico, dove ad esempio l’intelligenza artificiale e relativo studio algoritmico sono parti piuttosto corpose dell’attività di ricerca che si fa abitualmente nell’Informatica.
Solitamente i kit di sviluppo hanno costi non accessibili a tutti (una sola copia per PS3 costa sui 10 mila dollari), in questo caso si tratta di pagare un abbonamento annuale di circa 200 Euro, seguendo la filosofia Live che i possessori di Xbox conoscono bene.
Da una parte abbiamo il Game Studio, il quale si appoggia a Visual Studio ed offre un ambiente di sviluppo ad hoc, dall’altra c’è il framework che mette a disposizione un vero e proprio game engine (la cui release annunciata in dirittura d’arrivo è la 3.1) .
IronPython è una delle implementazioni di Python, all’interno delle quali è possibile importare classi .NET e, vantaggio non da poco, servirsi degli oggetti prodotti all’interno dell’infrastruttura CLI/CLR.
Fondamentalmente, quando un gioco è in esecuzione, si verificano tre fasi:
- la fase di installazione: tutti gli asset che lo compongono vengono caricati
- il main loop: finché la condizione è vera, ad ogni framerate si aggiorna la grafica e la logica del gioco stesso
- caricamento di due classi, una che comprende il comportamento degli attori (personaggi, mezzi che compiono azioni), un’altra per la camera che li deve visualizzare
Quel che risulta molto interessante da questa interazione di tecnologie è che all’interno della console Python è possibile scrivere delle classi on the fly per testare i vari livelli di esecuzione facendo ripartire di volta in volta il gioco stesso ma senza doverlo ricompilare; inoltre è possibile redirezionare l’output prodotto direttamente al gioco stesso.
Con un linguaggio tutto sommato semplice qua’è Python la fase di prototipizzazione si sposta quindi dal coder a chi ha il compito di creare il videogioco.
Con XNA, inoltre, è possibile programmare contemporaneamente per Xbox e PC senza dover riscrivere una gran parte del codice.
Contemporaneamente, si è tenuto un altro talk estremamente interessante ovvero “Come far interagire Python con Flex ed AIR!“.
Partiamo dall’inizio. Con Adobe Flex si identifica un insieme di tecnologie orientate alla creazione di applicazioni web RIA (Rich Internet Application), tipicamente con un’ottica enterprise.
L’ambiente di lavoro è FlexBuilder, progettato sul famoso Eclipse; poiché non è possibile però utilizzare questo approccio per creare anche applicazioni che funzionino in locale ed offline, è stato rilasciato il progetto AIR (Adobe Integrated Runtime), un ambiente di sviluppo multipiattaforma per applicazioni internet che usano Flash,Flex,AJAX, (X)HTML e che possono essere utilizzate come applicazioni desktop.
Grazie all’utilizzo del python è possibile sviluppare degli applicativi client- server che comunicano ad esempio con un database.
Lo speaker ha mostrato un esempio piuttosto semplice di chat, la cui parte client girava all’interno del browser mentre Python, utilizzando un sistema di socket affinché dialogassero, si occupava di gestire la parte server.
Colgo l’occasione per ringraziare il collega di Cesare che ha fornito le sue impressioni relative a questo intervento.
Finito il resoconto vero e proprio, cerchiamo di trarre le fila del discorso e dare qualche giudizio sull’evento.
Anche quest’anno, giunta alla terza edizione, PyCon Italia ha visto un incremento non trascurabile di partecipanti, sfiorando quota 400 persone.
Si tratta di un numero assolutamente rimarchevole in considerazione del fatto che l’evento europeo (EuroPython appunto) oscilla solitamente tra i 400 ed i 500 partecipanti.
La “traccia d’esecuzione” è ormai piuttosto assodata ed il lavoro svolto, soprattutto seguendo le indicazioni dei feedback ricevuti, è assolutamente lodevole.
Pur con qualche imprevisto che fa assolutamente parte del gioco (come la videocamera che ha esaurito lo spazio a disposizione per riprendere un talk), la manifestazione si è svolta senza grossi problemi.
Il livello degli speaker e delle sessioni è stato qualitativamente alto ed il fatto che il BDFL Guido Van Rossum abbia deciso di far visita in Italia è una dimostrazione dei risultati raggiunti dall’edizione italiana e dall’interesse suscitato anche in un’ottica internazionale.
Dove si può migliorare? Probabilmente la traccia interattiva è quella dove è possibile ancora lavorare per incontrare le esigenze di sviluppatori e non.
Quest’anno c’è stata una preponderanza di framework che sì sono importanti e spesso (a torto probabilmente) ritenuti una sorta di silver bullet per sviluppare i propri prodotti software; ma forse, seguendo la scia ed esempi di altri eventi collaterali, sarebbe interessante offrire sessioni interattive dove sperimentare, con l’aiuto del pubblico, l’uso ad esempio di metodologie agili come il pair programming.
Sperando vi siate divertiti a leggere le gesta dei vostri infaticabili (?) articolisti preferiti (?!), non resta che darci appuntamento all’anno prossimo con la PyCon Italia 2010!