Sunday, January 29, 2006

The Future of Access

Un articolo interessante sul futuro di MS Access.
Non è comunque chiaro l'interfacciamento/l'uso di ADO.NET
The Future of Access

Friday, January 27, 2006

Un ambiente di sviluppo completo

Cosa deve avere un ambiente di sviluppo per essere veramente completo?
Dal mio punto di vista gli elementi che devono essere presenti sono i seguenti:
1- IDE potente
L'IDE deve contenere un buon Forms Designer.
Oltre a fornire i controlli base dell'interfaccia (pulsanti, edit box, etc.) deve esistere un componente griglia non troppo complesso ma che consenta di personalizzare le colonne e di gestire le celle (TStringGrid di Delphi va + che bene)
L'IDE deve poter offrire meccanismi di gestione dati e di design di basi di dati (anche se questo può essere secondario).
2- Accesso ai database
Deve esistere un accesso "General porpouse" tipo ADO/ODBC per consentire di raggiungere potenzialmente ogni sorgente dati. In più non fa male avere dei meccanismi di accesso diretto qualora si ricerchi la performance
3- Tool di reporting
Un tool di reporting semplice e potente deve essere incluso nell'ambiente: quasi tutte le applicazioni devono produrre stampe e non è pensabile affrontare tutte le volte attività "banali" come la gestione dell'impaginazione, totalizzazioni etc.
4- Estendibilità
Deve essere possibile aggiungere nuovi controlli
5- No ambiente di run-time
I programmi devono essere compilati e distribuibili senza run-time

I miei ambienti di sviluppo attuali sono sostanzialmente 2.
Delphi
Praticamente soddisfa tutti i requisiti sopra anche se è un po' debole lato reporting: esistono una serie di componenti di terze parti (anche gratuiti) che hanno cercato di rimediare a questa lacuna.
Delphi è comunque ottimo per tutti gli applicativi di gestione dati o di tipo sistemistico.
MS Access
Ebbene si. MS Access praticamente ha tre grandi potenziali:
1. Consente di trattare in maniera centralizzata sorgenti dati diverse
2. Il designer è fortemente integrato con il codice: è possibile creare query parametriche, query di creazione tabelle e richiamarle dal codice senza problemi
3. Ha un tool di reporting incredibilmente potente
Con MS Access si ha la possibilità di lavorare con qualunque sorgente dati raggiungibile via ADO/ODBC. Il link di tabelle esterne consente di realizzare Queries CrossDB considerandole come tabelle proprie.
E' vero che Access è un ambiente per utenti finali facente parte di suite di produttività individuale (i vari Office), ma per sfruttarlo al meglio bisogna avere conoscenze di DBMS e di programmazione (visto che con VBA si fa praticamente di tutto).
MS Access è OTTIMO in realtà dove è necessaria una certa flessibilità ed in cui non ci sono problemi ad acquistare qualche licenza in più. Evidentemente non è l'optimum per realizzare prodotti commerciali. Può essere lo strumento migliore per far interagire sorgenti dati diverse.

Tuesday, January 24, 2006

History of the C family of languages

Articolo semiserio sulla storia dei linguaggi appartenenti alla famiglia del C.
History of the C family of languages.
In basso anche un riferimento al BASIC.

Tuesday, January 17, 2006

La vittoria degli IDE gratuiti?

In questi ultimi anni si sta affermando (anzi di fatto si è già affermata) la logica del Framework: una piattaforma tecnologia piena di oggetti pronti all'uso e sfruttabili dal programmatore.
Da un lato abbiamo la piattaforma Java, sempre più supportata da ambienti di sviluppo completi, molto ben fatti (Eclipse e Netbean) e gratuiti. Dall'altro la piattaforma .NET che con sebbene con una logica più commerciale fa nascere IDE gratuiti (SharpDevelop e gli ambienti Express di Microsoft).
Chi deve sviluppare un programma al giorno d'oggi non ha più il problema di spendere soldi per avere un IDE potente: può scegliere tra almeno 3 linguaggi (Java, C# e VB) e scaricarsi l'IDE adatto.
Chi ha fatto degli ambienti di sviluppo il suo business cosa deve fare?
Deve adottare una politica di riduzione prezzi e di penetrazione sul mercato; deve fornire più componenti per rendere lo sviluppo più produttivo, deve far si che il proprio IDE emerga soprattutto perchè più conveniente.
Delphi prima di tutto. Da unico ambiente per Win32 ad avere una libreria veramente potente (VCL) a suddito dei nuovi Framework!

Thursday, January 12, 2006

La nostra società "Strumento Oriented"

