L’avevamo anticipato qualche giorno fa e abbiamo mantenuto la parola data. Eccoci quindi anche quest’anno a parlare della più importante conferenza legata al linguaggio Python e tecnologie affini. Per la terza edizione insieme a Cesare di Mauro abbiamo seguito tutti i tre giorni che la compongono e scelto infine di fornire un resoconto quotidiano.
Questa decisione è stata dettata da due motivi principali.
Il primo si basa essenzialmente sulla presenza importante e carismatica di Guido Van Rossum il quale tra l’altro, nel corso dell’ultima giornata, si è prestato ad una sessione specifica di domande e risposte, dimostrando una qual certa disponibilità.
Il secondo vuole in qualche modo testimoniare la crescita dell’evento e l’impossibilità di esaurire le tematiche affrontate in un solo pezzo.
Lo spazio è di per sé insufficiente a riassumere tutti i talk proposti ma almeno in questo modo ci è stato possibile analizzarli scavando e oltrepassando almeno in parte la “superficie” delle presentazioni.
Fino a mercoledì, dunque, Appunti Digitali vestirà “pitonato”, con un approfondimento che lo stesso Cesare dedicherà nella rubrica settimanale “Pensieri da Coder” sul proprio talk.
Stiamo quindi per partire. Siete pronti?
Cominciamo con qualche nota logistica utile a configurare il contesto in cui si è svolta la manifestazione.
Il teatro, ormai in pianta piuttosto stabile, è la magnifica Firenze.
Quest’anno anche la giornata di apertura si è tenuta nella location dell’hotel vicino al Duomo, scelto l’edizione scorsa.
Il Palazzo Vecchio offre un altro tipo di scenografia ma dal punto di vista logistico e pragmatico rimanere all’interno di un solo edificio ha facilitato il compito al comitato organizzativo già oltremodo oberato di lavoro.
Il Comune di Firenze ha in ogni caso patrocinato l’evento al pari dell’edizione passata, testimoniando ancora una volta l’interesse delle istituzioni pubbliche affinché questo tipo di eventi abbiano luogo e continuino a crescere.
A metà pomeriggio, sbrigate le solite formalità che inaugurano l’evento, l’appuntamento clou della giornata e forse dell’intera conferenza è stato servito.
Guido Van Rossum, creatore di Python e ospite d’eccezione della terza edizione, ha ripercorso le tappe salienti che hanno portato al rilascio della versione 3.0 (o 3000 a seconda della nomenclatura che si vuol adottare).
Una cronistoria importante per capire le motivazioni alla base di precise scelte di design del linguaggio e di evoluzione della piattaforma.
Tutto ha inizio dunque nel ’99 con l’obiettivo di fixare quei problemi che ogni sviluppatore Python ha incontrato almeno una volta sul proprio cammino e che concernono in particolare quei comportamenti che in qualche modo non ci si aspetta dal proprio codice.
Nonostante i buoni propositi di terminare il progetto nel 2001, solamente con l’approdo di Van Rossum a Google (datato 2005) le idee fin a quel momento raccolte prendono corpo e comincia un lavoro serio e sistematico per il raggiungimento degli obiettivi prefissati.
Il punto di partenza è la decisione, influenzata dalle parole di Joel Spolsky e l’esperienza fallimentare di Netscape di riutilizzare la codebase preesistente: il codice può essere non particolarmente elegante ma funziona e ripartire da zero riscrivendola completamente può non dare gli stessi risultati.
Il secondo aspetto fu la presa di coscienza che CPython così com’era aveva ormai raggiunto il capolinea (Guido ha usato l’espressione “CPython is dead” tanto per essere chiari fin da subito).
Effettivamente la ricchezza semantica e la pulizia del linguaggio fanno di Python una di quelle tecnologie che non sentono affatto il peso degli anni.
Per contro, la piattaforma e l’implementazione su cui gira il codice non sono qualitativamente allo stesso livello.
Il problema è dunque sentito da diverso tempo ma solo di recente si è assistito alla crescita rapida di progetti alternativi, i quali sono stati inevitabilmente protagonisti della PyCon 3.
Prendendo spunto dai buoni esempi di transizione, come Perl 5 e Zope 3, nel 2006 viene pianificata la strategia ufficiale di transizione, optando per il supporto contemporaneo della versione 2.x (al quale è stata abbinata anche una timeline di massima) e della 3.0.
Come illustrato da Raymond Hettinger in un intervento dell’edizione precedente, è stato effettuato inoltre un backport delle funzionalità dalla 3000 alla 2.6, in modo da rendere meno traumatico il passaggio alla nuova versione.
Il rilascio del tool2to3, che svolge la funzione di traslazione automatica del codice sorgente, è stato effettuato nella medesima ottica.
Una parte del talk è stata riservata alla spiegazione di come avvenga il processo di sviluppo del linguaggio stesso.
In primo luogo avviene praticamente tutto online attraverso l’uso delle mailing list.
Le varie fasi prendono il nome di PEP (Python Enhancement Proposals). Da non molto sono state introdotte anche le Negative PEP, ovvero quelle proposte che per tutta una serie di motivi sono state rigettate ed accantonate almeno a breve termine.
Sembra una sciocchezza ma in un contesto decisionale comunitario è possibile che alcune proposte siano presentate ciclicamente; tenendone traccia si elimina alla radice il problema.
Da pochi mesi è disponibile la final release di Python 3.0 ma è in cantiere già la versione 3.1, che avrà lo scopo di risolvere i problemi computazionali della versione attuale.
E per quanto riguarda il futuro?
Ci sono diverse discussioni in merito ad esempio all’implementazione delle classi astratte base.
Il nuovo progetto di Google denominato Unlead Swallow terrà certamente banco nei prossimi mesi anche se non si sa ancora se verrà incluso o no nel core di Python (questo perché la LLVM pone dei problemi di retro compatibilità con l’infrastruttura precedente).
Esaurito l’intervento di Guido Van Rossum è stata la volta di Alex Martelli, altra importantissima figura all’interno della community Python e “uomo Google”, ove ricopre il ruolo di Über Tech Lead.
Al di là della preparazione ed esperienza maturata, Alex ha la straordinaria capacità di spiegare concetti complessi che affondano le proprie radici nella filosofia e in branche apparentemente poco affini alla programmazione, con parole semplici e chiare ad un pubblico evidentemente eterogeneo.
I suoi talk (e le slide) sono sempre, tra l’altro, un bel compendio di citazioni extra-informatica.
Quest’anno la tematica affrontata è stata, come suggerisce il titolo piuttosto emblematico, lo “Lo Zen e l’arte delle manutenzioni dell’astrazione“.
Nel corso dei decenni, in particolare con il diffondersi del paradigma object-oriented si è assistito ad un progressivo aumentare del livello di astrazione.
Anche in campi come la progettazione embedded si tende sempre più a far uso di linguaggi e tecnologie ad alto livello; in questo modo lo sviluppatore può concentrare buona parte del proprio tempo sull’attività di problem solving e sull’algoritmica piuttosto che sui dettagli implementativi aumentando di fatto la propria produttività.
Il nodo sollevato da Martelli è che, affinché funzioni l’astrazione, i dettagli non possano essere completamente ignorati.
I due punti messi in evidenza sono:
- l’astrazione deve fare acqua
- deve farlo in modo controllato
L’esempio cardine di quanto affermato è il rapporto mappa-territorio.
Solitamente si pretende di voler riassumere un territorio attraverso l’uso della mappa ma le due non coincidono altrimenti sarebbero banalmente una la copia dell’altra.
Ed è altrettanto vero che non è possibile costruire una mappa senza conoscere nel dettaglio il territorio: questo perché una rappresentazione cartografica è una selezione filtrata in scala ridotta.
E se non si conoscono i dettagli è altresì impossibile poi decidere quali mantenere e quali scartare.
Per produrre quindi delle buone astrazioni Alex Martelli pone infine due condizioni imprescindibili:
– avere una visione a 360°: familiarità sia con gli strati superiori (quindi verso l’utente e lo strato applicativo) che inferiori (ovvero le implementazioni dell’astrazione)
– capire realmente cosa si sta facendo nel momento in cui si astrae: solo in questo modo si può realmente migliorare ed arrivare ad un buon livello di sintesi
La giornata d’apertura è stata davvero un buon viatico all’intera manifestazione ed il consiglio è quello di usufruire del materiale messo in Rete dallo staff organizzatore di PyCon.
Le slide saranno disponibili a breve e le troverete collegato alla pagina di ogni singolo talk presente nel programma. Per quanto riguarda i web cast ci sarà da aspettare un po’ di più, ma prevedibilmente il lavoro porterà via meno tempo di quello richiesto dalla precedente edizione.
O almeno questo è quello che noi tutti ci auguriamo.
Restate quindi sintonizzati, perché domani affronteremo i ricchi spunti offerti dalla seconda giornata.