lunedì 28 aprile 2008

Inheritance in SQL


While having a brief look at PostgreSQL, I saw a very interesting feature: table inheritance.
(Please refer to the documentation for a more precise description.)

This brilliant feature can lead to a very easy and efficient object to relational mapping!

venerdì 25 aprile 2008

Open source e modelli evolutivi

Ubik ha sollevato una questione molto interessante: ihho l'open source ha la tendenza a disperdere le energie piuttosto che concentrarle in una direzione vincente, nella misura in cui lo sforzo richiesto per la comprensione del sorgente di un prodotto non banale (per non banale intendo "grande") è a volte così elevato da scoraggiarne l'acquisizione, la customizzazione, e spesso succede che piuttosto di riprendere un'artefatto già esistente ne viene creato uno ex-novo; naturalmente questo porta ad un grande dispendio di energie intellettuali ed a una non-competitività dei prodotti open nei confronti dei prodotti closed.
Sono d'accordo, più o meno.
In passato ho letto alcuni cose interessanti inerenti la teoria dell'informazione e di come essa possa eventualmente essere estesa fino a far parte della grand unification theory; in particolare, in una visione olistica, di come l'universo abbia una ben delineata ed intrinseca tendenza evolutiva, che viene attuata attraverso una precisa strategia. Per semplificare, possiamo anche prendere in considerazione la "congettura evolutiva di Darwin" meglio nota come teoria dell'evoluzione: attraverso il randomico rimescolamento genetico, le specie evolvono per meglio adattarsi all'ambiente. O meglio, vi è una naturale tendenza delle mutazioni migliori a sopravvivere a discapito di quelle peggiori, e la conseguenza a lungo termine di questo cammino selettivo è l'evoluzione - ovvero l'orientamento delle strutture complesse verso un più efficiente ed economico sfruttamento delle risorse. Nonostante questo sia un processo tendenzialmente più dispendioso se relazionato alla soluzione idealmente ottima, credo che sia comunque il più efficiente tra i processi di evoluzione a lungo termine realmente attuabili, un pò come lo può essere un algoritmo dinamico se confrontato con un algoritmo greedy.
Questo approccio all'evoluzione delle strutture complesse può essere in qualche modo accostato allo sviluppo di software open source; se è infatti vero che la dispersione delle energie intellettuali porta un singolo progetto open più o meno lontano dalla più efficiente delle realizzazioni possibili, è altresì vero che a lungo termine, e per quanto riguarda l'intero insieme dei progetti, ci sia un'importante, ed innegabile evoluzione; inoltre, esattamente come l'evoluzione biologica si appoggia sulla diversificazione, anche lo sviluppo di software open promuove lo sviluppo di più di una soluzione a fronte di una specifica problematica: anche se questo può sembrare uno sperpero di energia consente comunque una maggior probabilità di sopravvivenza ad almeno una delle soluzioni (peraltro tipicamente vi è un travaso di tecnologia tra più progetti - in natura esiste un effetto assimilabile, il rimescolamento genetico - che consente alla singola sniplet di codice di persistere anche dopo la "chiusura" di uno dei progetti in cui viene utilizzata).
Considerando i fattori ambientali, culturali, e insomma le varie condizioni al contorno che condizionano lo sviluppo di software, imho il modello di sviluppo open - nonostante le sue dispersioni di energia intellettuale - risulta comunque il modello evolutivo che a lungo termine consente la "migliore evoluzione possibile".
Fattori ambientali e culturali? Si, mi riferisco in particolare alle capacità delle macchine, alle features dei sistemi operativi, alle tendenze tecnologiche e all'integrazione con l'ambiente operativo e con altri applicativi: tutti questi fattori spingono in direzioni precise i software, senza che necessariamente la direzione intrapresa sia quella che porta alla massima efficienza di un particolare applicativo; ad esempio credo che il vecchio M$ Office 2K sia una suite per ufficio veloce ed efficiente che sostanzialmente fa tutto quello che deve fare, mentre invece la nuova versione 2007 è enorme, lenta, e non da nessun vantaggio particolare (questo è un esempio di evoluzione verso uno stato peggiore), mentre la controparte Openoffice sta diventando un ottimo software: dove una volta era lento e pensante in fatto di richieste hardware, oggi è equilibrata e brillante, oltre a supportare standard aperti (e questo è invece un esempio di evoluzione verso uno stato migliore).
Concludendo, anche se di primo acchito può non essere vero per un sottoinsieme di progetti o in un ristretto frame di tempo, credo che l'open source offra un modello evolutivo efficiente in un'ottica a lungo termine.

lunedì 7 aprile 2008

Powua - Il supercomputer su Internet



E' con grande piacere che vedo realizzata la mia idea di virtual super computer!
Powua è una grid di qualche centinaio di processori accessibili tramite un'interfaccia remota (Java). Molto, molto interessante:
www.powua.com

giovedì 3 aprile 2008

Aforisma

Vi è una sottile bi-implicazione tra la definizione di un problema e la sua soluzione.