FreeBASIC
Il FreeBASIC è un compilatore BASIC multipiattaforma libero e open source (distribuito con licenza GPL) per i sistemi Microsoft Windows, DOS (in modalità protetta), Linux e FreeBSD. Il FreeBASIC ha una sintassi molto simile a quella del QuickBASIC ma con un certo numero di caratteristiche aggiuntive. La compatibilità è buona tanto che diversi programmi scritti per il QuickBASIC possono essere compilati ed eseguiti senza nessuna modifica al codice. CaratteristicheIl FreeBASIC è un compilatore autocompilante (capace cioè di compilare il suo stesso codice sorgente) composto da circa 120.000 linee di codice (escluse le librerie). Utilizza le binutils, strumenti GNU per la manipolazione del codice oggetto, come back-end. Con il FreeBASIC è possibile sviluppare applicazioni da terminale o con interfaccia grafica (GUI). Supporta pienamente l'utilizzo delle librerie del C e parzialmente quelle del C++: grazie a ciò è possibile utilizzare e creare librerie per il C e per molti altri linguaggi. Il FreeBASIC implementa un preprocessore capace di gestire macro multilinea, compilazione condizionale ed inclusione di file. Va precisato però che quello del FreeBASIC non è un vero preprocessore dato che viene eseguito nello stesso momento in cui viene analizzato il codice: questo significa che può accedere alle informazioni dei simboli, ed eventualmente impostare anche il dialetto (cosa che riavvia però l'analisi del sorgente). Il FreeBASIC è molto veloce, con prestazioni simili a quelle di strumenti quali il GCC[1]. SintassiNonostante la sintassi sia stata mantenuta molto simile a quella del BASIC in generale e del QuickBASIC in particolare per favorire la compatibilità con questi illustri predecessori, il FreeBASIC rispecchia gli standard ed i modelli più moderni: polimorfismo, overloading degli operatori, programmazione orientata agli oggetti, namespace, ecc. Le linee di codice terminano nel FreeBASIC con il segno dei due punti ( Il FreeBASIC supporta i commenti: questi possono essere inseriti sia alla fine di una riga di codice con l'apostrofo CompatibilitàSono stati apportati dei cambiamenti durante lo sviluppo per rendere il FreeBASIC compatibile con le caratteristiche avanzate dei moderni linguaggi e conforme al GCC ma il FreeBASIC continua ad essere compatibile con la vecchia sintassi del QuickBASIC. Per ottenere questo risultato è stata introdotta l'opzione da riga di comando
Esempi di codiceCome nel QuickBASIC, per far apparire un semplice messaggio sullo schermo può essere usata una singola istruzione: print "Ciao, mondo!"
Il FreeBASIC aggiunge, però, numerose caratteristiche proprie della programmazione orientata agli oggetti come i metodi, i costruttori, l'allocazione dinamica della memoria, le proprietà e l'allocazione temporanea. /'Una classe per il movimento vettoriale'/
Type Vector
W as Integer
H as Integer
Declare Constructor (nW as Integer, nH as Integer)
End Type
Constructor Vector (nW as Integer, nH as Integer)
W = nW
H = nH
End Constructor
/'Crea una classe oggetto'/
Type Object
Private:
X as Integer
Y as Integer
Movement as Vector Pointer
Public:
/'Crea i metodi pubblici, compreso un distruttore per la pulizia automatica'/
Declare Constructor (nX as Integer, nY as Integer)
Declare Destructor ()
Declare Sub SetMotion (Motion as Vector Pointer)
Declare Sub Move ()
Declare Property GetX as Integer
End Type
/'Imposta le coordinate iniziali'/
Constructor Object (nX as Integer, nY as Integer)
X = nX
Y = nY
End Constructor
/'Pulisce la memoria allocata'/
Destructor Object ()
delete Movement
End Destructor
/'Imposta il vettore di movimento'/
Sub Object.SetMotion (Motion as Vector Pointer)
Movement = Motion
End Sub
/'Muove l'oggetto in base al suo vettore di movimento'/
Sub Object.Move ()
X += Movement->W
Y += Movement->H
End Sub
/'Un modo per leggere X, dato che è privato'/
Property Object.GetX as Integer
Return X
End Property
/'CODICE PRINCIPALE'/
/'Crea una nuova istanza dell'Oggetto con coordinate 100,100'/
Dim Player as Object = Type<Object>(100, 100)
/'Alloca dinamicamente un nuovo oggetto Vettore
muovendolo a sinistra di 10 unità e giù di 5 unità'/
Player.SetMotion(new Vector (-10, 5))
/'Fa aggiornare a Player la sua posizione'/
Player.Move()
/'Visualizza la nuova X, 90'/
Print Player.GetX
/'Siccome Player è una variabile locale, il suo distruttore è
chiamato alla fine dello scopo in maniera automatica'/
Libreria graficaIl FreeBASIC ha una libreria grafica in 2D integrata compatibile con il QuickBASIC, che permette all'utente di gestire semplici primitive grafiche (come rettangoli, linee e cerchi), il blitting e caratteristiche aggiuntive non presenti nella libreria grafica originale del QuickBASIC. Questa libreria non è dipendente dal sistema operativo per cui il codice è portabile da una piattaforma all'altra. Nonostante la libreria sia integrata, viene caricata solo se il programmatore sceglie di usarla: basta invocare il comando Sviluppi futuriIl FreeBASIC continua ad essere sviluppato. Uno degli obiettivi è quello di farne un front-end del GCC[2], che permetterebbe di usare molte caratteristiche del C++ e di altri linguaggi di programmazione orientati agli oggetti; vi è anche l'intenzione di portarlo sulla maggior parte dei moderni sistemi e di usare tecniche di ottimizzazione avanzate. Con la versione 0.17 è stata introdotta la programmazione orientata agli oggetti con l'adozione dell'uso delle classi e con l'estensione dei tipi di dato. Nel 2007 il FreeBASIC è stato inserito da Sourceforge nella lista dei candidati al premio come miglior supporto all'utente[3]. Note
Voci correlateAltri progetti
Collegamenti esterni
|