I pericoli della programmazione con i mixin/1

I mixin sono una tecnica di programmazione ad oggetti che permette di
iniettare pacchetti di metodi in una classe madre, direttamente o
indirettamente tramite l’ereditarietà multipla. I pro e i contro 
della tecnica sono molto dibattuti ed io personalmente nel giro di qualche anno sono
passato da acceso sostenitore a fiero oppositore. Data
la premessa è chiaro che non sarò imparziale e che non dovete prendere
quanto dirò per oro colato. La mia opinione è che l’ereditarietà
multipla, i mixin e i trait (per lo meno quando i trait sono intesi
come sinonimo dei mixin come spesso avviene) sono esempi di tecniche
molto cool sulla carta che si rivelano nella pratica un disastro,
soprattutto quando ci si trova a dover mantenere del codice che ne fa
un uso liberale. Ci possono essere dei casi particolari in cui il loro
uso è accettabile, ma la maggior parte delle volte esistono
alternative più valide che sono però meno note e meno utilizzate. Lo
scopo principale di questa serie è proprio quello di illustrare le
alternative, almeno nel contesto della programmazione in Python.

[Read more…]

Gestione dei record in Python/3

Nei primi due articoli di questa serie abbiamo discusso come leggere e
come processare record omogenei. In questo terzo ed ultimo articolo ci
dedicheremo invece allo studio dei record non-omogenei, ovverossia
record in cui campi diversi vanno processati in
maniera diversa. Lo scopo ultimo è quello di disegnare un framework
per convertire record in testo in formato CSV, HTML, XML o altro. En
passant
, discuteremo varie tecniche di design e pattern tipici della
programmazione ad oggetti.

patchwork1.jpg

Fig 1: design a oggetti

[Read more…]

Python migliora il supporto al multiprocessing

Con le seguenti parole Guido Van Rossum ha approvato e benedetto l’ingresso di pyprocessing all’interno della libreria standard di Python già nelle prossime release:

+1 from me as well, and I support the rename to multiprocessing (“processing” is just too much of a common word).
This will provide a good short-term answer to those who still clamor for dropping the GIL.

[Read more…]

Gestione dei record in Python/2

Nella scorsa puntata ho descritto i pregi e le virtù delle
namedtuple, un concetto che è stato introdotto nella libreria standard
di Python con la versione 2.6 (attualmente in alpha) ma che può essere
utilizzato proficuamente fin da
subito, semplicemente scaricando la ricetta di Raymond
Hettinger
. In questa puntata farò uso delle namedtuple per gestire
i record provenienti da un database a darò qualche consiglio su
come processare e come visualizzare tali record.

[Read more…]

Gestione dei record in Python/1

Qualunque programmatore prima o poi si sarà trovato a dover gestire dei record: interagendo con un database, leggendo un file CSV, programmando in un qualunque linguaggio (ricordate i record del Pascal e le struct del C?) e in mille altre occasioni. Questo dunque potrebbe sembrare un argomento elementarissimo, ben conosciuto e assolutamente noioso: tuttavia, si tratta di un soggetto su cui c’è ancora molto da dire. In questo miniserie tratterò della gestione dei record in Python, ma la miniserie è pensata per discutere, più che i dettagli implementativi, tecniche generali per risolvere il problema di leggere, scrivere e processare sequenze di record in maniera pulita. La miniserie si articola in tre parti: la prima, quella che state leggendo, introduce la materia e illustra una possibile soluzione al problema di leggere un file CSV con un numero qualunque di campi non noto a priori; la seconda parte si occupa del problema di leggere dei record da un database; la terza ed ultima parte, infine, si occupa del problema di generare dati in forma tabellare e di renderizzarli in vari formati.

[Read more…]

Pubblicato il programma del Pycon Due, la Conferenza Italiana su Python

E’ stato pubblicato il Programma del Pycon, la
seconda conferenza italiana dedicata al linguaggio di programmazione
Python, che si terrà a Firenze il 9, 10 e 11 Maggio 2008.

Dopo il largo successo di pubblico e critica ottenuto da Pycon Uno nel
2007, l’Associazione di Promozione Sociale “Python Italia” organizza
quest’anno un evento ancora più ambizioso. Sono attesi infatti più di
300 tra professionisti, studenti e ricercatori, per una tre giorni
intensa di appuntamenti e interventi imperdibili.