Provate a riflettere un attimo su come sono cambiate le cose da 10 anni a questa parte. Gli strumenti che utilizzavamo fino a pochi anni fa e che in una casa costituivano quasi un simulacro sono oggi stati rimpiazzati da "meraviglie tecnologiche" sempre più a buon mercato e sempre più evolute. Accade così che un Giradischi megagalattico di 10-15 anni fa, una macchina Reflex pagata qualche milione, siano oggi relegati ad un mercato di nicchia seguito perlopiù dalle vecchie generazioni.
Oggi esiste solo lo strumento, sempre più potente, sempre più economico, sempre più espandibile e di moda. Il fatto che un oggetto che oggi si paga 1000 domani si paghi 100 fa si che non ci sia più rispetto per lo strumento e per la sua tecnologia, anzi..., forse si spera che l'oggetto si rompa per poter così acquistarne uno nuovo.
Ma lo strumento a cosa serve?
Questo passa in secondo piano perchè se fino a ieri ci portavamo dietro 1, 2 cassette, 1 o 2 CD ora ci portiamo 100, 1000 canzoni. E se domani potremo portarne dietro 10000 o 100000 cosa ci faremo? Come faremo ad ascoltarle?
Oggi vogliamo il telefonino che faccia anche il caffè, la macchinetta digitale che abbia 7, 8 MPixel ma poi? Domani?
In questa corsa alla prestazione sempre più elevata, alla tecnologia sempre più spinta lo strumento diventa qualcosa che esiste non per essere usato per il suo fine, ma per essere posseduto; poi se con lo strumento si può anche telefonare Ok.

E nell'informatica?
Succede esattamente la stessa cosa. Gli strumenti (di sviluppo) sono sempre più belli, potenti e di facile utilizzo. Poi se si va a vedere nel dettaglio molte aziende non se lo sognano nemmeno di avere un PC con .NET installato per far girare un applicativo che ora hanno su Windows 3.1 e che fa quello che deve fare. Molti rimpiangono la semplicità di WordPerfect che faceva il suo dovere in DOS senza pericolo di Virus e di instabilità.

Ma allora questi strumenti di sviluppo nuovi a chi servono? E' giusto guardare avanti ma alla fine ciò che conta non è lo strumento ma ciò che ci facciamo.

Riscopriamo il vero senso delle cose e non facciamoci trascinare nel gorgo del consumismo a tutti i costi.

Monday, January 09, 2006

Installare Eclipse 2^ puntata

Ho seguito un approccio diverso per installare i Plug-in all'interno dell'IDE.
Per far ciò è necessario avere a disposizione una connessione ad internet attiva e lanciare il gestore dei plug-in (Software Update) dal menu Help.
Questo approccio garantisce una corretta installazione dei Plug-in e dei moduli dipendenti senza doverlo fare manualmente.
Ho scoperto questo approccio quando ho configurato Eclipse per gestire il design delle interfacce grafiche SWING in un PC diverso da quello su cui avevo usato l'approccio manuale.

Saturday, January 07, 2006

Captcha immagine

Per inserire o modificare un nuovo Post in questo Blog, è necessario inserire una immagine generata per controllare che chi sta inserendo sia un Umano e non un Computer. Queste immagini sono chiamate Captcha e garantiscono una protezione dallo Spam.
Ogni volta che vedo una di queste Captcha mi sorge spontanea una domanda: quale meccanismo sta alla base del riconoscimento di quanto inserito nell'immagine che noi Umani riusciamo a fare e che un programma non può fare? Tutto sommato le scritte sono quasi sempre ben leggibili (per noi Umani) ed anche un bambino che conosce l'alfabeto riesce a decifrarle. Quanta strada dovrà ancora compiere la nostra conoscenza del cervello per poter elaborare un programma di riconoscimento?

Friday, January 06, 2006

Eclipse

Dopo aver letto e visto questo articolo , mi sono deciso ed ho scaricato Eclipse. 105 MB circa per l'SDK che comprende l'IDE e consente la scrittura di codice Java (compilazione e Debug inclusi), nonchè la scrittura di Addins. In effetti lo scopo del progetto è molto ambizioso e vedendo i progetti connessi direi anche molto evoluto. In effetti pur non essendo presente (nell'SDK) una GUI per disegnare le forms Java, è stato sufficiente effettuare una ricerca per trovare il progetto VE. Scaricati e copiati i file JAR nella directory dei Plugins, ecco comparire un nuovo editor grafico per il disegno di interfaccie.
Una cosa che mi ha colpito è la qualità dell'insieme e la velocità di esecuzione (un po' lento risulta il "suggeritore" di codice che compare premendo il punto). Si capisce comunque subito che rispetto ad altri IDE per Java (JBuilder e NetBeans) questo mostra di avere qualcosa di diverso e di non essere un vestito confezionato per un solo linguaggio.
L'installazione è banale: scaricato l'SDK è sufficiente scompattarlo in c:\eclipse per avere il tutto funzionante. Le estensioni sono anche loro da scompattare nella stessa directory. Adesso proverò ad Eclipsarmi per un po'.

Thursday, January 05, 2006

Produttività negativa

