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.