Capitolo 1 - Sito Web di Emanuele Maria Latorre

Transcript

Capitolo 1 - Sito Web di Emanuele Maria Latorre
Capitolo 1
Introduzione a Gambas
Gambas è stato creato inizialmente da Benoit Minisini, un residente della periferia di Parigi.
Secondo Benoit, Gambas è un linguaggio Basic con estensioni per la programmazione ad oggetti. Il
nome Gambas è il gioco di parole “Gambas significa quasi Basic” e, secondo l’autore, Gambas1 si è
evoluto grazie all’esperienza personale dell’autore nella programmazione con il software Microsoft
Visual Basic. Piuttosto che convivere con il terribile numero di bug e idiosincrasie trovati nel
prodotto, egli decise di creare Gambas.
Gambas è licenziato sotto la GNU Public License2 ed ha assunto un ruolo indipendente proprio grazie alla sua immensa popolarità. Gambas può lavorare sulla maggior parte delle principali
piattaforme Linux e l’attuale versione stabile (al momento di questa stesura) è la Release 1.0.9.
Minisini chiarisce nettamente che Gambas non è compatibile con Visual Basic e che mai lo sarà.
La sintassi e il funzionamento interno di Gambas sono di gran lunga migliori e più facilmente
utilizzabili. Minisini ha dichiarato che egli “ha preso da Visual Basic ciò che ha trovato utile: il linguaggio Basic, l’ambiente di sviluppo e la capacità di creare rapidamente (e facilmente)
programmi con l’utilizzo d’interfacce (grafiche)3 .”
Minisini non sopportava lo scarso livello di programmazione che accomunava molti programmatori del tipo Visual Basic. Molti di loro credono che questo problema sia imputabile all’uso di
pratiche di programmazione non convenzionali imposte dagli sviluppatori; il risultato è una vasta
gamma di bug e strane idiosincrasie nel linguaggio proprietario VB. Gambas è stato sviluppato
per essere il più coerente, logico e affidabile possibile. È stato sviluppato con un approccio tale da
assicurare il miglior stile di programmazione, prendendo il meglio che il linguaggio Basic offriva
e aggiungendo la programmazione ad oggetti. Questo ha permesso a Gambas di diventare un
ambiente di programmazione per gli sviluppatori Linux, popolare, moderno e stabile.
0.1
Architettura di Gambas
Ogni programma scritto in Basic Gambas è composto da un insieme di files progetto. Ogni
file all’interno di un progetto definisce una classe. I files classe sono inizialmente compilati ed
eseguiti successivamente dall’interprete Gambas. Questo è molto simile al modo di lavorare di
Java. Gambas è costituito dai seguenti componenti:
• Un compilatore
• Un interprete
• Un archiviatore
• Un componente GUI (graphical user interface)
1 Il lettore è incoraggiato a visitare il sito http://gambas.sourceforge.net/index.html per saperne di più sul
progetto Gambas.
2 Per informazioni sulla licenza http://www.gnu.org/licenses/licenses.html#GPL.
3 Guarda l’introduzione del Wiki Web Site all’indirizzo http://gambas.sourceforge.net/index.html per
maggiori dettagli.
1
This product is [C] 2005 by John W. Rittinghouse, all rights reserved. It is released to the
Gambas User Community under an Open Content License [OCL] and may not be distributed
under any other terms or conditions without the express written consent of the author.
2
A Beginner’s Guide to Gambas
Figura 1: Architettura globale di Gambas
• Un ambiente di sviluppo
La figura 14 è un esempio dell’architettura globale di Gambas. Un progetto Gambas contiene files
classe, forms, moduli e files dati. Un progetto Gambas è memorizzato in una singola directory.
La compilazione di un progetto utilizza un metodo di compilazione incrementale che richiede
soltanto la ricompilazione della classi modificate. Ogni collegamento esterno di una classe è risolto
dinamicamente in fase di runtime. L’archiviatore Gambas trasforma la directory strutturale del
progetto in un eseguibile standalone. L’ambiente di sviluppo di Gambas è stato scritto con Gambas
a dimostrazione delle fantastiche capacità del lingauggio.
Altra caratteristica di Gambas, oltre ad includere il supporto per altre lingue, è che Gambas ha
un componente architetturale estensibile, consentendo ai programmatori di estendere il linguaggio.
Chiunque può scrivere componenti e librerie condivise ed aggiungere dinamicamente nuove classi
native all’interprete. Il componente architetturale è documentato on-line nel Wiki enciclopedia
Gambas5 . Affronteremo i componenti di Gambas più avanti in dettaglio nel corso del libro. Per
impostazione predefinita, l’interprete Gambas è un programma testuale (basato su console). Il
componente architetturale impiegato per l’interfaccia grafica utente (GUI) è parte del linguaggio.
Dato che la GUI è implementata come un componente Gambas, essa ha la capacità di essere
indipendente da qualsiasi toolkit GUI specifico. Con Gambas, è possibile scrivere un programma
e impiegare strumenti, come ad esempio GTK+6 , Qt7 , . . . in un secondo momento. L’attuale
rilascio di Gambas implementa l’interfaccia utente grafica con il toolkit Qt8 . Gli oggetti delle GUI
sono derivati direttamente dalla libreria Qt. Si raccomanda al lettore di consultare attentamente
4 Vedere
l’URL http://gambas.souceforge.net/architecture.html per il grafico originale.
c
1999-2005
dal contributo degli autori. Tutto il materiale del Wiki Gambas è di proprietà degli
autori contribuenti.
6 Per informazioni sulle GTK+ visitare http://www.gtk.org.
7 Per informazioni sulle Qt visitare http://www.trolltech.com/products/qt/.
8 Nota del traduttore: nelle versioni recenti questa limitazione è stata superata.
5 Copyright
This product is [C] 2005 by John W. Rittinghouse, all rights reserved. It is released to the
Gambas User Community under an Open Content License [OCL] and may not be distributed
under any other terms or conditions without the express written consent of the author.
A Beginner’s Guide to Gambas
3
Figura 2: Finestra di apertura di Gambas.
la documentazione9 sulle Qt per comprendere meglio gli oggetti delle GUI. Stando a quello che
dice Minisini, è previsto un componente GTK+ con interfaccia quasi identica al componente
Qt. Un’altra caratteristica di Gambas, che lo distingue da altri linguaggi di programmazione, è
la capacità di qualsiasi finestra o finestra di dialogo, di poter essere utilizzata come un oggetto.
Questa caratteristica non è direttamente supportata in altri linguaggi di programmazione. Inoltre,
i progetti Gambas, sono facilmente traducibili in molte altre lingue. Dimostreremo questa funzione
più avanti nel libro quando affronteremo l’Internazionalizzazione (i18n).
0.2
L’ambiente di programmazione di Gambas
Iniziamo con un breve tour in Gambas introducendo l’ambiente di programmazione (IDE) di
Gambas. Tutti gli esempi e il codice scritto in questo libro, sono stati sviluppati utilizzando
la versione 1.0.9 di Gambas su una macchina Linspire 5.010 . Tuttavia dovrebbe funzionare su
qualsiasi piattaforma dove sia possibile installare con successo Gambas. Per gli utenti Linspire,
è sufficiente un semplice click utilizzando il Click-N-Run a disposizione di questo prodotto. La
prima volta che si clicca sull’icona del desktop, per avviare il programma Gambas11 , si presenta
una finestra simile a quella della figura 212 . La schermata consente di creare un nuovo progetto,
aprirne uno esistente, visualizzare e selezionare i progetti recenti, consultare gli esempi, uscire dal
programma. Ai fini del nostro tour in Gambas, andiamo a selezionare la voce Nuovo progetto
per creare il nostro primo progetto Gambas. Verrà visualizzata una finestra di dialogo simile alla
figura 3.
È sufficiente selezionare il tipo di applicazione che vogliamo creare (applicazione GTK+, Qt,
console . . . ) e proseguire con un click sul tasto Next.
9 http://doc.trolltech.com/3.3/index.html.
10 Per
maggiori informazioni su Linspire visita http://www.linspire.com
del traduttore: è possibile avviare Gambas anche dal menù del proprio Window Manager. Ad esempio su
Ubuntu, Applicazioni→Programmazione→Gambas2.
12 Nota del traduttore. Ho ritenuto opportuno inserire, nell’ambito IDE, immagini provenienti da una versione
recente di Gambas.
11 Nota
This product is [C] 2005 by John W. Rittinghouse, all rights reserved. It is released to the
Gambas User Community under an Open Content License [OCL] and may not be distributed
under any other terms or conditions without the express written consent of the author.
4
A Beginner’s Guide to Gambas
Figura 3: Creazione Wizard di un progetto Gambas.
Figura 4: Finestra di dialogo della directory del progetto.
This product is [C] 2005 by John W. Rittinghouse, all rights reserved. It is released to the
Gambas User Community under an Open Content License [OCL] and may not be distributed
under any other terms or conditions without the express written consent of the author.
A Beginner’s Guide to Gambas
5
Figura 5: Finestra di dialogo per il Nome ed il Titolo del progetto.
Figura 6: Finestra di dialogo di chiusura della procedura guidata.
Inizio modifica testo originale – [Emanuele Maria Latorre], [13/10/2008]: [Ho ritenuto opportuno scrivere un testo diverso per illustrare l’IDE del recente Gambas
(versione 2.x)]
A questo punto si presenterà un’altra finestra, simile alla figura 4 dove sceglieremo la collocazione, nel nostro albero di directorty, del nostro progetto Gambas. Al termine dell’operazione di
selezione, andremo avanti con un click sul tasto Next.
È arrivato il momento di scegliere il Nome e il Titolo del progetto come mostrato nella figura
5. Ricordiamo che in Gambas un progetto è interamente contenuto in una directory. Il nome della
directory si sceglie come nome per il progetto che verrà creato sul nostro sistema. Il Titolo del
progetto sarà quello specificato nel secondo campo d’immissione della figura 5.
La figura 6 mostra la fine della procedura guidata che ci comunica l’avvenuta creazione del
nostro progetto.
Una volta che abbiamo cliccato sul pulsante OK, per terminare la procedura guidata, Gambas
si presenterà con l’ambiente di sviluppo integrato (IDE).
Fine modifica testo originale – [Emanuele Maria Latorre], [13/10/2008]
L’IDE è costituito da diversi componenti mostrati nella figura 7.
This product is [C] 2005 by John W. Rittinghouse, all rights reserved. It is released to the
Gambas User Community under an Open Content License [OCL] and may not be distributed
under any other terms or conditions without the express written consent of the author.
6
A Beginner’s Guide to Gambas
Figura 7: L’IDE di Gambas.
0.2.1
Componenti dell’IDE Gambas
L’Explorer Project è la finestra principale di Gambas. Esso mostra una struttura ad albero contenente le diverse tipologie di files che si trovano all’interno del nostro progetto (files classe, forms,
moduli e altri tipi di files come ad esempio dati e immagini o files icona) consentendoci di eseguire
la maggior parte delle operazioni richieste da un progetto Gambas, come ad esempio l’apertura
e il salvataggio dei progetti, la creazione di eseguibili, avviare l’esecuzione del nostro programma
o farne il debug, visualizzare o nascondere le varie finestre di dialogo di Gambas, ecc . . . Nalla
struttura ad albero dell’Explorer Project, si possono distinguere:
• Classi
• Form
• Moduli
• Dati
Con esso è possibile visualizzare i files delle Classi che abbiamo creato per il nostro progetto.
Le classi sono fondamentalmente modelli che possono essere impiegati per fare oggetti riutilizzabili
anche al di fuori della fase di runtime, insieme al codice per definire le proprietà, metodi e gestori
di eventi per ogni oggetto creato.
Visualizzare i vari Forms creati per il nostro progetto. In pratica sono le finestre con le quali
interagisce l’utente.
Visualizzare i Moduli che abbiamo scritto per il nostro progetto. I Moduli sono semplicemente
insiemi di subroutine e funzioni da utilizzare in qualsiasi punto del nostro programma. A differenza
delle classi, non è possibile creare oggetti, tranne quelli in fase di runtime che tra l’altro non hanno
gestori di eventi.
This product is [C] 2005 by John W. Rittinghouse, all rights reserved. It is released to the
Gambas User Community under an Open Content License [OCL] and may not be distributed
under any other terms or conditions without the express written consent of the author.
7
A Beginner’s Guide to Gambas
Figura 8: Menù File.
Figura 9: Menù Project.
Visualizza i Dati di altri files del vostro progetto. Questi possono includere qualsiasi altro tipo
di files utilizzati per costruire il nostro progetto, come ad esempio files di grafica, icone, bitmaps,
testo o files HTML e anche files multimediali. In basso si trova la barra di stato utilizzata da
Gambas per comunicare in tempo reale le operazioni eseguite.
Quando si sviluppa un progetto in Gambas, è prassi comune cominciare con un form principale.
Il form principale è il luogo dove si avvia il programma in fase d’inizializzazione, che di solito è la
prima cosa che l’utente vede quando esegue (o lancia) l’applicazione che ha creato. Questo è anche
il form dove aggiungere oggetti e specificare quali sono le azioni da intraprendere quando l’utente
interagisce con essi. L’interazione tra l’utente e la GUI è chiamato evento. Gli oggetti si trovano
nella finestra della barra degli strumenti. È possibile modificare l’aspetto e il funzionamento degli
oggetti impostando le proprietà per ogni oggetto. Le proprietà possono essere viste nella finestra
delle proprietà.
Adesso, diamo un’occhiata ai menù e ai pulsanti situati nella parte superiore del Project Explorer. I menù (figure dalla 8 alla 12) controllano tutti i principali compiti gestionali di Gambas.
Il menu File vi permette di aprire un progetto, salvarlo, crearne uno nuovo, aprire i progetti di
esempio, chiudere Gambas. Dal menù Project è possibile varificare la compilazione del programma. Potete anche creare un programma eseguibile, un programma con l’installatore o un pacchetto
d’installazione. Questo menù offre anche la possibilità di tradurre il vostro programma in un’altra
lingua e d’impostare le proprietà del vostro progetto.
Inizio modifica testo originale – [Emanuele Maria Latorre], [13/10/2008]: [Ho ritenuto opportuno scrivere un testo diverso per illustrare l’IDE del recente Gambas
(versione 2.x)]
This product is [C] 2005 by John W. Rittinghouse, all rights reserved. It is released to the
Gambas User Community under an Open Content License [OCL] and may not be distributed
under any other terms or conditions without the express written consent of the author.
8
A Beginner’s Guide to Gambas
Figura 10: Menù Debug.
Figura 11: Menù View.
Figura 12: Menù Tool.
This product is [C] 2005 by John W. Rittinghouse, all rights reserved. It is released to the
Gambas User Community under an Open Content License [OCL] and may not be distributed
under any other terms or conditions without the express written consent of the author.
A Beginner’s Guide to Gambas
9
Figura 13: Menù e Strumenti del Project Manager.
Dal menù Debug è possibile eseguire il debug per esaminare passo-passo il comportamento del
nostro programma.
Fine modifica testo originale – [Emanuele Maria Latorre], [13/10/2008]
Il menù View ci permette di visualizzare/nascondere gli elementi dell’IDE.
Inizio modifica testo originale – [Emanuele Maria Latorre], [13/10/2008]: [Ho ritenuto opportuno scrivere un testo diverso per illustrare l’IDE del recente Gambas
(versione 2.x)]
Infine dal menù View è possibile la ricerca e la sostituzione del codice sorgente, avviare l’utility
Database Manager, visualizzare in modalità browser la directory del nostro progetto, aggiornare
tutti i forms e cambiare le impostazioni relative all’editor del codice sorgente.
Fine modifica testo originale – [Emanuele Maria Latorre], [13/10/2008]
I pulsanti della barra degli strumenti (figura 13) forniscono, a portata di click, l’accesso alle voci
più comuni dei menù. Posizionando il cursore del nostro mouse su uno dei pulsanti strumento,
si visualizza un ToolTip che ci suggerisce quale azione viene eseguita dal particolare pulsante
selezionato.
Se facciamo doppio clic, su un form del nostro progetto, editiamo il codice sorgente relativo al
form selezionato.
Con un click destro su un form o su uno dei suoi oggetti si visualizza un menù pop-up contenente tutte le operazioni che è possibile eseguire sugli oggetti, modificare le sue proprietà o eliminarlo.
L’oggetto correntemente selezionato è indicato dai quadratini, chiamati maniglie, disposti intorno
all’oggetto. Facendo click su una maniglia (tenendo premuto il pulsante del mouse) e trascinando
contemporaneamente il mouse, è possibile ridimensionare l’oggetto, mentre per spostarlo è sufficiente trascinare l’oggetto facendo click in un punto interno alle maniglie (tenendo premuto il
pulsante del mouse). Con un doppio click su un oggetto, si apre la finestra dell’editor del codice,
che visualizza il codice sorgente associato agli eventi degli oggetti già esistenti o gli eventi di default
se non è stato aggiunto nessun oggetto al form.
L’Editor Code di Gambas consente di scrivere il codice per gestire gli eventi sugli oggetti inseriti
nei nostri forms. Nella finestra della casella degli strumenti, c’è lo strumento selezione; è l’unico
elemento che non è in realtà un oggetto. Lo strumento di selezione consente semplicemente di
selezionare un oggetto. Si utilizza questo puntatore per selezionare gli oggetti, per posizionarli e
per eseguire operazioni di ridimensionamento della forma.
Dal menu File del Project Explorer, scegliere l’opzione Quit e salvare il progetto. Quando
riapriremo il progetto, tutto il nostro lavoro sarà salvato. Nel prossimi capitoli, inizieremo ad
esaminare cosa è necessario comprendere della programmazione in Gambas. Torneremo su questo
progetto, sviluppando un programma che utilizzi le GUI, solo dopo aver imparato un po’ di più
dell’ambiente Gambas, dei concetti basilari per utilizzarlo e delle informazioni fondamentali su tipi
di dati e sulle variabili. Tutto questo viene affrontato nei prossimi due capitoli che costituiscono
una introduzione alla programmazione in Gambas.
This product is [C] 2005 by John W. Rittinghouse, all rights reserved. It is released to the
Gambas User Community under an Open Content License [OCL] and may not be distributed
under any other terms or conditions without the express written consent of the author.
10
A Beginner’s Guide to Gambas
Figura 14: Logo di Gambas 1
Figura 15: Logo di Gambas 2
This product is [C] 2005 by John W. Rittinghouse, all rights reserved. It is released to the
Gambas User Community under an Open Content License [OCL] and may not be distributed
under any other terms or conditions without the express written consent of the author.