Gli ultimi ambienti di sviluppo (VS 2005 e Delphi 2005/2006) sono molto curati e produttivi. Ma cosa succede se questi ambienti sono messi in mano a programmatori alle prime armi o addirittura a persone non preparate? Ebbene la presenza di Wizard, di help in linea e la grande mole di esempi, fanno si che questi "programmatori" riescano a produrre programmi che funzionano ma di cui non conoscono minimamente la struttura.
Piccole modifiche (ad un query per esempio) possono mettere in luce delle carenze su argomenti basilari. Così accade che la concatenazione di una stringa non si riesca a fare (perchè si confonde ciò che è nella stringa da ciò che è fuori dalla stessa), la dichiarazione di una variabile venga ripetuta nel codice (con errore in fase di compilazione)....

Ma allora è giusto che si dia tanta potenza e semplicità d'uso a chiunque abbia un computer? E' giusto che gli ambienti di sviluppo consentano di realizzare programmi che possono diffondersi e magari risultare dannosi? Sarebbe come progettare (e costruire) una casa sapendo utilizzare solo Autocad.

Wednesday, January 04, 2006

Report in Java

Come riportato su questi articoli (1 e 2) pubblicati sul sito di Week Italia esiste un tool di generazione report Jasper Report per il quale è stata scritta l'interfaccia grafica IReport.
Da una prima impressione il tool di disegno report è molto ben fatto.

Tuesday, January 03, 2006

L'importanza dei Blog tecnici

I blogs generalmente esprimono opinioni su temi che l'autore ha affrontato.
I blogs tecnici assumono spesso la forma di aiuti su aspetti spesso nascosti degli applicativi. Con lo spirito della condivisione della informazione è importante che chi ha qualcosa da dire lo dica anche a rischio di apparire superficiale.
Capita spesso (soprattutto per chi lavora nel mondo dell'informatica) di picchiare la testa su certi problemi anche per giorni interi.
Ebbene anche un suggerimento incompleto o non completamente esatto può far scoccare la scintilla.

Monday, January 02, 2006

Persistenza Presente e Futuro

Nello sviluppo di un nuovo applicativo si devono considerare un insieme di cose:
1. Il flusso logico
2. La rappresentazione dei dati
3. La memorizzazione dei dati
La programmazione ad oggetti semplifica molto i 3 passaggi ma richiede una forte progettualità. Inoltre all'atto della memorizzazione dei dati sorge il problema di prelevare i dati dagli oggetti, inserirli all'interno di tabelle del database e salvarli. Il processo inverso è evidentemente altrettanto complesso (leggere i dati dalle tabelle e ricreare gli oggetti in maniera opportuna).
I DBMS hanno una grande storia alle spalle e sono il modo più performante per gestire grosse moli di dati (grazie a SQL, stored procedure ed altro).
D'altro canto gli oggetti sono il modo migliore di gestire progetti di certe dimensioni nonchè per posizionare la logica applicativa in maniera corretta all'interno delle entità interessate.Le soluzioni proposte oggi per "fondere" i 2 punti di vista (di memorizzazione ed elaborativo) cercano di portare la memorizzazione dei dati nel DBMS il più vicino possibile alla rappresentazione in memoria dei dati stessi (relazione tra gli oggetti).
In particolare tra i framework (OR-Mapping):
- ECO framework per chi usa Borland Developer Studio (Delphi .NET e C#)
- Instant Object per chi usa Delphi per Win32
- Hibernate ed EJB per chi usa Java
Il principio su cui si basano è quello di frapporre uno strato SW tra il DBMS e la struttura ad oggetti, consentendo operazioni quali il recupero dell'oggetto direttamente dal DBMS ed il salvataggio di oggetti tra loro correlati.
Tra i Database (ODBMS):
- Matisse (è l'unico che ho provato)
Il principio su cui si basano è quello di esporre all'esterno Oggetti che si possono assegnare a variabili oggetto.

Un altro sistema di memorizzazione dei dati offerto dai framework ad oggetti è la persistenza degli stessi: in pratica gli oggetti possono salvarsi su files direttamente portandosi dietro tutti gli oggetti eventualmente riferiti. Questo meccanismo è il più orientato alla programmazione ed il meno orientato ai dati: lo stream di oggetti salvato su file non può essere consultato dall'esterno e non può essere aperto se non da chi ha progettato la struttura degli oggetti.

Insomma i DBMS devono rimanere perchè sono molto performanti; gli oggetti devono continuare ad esistere come metodologia di programmazione. Resta il problema di rendere la rappresentazione ad oggetti sul Database "chiara" per poter effettuare reports e query usando SQL.
Il futuro?
Microsoft sta lavorando ad un nuovo progetto LINQ Language Integrated Query per rendere uniforme il reperimento dati tra DBMS e collezioni di oggetti.
Staremo a vedere.

Sunday, January 01, 2006

BUON ANNO 2006

A tutti coloro che navigano, a tutti coloro che programmano, a tutti gli appassionati.
BUON 2006!