[Read more…]

I cubettàti

Marco Beri non si è accontentato di sviluppare una preoccupante dipendenza dal progetto Eulero: quando non è impegnato a risolvere quesiti matematici, si diletta a porne. Non molto tempo fa ha proposto ai lettori di Stacktrace il problema del cubetto, un puzzle tridimensionale formato da sei pezzi con i quali è possibile formare un cubo, riuscendo ad incastrare tutti i pezzi tra loro.

Quante soluzioni esistono? Esistono soluzioni con tutte le facce esposte? Per quanto tempo ancora i familiari sopporteranno Marco, prima di cacciarlo di casa? Ad alcuna di queste domande possiamo finalmente dare una risposta!

[Read more…]

Programmare multi processi facilmente con Twisted Matrix /1

L’aumento del numero di core nei processori moderni e la
necessità di sfruttare il più possibile il parallelismo tra
diverse macchine, rende necessario trovare metodi efficaci per
ottenere il massimo dei vantaggi con il minimo dello sforzo e
della complessità. Storicamente si è sempre ricorso alla
programmazione multi-thread shared-state ma questa è
soggetta a numerosi problemi come ad
esempio la gestione dei lock e dei semafori, la scalabilità sia
nella stessa macchina che orizzontalmente su piu` macchine,
l’imprevedibilità delle ottimizzazioni attuate dai compilatori, la
complessità di unit-testing e debugging, i modelli di coerenza e
consistenza della cache dei processori e della RAM e altri.

[Read more…]

Progetto Eulero: Problema 14

Quattordicesimo problema di Eulero. Nel precedente articolo sul progetto Eulero abbiamo saltato dal terzo al quindicesimo problema. L’unico modo per non perdere l’abitudine alla nostra imprescindibile aperiodicità era quello di tornare indietro e infatti ci occuperemo questa volta del problema numero 14.

Leggiamo assieme l’enunciato:

La seguente sequenza iterativa è definita nell’insieme dei numeri interi:

n → n/2 (se n è pari)

n → 3n + 1 (se n è dispari)

Usando la precedente regola e partendo da 13, possiamo calcolare la seguente sequenza:

13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

Si può vedere che questa sequenza (che comincia con 13 e finisce con 1) contiene 10 termini. Sebbene non è ancora stato provato (congettura di Collatz), si ritiene che, qualunque sia il numero di partenza, si finisca sempre a 1.

Partendo da quale numero, al di sotto di un milione, si ottiene la catena più lunga?

[Read more…]

PyCon Italia Due, Call For Papers

Come lo scorso anno Python Italia APS sta preparando l’edizione italiana della popolare conferenza americana dedicata al linguaggio Python. Il primo passo della preparazione è il Call For Papers che da inizio al periodo in cui i candidati speaker hanno la possibilità di proporre un argomento di loro interesse come talk per la conferenza.

La conferenza di quest’anno si svolgerà ancora a Firenze dal 9 all’11 Maggio ma questa volta possiamo notare alcune sorprese inaspettate, leggendo direttamente dal sito della conferenza:

La conferenza si tiene a Firenze nelle giornate di Venerdì 9, Sabato 10 e Domenica 11 Maggio. L’evento di apertura si terrà a Palazzo Vecchio nel pomeriggio di Venerdì, durante il quale terrà un keynote Richard Stallman. Sabato e Domenica, al Viva Hotel Laurus, nei pressi del Duomo, si svolgeranno 3 track parallele di conferenze.

Non sono numerose le conferenze italiane, su strumenti Open Source, analoghe a PyCon o al PHPDay. Restano, a maggior ragione, il momento perfetto per farsi conoscere dal mondo delle aziende, che parteciperanno sia in veste di sponsor che in veste di partecipanti. Purtroppo però non sempre mi è capitato di trovare uno spirito intraprendente o un pochino coraggioso tra i giovani sviluppatori italiani, spaventati forse dalla paura di parlare in pubblico e di poter commettere errori. Questo è un vero peccato perché, se c’è una cosa che ho imparato negli ultimi 5 anni, è che proprio durante le conferenze si riescono a trovare i contratti migliori e le conoscenze più utili nell’ambito IT. Non fatevi quindi sfuggire l’occasione di farvi osservare e valutare dai professionisti italiani e provate a proporre le vostre idee innovative.