ITALIANO ENGLISH Contatti
Ho sempre sentito una forte spinta ad imparare ed a condividere ciò che apprendevo. Da un lato, questo mi ha portato a creare materiale formativo, a tenere corsi presso le aziende, le università, ed occasionalmente seminari pubblici. Dall'altro, ho sempre creduto molto nella parola scritta, nella riflessione che è possibile solo nei tempi propri della lettura e dello studio.
Per questo ho iniziato a scrivere nei primi anni 90, e non ho realmente mai smesso, seppure con lunghe pause e lasciando alcuni lavori incompiuti. Mi sono occupato sia di argomenti mainstream, come la programmazione ad oggetti quando stava per entrare nella pratica comune, sia (forse più spesso) di argomenti di nicchia, come la programmazione ad aspetti o lo studio delle forze nell'ambito del software.
Ho raccolto di seguito dei link a gran parte dei miei lavori. Alcuni sono recenti, e di fatto ancora in fieri, come Aspectroid o The Physics of Software. Altri risalgono agli anni 90. Per gli articoli ed i libri più datati, troverete un link a vecchie pagine del sito eptacom.net, che storicamente li ospitava. Ricreare tutte quelle pagine (per non dire di tutti gli articoli) secondo uno stile ed un layout più moderni era un lavoro improbo, e preferisco dedicare il tempo ad investigare nuovi percorsi. Al di là di un look datato, tuttavia, diversi vecchi lavori conservano un loro messaggio che resta valido a distanza di molti anni.

Aspectroid

Aspectroid è una esplorazione delle reali potenzialità della progettazione e della programmazione Aspect-Oriented, attraverso un insieme di Episodi - ebook autocontenuti che affrontano problemi realistici, seppure di piccola scala, come la realizzazione di una app android o modifiche importanti al core di android stesso.
Il linguaggio utilizzato è AspectJ, e la piattaforma di riferimento Android. Tuttavia, gran parte della discussione è language-independent e platform-independent, e più in generale, si tratta di ebook di software design. Gli ebook sono gratuiti ed in lingua Inglese.

vai al sito »

The Physics of Software

Si parla spesso di software "flessibile" o "estendibile". Tuttavia, una corretta definizione delle proprietà di un artefatto richiede una comprensione delle forze a cui è sottoposto. La nozione di forza manca completamente nel software, e da questo seguono definizioni arbitrarie, principi di design sovrageneralizzati, e così via.
The Physics of Software è un lavoro in divenire, una esplorazione scientifica delle forze a cui è sottoposto il software e delle reazioni dei diversi materiali (classi, funzioni, moduli) e dei diversi stili architetturali sottoposti a tali forze. In lingua Inglese.

vai al sito »

Articoli su carlopescio.com

Per circa 8 anni ho pubblicato una serie di post (in Inglese), inizialmente molto brevi, ma via via trasformandoli in veri e propri articoli, principalmente su tematiche di software design e di software engineering. Alcuni post sono diventati dei classici, come Your coding conventions are hurting you oppure Life without a controller, case 1, ma anche altri magari meno noti, come Delaying Decisions oppure Where is your Knowledge? meriterebbero probabilmente una lettura da parte di ogni software engineer.
Nel 2013 ho sospeso / chiuso il blog per concentrarmi su altri lavori, ma ovviamente tutti i post sono disponibili online.

vai al sito »

Articoli "storici" in Inglese

Tra la fine degli anni 90 ed i primi anni 2000 ho pubblicato un certo numero di articoli sulle principali riviste statunitensi ed inglesi dell'epoca (ancora si usava la carta).
Alcuni sono apparsi su riviste più "consumer" come il C/C++ User's Journal, altri su periodici accademici come IEEE Software o IEEE Computer. Alcuni sono stati tradotti in altre lingue, sia da riviste accademiche che da appassionati.
Si tratta ovviamente di lavori datati, figli di un momento storico diverso, in cui si guardava allo sviluppo del software con altri occhi. Tuttavia conservano un loro valore, ed alcuni messaggi sono per natura piuttosto longevi.

