|
L'ambiente
di sviluppo della Inprise (ex Borland) è giunto alla quarta versione.
L'azienda produttrice ha cambiato nome per evidenziare il fatto che ora
si rivolge soprattutto al mercato enterprise, tuttavia accanto al nome
di Delphi è stato mantenuto il marchio che lo ha reso famoso: Borland.
Anche la v4 di Delphi è disponibile
in diversi allestimenti, Standard, Professional e Client/Server per meglio
venire incontro alle esigenze di diversi tipi di utenti; a questi si aggiungerà
il Delphi Enterprise, spesso citato nei manuali ma ancora assente nel sito
del produttore.
Noi abbiamo provato il Delphi Professional esaminandone i seguenti aspetti:
Il
CD
Il CD nel quale viene distribuito
il prodotto contiene 547 MB di dati. La funzione autorun ci presenta
una finestra dalla quale è possibile avviare l'installazione di
3 diversi software: l'ambiente di sviluppo, l'InstallShield Express 2.02
(ovvero il generatore di installazioni, qui in versione custom,
cioè ridotta, per Delphi 4) e il Local InterBase 5.1.1
(una versione ridotta del server SQL leggero ed efficiente dell'Imprise).
Tuttavia il contenuto del CD non si esaurisce qui: al suo interno troviamo
anche i manuali originali in inglese in formato PDF (è inclusa la
v3.01 di Acrobat reader) e una FAQ in formato html, il Delphi 1.02
per creare applicazioni a 16 bit (le versioni successive alla 1.02
producono solo codice a 32 bit), un demo di C++ Builder (semplici
filmati AVI con alcuni documenti Word) e i browser di Netscape e Microsoft;
c'è inoltre la solita cartella RunImage contenente tutto il Delphi 4
in forma decompressa, utile per una installazione "di fortuna"
basata sull'uso del CD-ROM.
L'ambiente
di sviluppo
L'IDE è stato oggetto di interessanti
modifiche. Innanzi tutto ci sono il nuovo Code Explorer e le funzioni Module
Navigation e Code Browsing che permettono di spostarsi all'interno del
codice con una facilità senza precedenti. Il Code Explorer è
un treeview che appare accanto alla classica finestra per l'editing del
sorgente (vedi figura);
al suo interno troviamo un elenco gerarchico di tutti gli identificatori
globali presenti in una unit: le classi con i loro membri, le interfacce,
le variabili e le costanti, le procedure e le unit utilizzate dal modulo
corrente. Per ogni gruppo di elementi c'è un nodo dell'albero con
numerosi sottonodi. Il Code Explorer è utile in diversi modi: fornisce
una visione d'insieme del contenuto di una unit, permette di spostarsi
con la semplicità di un doppio click nel punto in cui è definito
qualsiasi identificatore e permette di editare al suo interno per aggiungere
o rinominare un elemento.
La funzione Module Navigation consente di saltare dal prototipo di un metodo
situato nella sezione interface di un modulo al suo codice nella sezione
implementation (e viceversa) mediante semplici combinazioni di tasti (Ctrl-Shift-Up
oppure Ctrl-Shift-Down). Nella stessa scia si inserisce il Code Browser:
quando il mouse si trova su un identificatore basta premere il tasto Ctrl
e quel nome si trasforma in un link sul quale si può cliccare per
saltare alla sua dichiarazione; inoltre nell'angolo superiore destro dell'editor
troviamo i tasti Back e Forward tipici di un browser per Internet. Insomma
è stato fatto tutto il possibile per far sì che il programmatore
non debba mai più scorrere il sorgente avanti e indietro con i tasti
cursore o la scroll bar alla disperata ricerca del codice di una routine:
ora si può saltare a colpo sicuro fino alla riga cercata.
Sempre
per quanto riguarda l'editing, c'è da dire che le le funzioni di
Code Insight sono state ampliate con l'aggiunta di Tooltip Symbol Insight
e di Class Completion. Ogni volta che il mouse si ferma su un identificatore
nel'editor o su un componente in una form, Tooltip Symbol Insight visualizza
un piccolo hint contenente la dichiarazione di quell'elemento (vedi figura).
Per quanto riguarda Class Completion, la sua utilità può
essere facilmente spiegata con un esempio. Scrivendo il codice seguente
nella sezione interface
type TMyButton = class(TButton)
public
property Size: Integer;
end;
e premendo semplicemente Ctrl-Shift-C,
Delphi lo completa in questo modo:
type TMyButton = class(TButton)
private
FSize: Integer;
procedure SetSize(const Value: Integer);
public
property Size: Integer read FSize write SetSize;
end;
ed inoltre aggiunge questo codice
nella sezione implementation:
{ TMyButton }
procedure TMyButton.SetSize(const Value: Integer);
begin
FSize := Value;
end;
Ma le novità non sono finite:
nell'elenco dobbiamo ancora annotare il fatto che tutte le finestre sono
ora dockable e quindi l'ambiente può essere personalizzato
con una libertà prima impensabile; inoltre il project manager adesso
può gestire un intero gruppo di progetti correlati (ad esempio un
eseguibile e le sue DLL).
Un discorso a parte lo merita il
debugger integrato poiché le novità sono veramente numerose.
E' stato aggiunto il supporto per il debugging multi-processo mediante
un potenziamento delle finestre Module View e Thread View che sono diventate
multi-process aware.
E' ora disponibile una finestra Inspector che permette di analizzare e
modificare lo stato di qualsiasi oggetto; abbiamo inoltre una finestra
Event Log che fornisce un resoconto di tutti gli eventi notevoli (messaggi,
caricamento e scaricamento di moduli, eccezioni e breakpoint); una finestra
CPU e una per l'ispezione delle variabili locali. La finestra Module View
è ora divisa in tre parti ed elenca, oltre ai nomi dei moduli, anche
i file sorgenti per il modulo selezionato e i nomi delle routine esportate.
I breakpoint di Delphi 4 sono ancora più flessibili di quanto
non fossero in Delphi 3 perché non sono più vincolati
all'esecuzione di una specifica riga di codice: si può avere un'interruzione
anche quando viene eseguita un'istruzione ad un indirizzo di memoria assegnato
(Address Breakpoint), quando viene modificata un'area di memoria (Data
Breakpoint) o infine quando viene caricato un modulo (Module Load Breakpoint).
Le
novità del linguaggio
Una novità di notevole interesse
è costituita dagli array dinamici che, in quanto tali, possono essere
ridimensionati a piacere e possono anche essere di forma non rettangolare.
Pensate, ad esempio, ad una matrice con una colonna molto più lunga
delle altre e avrete subito un'idea del risparmio di memoria a costo zero.
Prima di utilizzare gli array dinamici raccomando di leggere attentamente
l'help o i manuali (o anche soltanto questo articolo!) perché la
loro implementazione è un po' insidiosa e può indurre in
errore. Questi array, infatti, sono implementati mediante "reference
counting": la variabile array è un puntatore ad un'area di
memoria assegnata dinamicamente alla quale è associato un contatore
che tiene traccia del numero di array allocati in quella stessa area di
memoria. Se, ad esempio, A e B sono array dinamici, l'istruzione B := A
fa sì che B punti allo stesso blocco di memoria di A (non viene
effettuata alcuna copia) e che il contatore venga incrementato di 1.
Se ora modifichiamo un elemento di B, questa modifica si riflette anche
su A (e viceversa). Anche le già note stringhe dinamiche utilizzano
il reference counting ma, per evitare il problema appena descritto, lo
associano al copy-on-write (la stringa da modificare viene copiata automaticamente
in un'altra area di memoria e il vecchio contatore viene decrementato).
Dunque non bisogna pensare che gli array dinamici siano implementati allo
stesso modo delle stringhe dinamiche: lo sono solo per metà.
Altre due novità sono l'overloading
dei metodi e i parametri di default, caratteristiche da sempre presenti
nel C++ e in Java ma finora estranee al Pascal. L'overloading, in particolare,
consiste nella possibilità di dichiarare più metodi con lo
stesso nome a condizione che l'elenco dei parametri sia diverso.
Un'altra innovazione, più
elementare ma non meno interessante, è l'introduzione di nuovi tipi
di dato. Finalmente fa la sua comparsa il tipo LongWord (un intero senza
segno a 32 bit) atteso da anni per sanare quella curiosa asimmetria tipica
del Pascal in cui gli interi a 32 bit erano disponibili soltanto in versione
signed mentre quelli a 8 e a 16 bit esistevano anche in versione unsigned.
Insieme al tipo LongWord compaiono gli interi a 64 bit, ma solo in versione
signed: sì, un'altra asimmetria che speriamo venga sanata in tempi
più brevi.
Infine un'ultima novità, più
sofisticata, tanto che non è opportuno approfondirla in questa sede,
è la possibilità di delegare l'implementazione di un'interfaccia
ad una proprietà di una classe.
Le
novità della VCL
La Visual Component Library di Delphi 4
(la grossa gerarchia di classi su cui si basa la programmazione in Delphi)
è stata ulteriormente arricchita.
Prima di tutto bisogna citare il nuovo componente ActionList la cui importanza
risulta evidente se si considera che è stato inserito nel foglio
Standard della component palette ed è la prima volta che questo
foglio viene ampliato. Una ActionList permette di centralizzare elegantemente
la gestione di controlli che hanno funzioni equivalenti, ad esempio un
bottone di una tool bar e la voce di menu corrispondente. Una azione è
semplicemente un comando impartito dall'utente agendo su un controllo (ad
esempio un click su un bottone). I controlli della VCL hanno ora una nuova
proprietà chiamata Action che permette di collegarli ad una delle
azioni di una ActionList; stabilito questo collegamento diventa possibile,
ad esempio, disattivare in un colpo solo tutti i controlli corrispondenti
a quell'azione.
Le classi TControl e TWinControl
sono state modificate per implementare il docking, inoltre TControl ha
due nuove proprietà molto utili: Anchors e Constrains che intervengono
quando una form viene ridimensionata.
E' stato aggiunto il supporto per l'Intellimouse e per i monitor multipli
di Windows 98, ci sono il PageScroller e le Flat Scrollbars di Windows 98
e il componenente Control Bar simile alle toolbar di Office.
La serie di componenti per Internet è stata totalmente rinnovata
e al posto degli OCX troviamo ora componenti nativi Delphi.
Altre
novità
Sul versante DBMS la maggior parte
delle innovazioni è confinata nella versione Client/Server che implementa
il supporto per MIDAS, CORBA, MTS, Oracle 8 ed Informix 9: si
tratta certamente delle novità più importanti per quei professionisti
che sviluppano applicazioni di grosso calibro. Nella versione Professional,
invece, le novità di rilievo sono il supporto per Access 97
e la possibilità di creare, rinominare e cancellare tabelle direttamente
dal form designer.
Per quanto riguarda l'internazionalizzazione
delle applicazioni, fa la sua comparsa un utile Resource DLL Wizard
che esamina un progetto e genera tutti i file necessari per la creazione
di una DLL contenente quelle risorse che devono essere modificate in base
alla lingua del programma. Le form di questa DLL possono poi essere editate
(e quindi tradotte) nell'IDE anche senza il codice sorgente mentre per
le risorse di tipo stringa è stato creato un nuovo editor apposito.
Peccato che questa stessa versatilità non sia riscontrabile nella
Custom Edition dell'InstallShield Express che supporta solo l'inglese e
quindi per avere le altre lingue, o anche solo l'italiano, bisogna rimettere
mano al portafogli.
Tra i miglioramenti riguardanti ActiveX
citiamo il supporto per il formato TypeLib 2 e un wizard per la creazione
di oggetti COM, inoltre l'Automation wizard fornisce il supporto opzionale
per la gestione degli eventi.
I
manuali e l'help
La copia del prodotto giunta in redazione
era priva di manuali cartacei e quindi abbiamo concentrato la nostra attenzione
su quelli in lingua inglese contenuti nel CD. Si tratta di 3 volumi intitolati
Quick Start (72 pagine), Object Pascal Language Guide (236 pagine), e Developer's
Guide (968 pagine); oltre a questi ci sono i manuali di InterBase (5 volumi
per un totale di 1464 pagine).
Il primo dei 3 manuali sul Delphi descrive l'uso e la personalizzazione
dell'IDE, fornisce una panoramica delle potenzialità di Delphi e
guida il lettore passo dopo passo nella scrittura del suo primo programma
(un semplice database browser già visto nella v3 di Delphi ed ora
arricchito con alcuni nuovi componenti della VCL).
Il secondo volume è diviso in due parti. La prima parte, Basic Language
Description, fornisce informazioni per lo più già note anche
per chi non ha mai usato Delphi ma conosce il buon vecchio Borland Pascal:
rispetto a quest'ultimo ci sono alcuni nuovi tipi di dato e qualche reserved
word in più. La seconda parte, Special Topics, parla dell'uso di
DLL, package e interfacce, di gestione della memoria e uso di codice assembler
inline.
Il terzo volume è il più ricco e interessante. E' diviso
in 5 parti, dai titoli autoesplicativi:
- Programming with Delphi
- Developing database applications
- Writing distributed applications
- Creating custom components
- Developing COM-based applications
Da notare che alcuni capitoli fanno
riferimento a caratteristiche disponibili solo nella versione Client/Server
di Delphi, giusto per far venire l'acquolina in bocca a chi ha comprato
una versione più economica del prodotto.
La qualità dei manuali è ottima: la lettura procede piacevole,
veloce e senza intoppi; non resta che sperare che la traduzione italiana
sia all'altezza dell'edizione inglese. Si nota la mancanza di un volume
dedicato alla VCL, ormai documentata solo nell'help.
L'help on line è molto più
ricco dei manuali, e infatti questi ultimi rimandano in varie occasioni
all'help per gli approfondimenti. E' ormai lontano il tempo in cui gli
help si limitavano a dire "Ulteriori informazioni a pagina X del manuale"!
Ad installazione ultimata troviamo nel menu Avvio, sotto la voce Programmi\Borland Delphi 4\Help,
ben 22 link che fanno riferimento a file HLP. Il contenuto di alcuni
di questi file ricalca fedelmente quello dei manuali ma sono presenti quegli
approfondimenti che lì mancavano. Troviamo inoltre gli help file
dell'SDK di Microsoft, indispensabili per i programmatori più esperti
perché contengono informazioni sulle API Win32, MAPI, OLE, OpenGL
ed altro ancora.
Indirizzi
utili
Sui siti Inprise in Italia e in America
sono presenti numerose pagine dedicate a Delphi; qui di seguito vi propongo
i link a quelle che mi sembrano più importanti.
| Scheda
del prodotto |
Nome:
Produttore:
Referente italiano:
Requisiti principali:
Prezzi (IVA escl.): |
Delphi 4 Professional
Inprise Corporation
I.S.S.
16 MB RAM, 160 MB HD
Primo acquisto:
Upgrade:
Educational x1:
Educational x10:
Educational >30: |
1.460.000
559.000
559.000
1.460.000
clicca qui |
|
|