Articolo ezine

Da Gambas-it.org - Wikipedia.

ORIGINI DEL BASIC

Sin dalla sua comparsa nel 1963, il BASIC ha sempre trovato fortuna tra coloro che amavano la programmazione come puro hobby e che, a differenza dei programmatori professionisti, non avevano le conoscenze o i mezzi per programmare con linguaggi più potenti ma sicuramente più difficili. Con il passare del tempo la diffusione di questo linguaggio ha trovato terreno fertile sia con l'interesse da parte di Microsoft, che creò il Microsoft BASIC, sia con l'introduzione del linguaggio direttamente nel firmware di diffusissimi home computer degli anni '80 come il Commodore VIC20, il C64, il C16/Plus4, lo ZX Spectrum, o l'MSX. Il BASIC era ormai un must per chi iniziava a programmare.

Con l'avvento dei PC 8086 e 80286 (o meglio x86) le versioni del sono state migliorate fino ad arrivare al GW-BASIC, che la Microsoft aveva arricchito inserendo routine per la grafica ed il sonoro. Parlando di GW-BASIC si parla di un linguaggio interpretato: la velocità era quella che era e, dal lato commerciale, vi era il problema che tutti potevano mettere mano al listato e modificarlo. Chi lasciava libero il listato, chiamato sorgente, dava il pieno consenso all'opensource, ma è un'altra storia e ritorno subito all'argomento principale... Proprio per ragioni sia commerciale e soprattutto di velocità nacquero i compilatori quali il QuickBASIC, o QB, di Microsoft. Questo aveva la piena compatibilità con il Basic di prima con in più una velocità nella grafica per quei tempi spaventosa (parliamo sempre di DOS). Esistevano altre versioni con una IDE, come il Turbo BASIC, la cui interfaccia era già nota agli utenti Borland perché ripresa da altri prodotti della serie Turbo come il Turbo Pascal.

Mentre dall'utilizzatore medio di Microsoft Windows il BASIC veniva accolto come una manna dal cielo, nel mondo GNU/Linux, che all'epoca era ancora considerato un sistema per "smanettoni", esso non era visto di buon occhio: la sua scarsa potenza e il suo sistema privo di alcune strutture fondamentali della programmazione "seria" ne facevano un prodotto di scarso interesse ed al quale si preferiva sempre e comunque il re incontrastato della programmazione, il C. GNU/LINUX basa le sue fondamenta su questo linguaggio e lo stesso era visto come la lingua che il Pinguino avrebbe dovuto parlare.

Successivamente naque la shell grafica Windows, per la quale Microsoft realizzò una versione apposita del suo BASIC denominandolo Visual Basic. Questo ambiente si diffuse rapidamente grazie al fatto che la sua IDE permetteva la realizzazione di applicazioni con interfaccia grafica molto velocemente e semplicemente. La semplicità del linguaggio ne fece un prodotto usato anche come base per l'insegnamento della programmazione nelle scuole. Su altri sistemi come il mondo Linux si seguì tale strada proponendo prodotti quali il Real Basic, che riproponevano il sistema di costruzione visuale delle GUI che aveva fatto la fortuna del Visual Basic.

Tuttavia il mondo dell'opensource è bello perché vario e la situazione sarebbe cambiata ben presto. La riscossa del BASIC infatti nacque dalla tastiera e dalla mente di un programmatore francese che, stufo di usare Visual Basic e della sua struttura, decise di scrivere un suo ambiente di programmazione basato sul BASIC per GNU/Linux. L'idea era quella di creare non un clone del prodotto Microsoft ma un interprete del linguaggio originale arricchito di un'IDE in stile Visual BASIC per la costruzione delle interfacce grafiche. Benoit Minisini (questo il nome del programmatore) ha fatto ciò che si sarebbe dovuto fare: ha portato agli hobbysti utilizzatori di GNU/Linux lo strumento per poter lavorare e per poter arricchire con i propri codici il vasto mondo del parco software che l'open source propone


COS'E' GAMBAS?

GAMBAS è un acronimo ricorsivo che deriva da Gambas Almost Means BASic che tradotto suona come Gambas più o meno significa BASIC, e con lo stesso nome si intendono sia il linguaggio che l'interprete grazie al quale esso viene eseguito. Gambas non è la copia spudorata del vecchio BASIC e neanche il solito clone opensource di Visual Basic ma è un prodotto nuovo che asseconda la passione di chi programma per hobby ma anche di chi scrive applicativi più impegnativi.