"vecchio" sito »

C++ Manuale di Stile

Ho scritto "C++ Manuale di Stile" per Edizioni Infomedia nel 1995, con l'obiettivo di raccogliere, in un testo ragionato e non dogmatico, un insieme di raccomandazioni di codifica utilizzate nel corso degli anni per standardizzare lo stile di vari progetti. Il testo è ancora in uso in molte aziende, e mi capitava di ricevere email da studenti e da professionisti interessati ad una eventuale nuova edizione o semplicemente a reperirne una copia. Nel 2010, avendone ormai acquisito i diritti, ho deciso di renderne disponibile gratuitamente una versione digitalizzata in formato DejaVu. Ho poi attivato un progetto community based, con un piccolo gruppo di volontari, per ricreare un testo editabile e poterlo aggiornare e sviluppare, mantenendone la natura gratuita. La versione Reloaded è ora disponibile gratuitamente in PDF, in Italiano.

"vecchio" sito »

UML Manuale di Stile

Il testo "UML Manuale di Stile" nasce sulla falsariga del "C++ Manuale di Stile", con gli stessi obiettivi: raccogliere un insieme di raccomandazioni sull'uso "migliore" di UML.
Il progetto ha avuto un suo breve momento di gloria, ma nel tempo molti sviluppatori si sono allontanati dalla modellazione visuale e dall'UML, in parte proprio perchè veniva adottato dalle aziende in modo errato, senza comprenderne la natura di strumento di pensiero e comunicazione. Di conseguenza, il progetto è stato sospeso, ma il testo rimane disponibile gratuitamente in PDF (in Italiano), ed al di là dell'UML in se', contiene interessanti riflessioni sul ruolo dei diagrammi nella progettazione del software e rimane una buona lettura per chi voglia pensare al software oltre la dimensione lineare del codice.

"vecchio" sito »

Articoli "storici" in Italiano

Tra la fine degli anni 90 ed i primi anni 2000 ho pubblicato un ampio numero di articoli in Italiano, sia su Computer Programming (Edizioni Infomedia), in cui per anni ho avuto una rubrica fissa su tematiche di software engineering ed object oriented technologies, sia su una newsletter gratuita (C++ Informer) che contava all'epoca qualche migliaio di appassionati.
Non credo di esagerare affermando che quegli articoli abbiano contribuito in modo sostanziale alla formazione di una intera generazione di sviluppatori Italiani. Come per le mie pubblicazioni in Inglese dell'epoca, va tuttavia detto che si tratta di lavori datati, che non riflettono necessariamente la mia visione attuale: alcuni articoli hanno oltre 20 anni, e fortunatamente non ho smesso di imparare nel frattempo :-). Tuttavia, alcune pubblicazioni sono piuttosto longeve, e pur conscio della loro età, ho scelto di lasciarle tutte disponibili online.

"vecchio" sito »

Slide di corsi e seminari pubblici

Dal 2016 ho ripreso la partecipazione a conferenze pubbliche come speaker. Ho raccolto qui gli interventi più interessanti:

Software Design and the Physics of Software
(DDD Europe 2016, Bruxelles, video)

Evolving the Android Core with Aspects
(DroidCon IT 2016, Turin, slides only)

On Growth and Software
(NewCrafts 2016, Paris, video in the link, slides here)

Extending C# with Roslyn and Code Aware Libraries
(Future Decoded 2016, Milan, slides only)

Eco-Friendly Hardware Hacking with Android
(DroidCon IT 2017, Turin, video in the link, slides here)

An overly simple, C++ idiomatic pattern language for message-based product families
(Italian C++ Conference 2017, Milan, video in the link, slides here)

(Slightly) Smarter Smart Pointerss
(C++ Day 2017, Modena, video in the link, slides here)

Sempre tra la fine anni 90 - inizio 2000 ho tenuto una serie di seminari e corsi pubblici. Sono lavori datati, su argomenti che all'epoca potevano sembrare "avanzati" (come la meta-programmazione template in C++) e che ora appaiono tutto sommato "ordinari". Al momento non sono piu' online.