Stavo pianificando le feature per la versione 2 di SEPY, l'editor per ActionScript ideato da Alessandro Crugnola che ci stiamo accingendo a rinnovare completamente, ed ho dovuto scaricare i sorgenti di MTASC per controllare se una di queste feature fosse implementabile o meno con il sistema che stiamo studiando. Con dispiacere ho notato che il compilatore è scritto in OCaml, un linguaggio funzionale che deriva, più o meno direttamente, da ML. Mi ero già  imbattuto in sorgenti scritti con questa tipologia di programmazione, ed avevo sempre tralasciato l'argomento dato che lo ritenevo poco utile per i miei interessi. Fortunatamente per me questa volta ho deciso di recuperare un manuale di OCaml e cominciare a studiarlo.Non c'è che dire: la programmazione funzionale, per quanto logicamente e sintatticamente differente da quella a cui la maggior parte degli sviluppatori è abiutata, risulta veramente interessante. Il concetto di base è abbastanza semplice: esprimere il problema non come un insieme di istruzioni da eseguire successivamente ma come un insieme di espressioni da valutare in base al contesto. Per fare questo vengono utilizzate funzioni più o meno complesse che hanno il compito di elaborare e valutare i dati al fine di risolvere il problema proposto. Ho dato un occhiata ad un po' di problemi risolti con diversi stili di programmazione e devo dire che l'approccio funzionale risulta spesso più compatto e di facile apprendimento.Se avrà un po' di tempo spero di riuscirlo a dedicare allo studio di questo stile di programmazione, in modo da potervi tenere aggiornati ed invogliarvi all'avvicinamento verso i linguaggi funzionali.

Continua a leggere Programmazione funzionale

Categoria: PHP e Open Source

In questi giorni mi sto occupando di sviluppare l'interfaccia grafica della nuova versione di SEPY, un editor scritto in Python utilizzato per gestire codice AS.All'inizio ho optato per utilizzare nuovamente i widget nativi, dato che la libreria wxPython che utilizziamo per interfacciarci con il GUI Engine del sistema operativo risulta molto comoda in questi casi. Dopo qualche tempo però, ho voluto provare ad implementare manualmente alcuni widget, in modo da fornire loro un aspetto personalizzato ed accattivante.Mi ero preparato a dover affrontare ore di lavoro per risolvere problemi di ogni genere, ed invece ho scoperto che l'obiettivo che mi ero prefissato non era affatto difficile da raggiungere. wxPython fornisce l'oggetto wxDC che può essere utilizzato in diverse situazioni al fine di disegnare immagini, testo e forme geometriche più o meno complesse su una finestra. Combinado questo oggetto con il sistema di eventi della libreria, sviluppare i miei widget è stato quasi un gioco da ragazzi.Ho provato anche a far girare il programma su Linux e Mac OSX: ottimi risultati, omogeneità del layout e nessun errore!All'interno della libreria wxPython è possibile trovare moltissimi esempi di widget personalizzati: wxOGL, libreria di cui recentemente è stato fatto il porting completo in Python, ne è un ottimo esempio. Anche il programma pySketch, incluso nei demo di wxPython, utilizza l'oggetto wxDC e le sue estensioni per visualizzare i disegni fatti dall'utente.L'unica nota dolente è che purtroppo le cose si complicano nel momento in cui si ritiene necessario apportare delle ottimizzazioni al processo di rendering dei widget. Però questa è un'altra storia ...

Continua a leggere Widget personalizzati con wxPython

Categoria: PHP e Open Source