Gambas è un linguaggio orientato agli oggetti, fortemente imperativo (il programma si compone di istruzioni e comandi che sono visti alla stregua di "ordini" dati alla macchina) e staticamente tipizzato (vale a dire che i tipi delle variabili sono dichiarati prima dell'utilizzo delle stesse senza che poi sia possibile cambiarli nel corso dell'esecuzione del programma). E' facile da imparare avendo una curva di apprendimento molto rapida e, a differenza di quanto si crede, se studiato approfonditamente è anche molto potente.

Esso è interpretato e pertanto necessita che l'interprete sia installato nel sistema su cui si vuole che il codice funzioni. A differenza dei linguaggi di programmazione compilati, quelli interpretati risultano essere leggermente più lenti ed un po' più pesanti per il sistema, tuttavia Gambas è capace di creare degli eseguibili contenenti le istruzioni in byte-code, uno speciale tipo di codice che compila, dove possibile, alcune istruzioni direttamente in linguaggio macchina in modo tale da rendere l'esecuzione del software molto più performante. L'IDE di Gambas (che per la cronaca è scritto in Gambas!) favorisce la creazione in maniera facilissima di GUI per i nostri programmi mediante un ambiente di disegno interfacce tanto semplice quanto completo, grazie al quale si potranno creare software che sfrutteranno le GTK+ o le Qt, integrandosi in questo modo sia in ambienti Gnome che KDE. Una peculiarità di Gambas è la possibilità di utilizzare un particolare componente che permette di adattare l'interfaccia dei programmi in base al desktop in cui il nostro software andrà a girare, così che ci penserà il programma stesso a utilizzare la libreria grafica più idonea. lasciando al programmatore il solo pensiero di scrivere il codice senza prestare particolare attenzione all'ambiente grafico. Di notevole interesse è anche la possibilità che il gambero blu offre di utilizzare, modificare e gestire diversi tipi di database in maniera molto semplice ed intuitiva. Le sue potenzialità comunque non finiscono qui. Con la stessa facilità sarà possibile gestire file audio e video, leggere documenti in PDF, disegnare grafici, cifrare file, utilizzare OpenGL e tanto altro.


ARCHITETTURA DI GAMBAS

Come si è detto Gambas, oltre ad essere il nome del linguaggio, identifica anche l'ambiente di sviluppo e l'interprete che ne permette il funzionamento. L'IDE (Integrated Development Environment) è scritto nello stesso linguaggio Gambas in modo da mostrarne la potenza e la praticità. Esso si compone di:

  • un interprete;
  • un compilatore;
  • un archiviatore;
  • un ambiente grafico;

Architettura Gambas.png

Nello specifico vediamo di capire brevemente e velocemente il funzionamento di ognuna di queste parti.

Compilatore

Il suo nome per i riferimenti è gbc Il suo scopo è quello di trasformare (compilare) i form, i moduli e le classi in file binari che possono interpretati dal programma. Il file binario generato può essere visto come un contenitore che raccoglie diverse informazioni per il debug, i codici trasformati in bytecode, i valori delle costanti, etc.

Archiviatore

Il suo nome per i riferimenti è gba Ha lo scopo di raccogliere i file che compongono il progetto su cui si lavora e convogliarli in un unico file eseguibile che potrà poi essere condiviso ed eseguito su macchine diverse dalla propria. Il file eseguibile generato è del tutto simile ad un archivio ma non compresso. Esso sfrutta uno script che reindirizza i propri comandi sull'interprete.

Loader Classi

Si occupa di gestire componenti del progetto in memoria. La loro mappatura verrà poi passata come parametro all'interprete.

Unità di esecuzione

Svolge il compito di analizzare riga per riga le istruzioni presenti nel codice del software che si sta scrivendo e di invocare le subroutine quando necessario.

Subroutines

È una raccolta di tutte le funzioni che Gambas implementa strettamente correlate alle funzioni così come vengono viste dall'interprete. In esse si trovano funzioni, operatori e relativi overloading.

Interfaccia componenti

Raccoglie funzioni e routine che permettono ai diversi componenti, abilitati in un progetto, di comunicare i propri servizi e i propri metodi all'interprete.

Loader Componenti

Mette in relazione i componenti condivisi in modo tale che essi possano comunicare sia con l'interfaccia che con gli altri componenti abilitati.

Componenti

Possono essere visti come librerie specializzate che condividono le proprie funzioni e possono essere inglobate nel progetto solo quando il campo in cui operano risulta essere utile al programmatore. Essi possono essere esterni o nativi. I componenti nativi sono parte integrante dell'ambiente di sviluppo e per essere tali devono attenersi ad una rigida struttura sintattica.