FreeBASIC

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
FreeBASIC
software
Logo
Logo
Schermata di esempio
Schermata di esempio
GenereCompilatore
SviluppatoreAndre Victored altri
Data prima versione2004
Ultima versione1.09.0 (21/05/2022)
Sistema operativoDOS
Microsoft Windows
Linux
FreeBSD
LinguaggioBASIC
LicenzaGNU GPL
(licenza libera)
Sito webwww.freebasic.net/

IlFreeBASICè uncompilatoreBASICmultipiattaformaliberoeopen source(distribuito conlicenza GPL) per i sistemiMicrosoft Windows,DOS(inmodalità protetta),LinuxeFreeBSD.

Il FreeBASIC ha una sintassi molto simile a quella delQuickBASICma 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.

Caratteristiche

[modifica|modifica wikitesto]

Il FreeBASIC è un compilatore autocompilante (capace cioè di compilare il suo stesso codice sorgente) composto da circa 120.000 linee dicodice(escluse le librerie). Utilizza lebinutils,strumentiGNUper la manipolazione delcodice oggetto,comeback-end.Con il FreeBASIC è possibile sviluppare applicazioni da terminale o con interfaccia grafica (GUI). Supporta pienamente l'utilizzo delle librerie delCe parzialmente quelle delC++:grazie a ciò è possibile utilizzare e creare librerie per il C e per molti altri linguaggi.

Il FreeBASIC implementa unpreprocessorecapace di gestiremacromultilinea, 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 ilGCC[1].

Nonostante la sintassi sia stata mantenuta molto simile a quella delBASICin generale e delQuickBASICin particolare per favorire la compatibilità con questi illustri predecessori, il FreeBASIC rispecchia gli standard ed i modelli più moderni:polimorfismo,overloadingdegli operatori,programmazione orientata agli oggetti,namespace,ecc.

Le linee di codice terminano nel FreeBASIC con il segno dei due punti (:) oppure con i caratteri di fine linea: grazie a ciò non è necessario specificare, come nel C, un particolare carattere di fine linea. Il FreeBASIC accetta anche istruzioni multiple scritte su un'unica linea: basta separarle con il segno dei due punti.

Il FreeBASIC supporta icommenti:questi possono essere inseriti sia alla fine di una riga di codice con l'apostrofo'sia come blocchi di più righe partendo con/'e terminando con'/.

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 dariga di comando-langda usare per impostare il livello di compatibilità del FreeBASIC:

  • -lang fb:avviandolo con il paramentro "fb", il FreeBASIC offre al programmatore tutte le nuove funzionalità mentre tutte le caratteristiche proprie del QuickBASIC vengono disattivate per mantenere la compatibilità con i paradigmi di programmazione più moderni;
  • -lang fblite:il paramentro "fblite" permette di accedere alle nuove funzionalità del FreeBASIC che non riguardano la programmazione ad oggetti e, contemporaneamente, permette di redigere del codice adottando delle regole di stile e sintassi proprie delle vecchie versioni del BASIC quali le variabili implicite, i suffissi, ilGOSUB/RETURN,la numerazione delle linee, ecc.;
  • -lang qb:utilizzando il parametro "qb" si imposta il FreeBASIC verso la massima compatibilità con il vecchio codice QuickBASIC. Questa modalità è utile quando il codice QuickBASIC non gira in modalità "fblite".

Esempi di codice

[modifica|modifica wikitesto]

Come 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 imetodi,icostruttori,l'allocazione dinamica della memoria,leproprietàe l'allocazione temporanea.

/'Una classe per il movimento vettoriale'/
TypeVector
WasInteger
HasInteger
DeclareConstructor(nWasInteger,nHasInteger)
EndType

ConstructorVector(nWasInteger,nHasInteger)
W=nW
H=nH
EndConstructor

/'Crea una classe oggetto'/
TypeObject
Private:
XasInteger
YasInteger
MovementasVectorPointer
Public:
/'Crea i metodi pubblici, compreso un distruttore per la pulizia automatica'/
DeclareConstructor(nXasInteger,nYasInteger)
DeclareDestructor()
DeclareSubSetMotion(MotionasVectorPointer)
DeclareSubMove()
DeclarePropertyGetXasInteger
EndType

/'Imposta le coordinate iniziali'/
ConstructorObject(nXasInteger,nYasInteger)
X=nX
Y=nY
EndConstructor

/'Pulisce la memoria allocata'/
DestructorObject()
deleteMovement
EndDestructor

/'Imposta il vettore di movimento'/
SubObject.SetMotion(MotionasVectorPointer)
Movement=Motion
EndSub

/'Muove l'oggetto in base al suo vettore di movimento'/
SubObject.Move()
X+=Movement->W
Y+=Movement->H
EndSub

/'Un modo per leggere X, dato che è privato'/
PropertyObject.GetXasInteger
ReturnX
EndProperty

/'CODICE PRINCIPALE'/

/'Crea una nuova istanza dell'Oggetto con coordinate 100,100'/
DimPlayerasObject=Type<Object>(100,100)

/'Alloca dinamicamente un nuovo oggetto Vettore
muovendoloasinistradi10unitàegiùdi5unità'/
Player.SetMotion(newVector(-10,5))

/'Fa aggiornare a Player la sua posizione'/
Player.Move()

/'Visualizza la nuova X, 90'/
PrintPlayer.GetX

/'Siccome Player è una variabile locale, il suo distruttore è
chiamatoallafinedelloscopoinmanieraautomatica'/

Libreria grafica

[modifica|modifica wikitesto]

Il FreeBASIC ha unalibreria graficain 2D integrata compatibile con il QuickBASIC, che permette all'utente di gestire semplici primitive grafiche (come rettangoli, linee e cerchi), ilblittinge 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 comandoscreen.Il FreeBASIC permette inoltre di utilizzare librerie grafiche quali l'OpenGLo di crearefinestrecon leAPIdel proprio sistema per usare l'accelerazione hardware senza interferire con la libreria grafica del linguaggio.

Sviluppi futuri

[modifica|modifica wikitesto]

Il FreeBASIC continua ad essere sviluppato. Uno degli obiettivi è quello di farne unfront-enddel GCC[2],che permetterebbe di usare molte caratteristiche delC++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.

Nel2007il FreeBASIC è stato inserito daSourceforgenella lista dei candidati al premio come miglior supporto all'utente[3].

  1. ^The Computer Language Benchmarks Game FreeBASIC vs.gcc,sushootout.alioth.debian.org.URL consultato il 6 aprile 2010(archiviato dall'url originaleil 21 giugno 2011).
  2. ^FreeBASIC Todo List on Sourceforge[collegamento interrotto],sufbc.svn.sourceforge.net.URL consultato il 31 luglio 2007.
  3. ^SourceForge.net: 2007 Community Choice Awards,susourceforge.net.URL consultato il 31 dicembre 2008(archiviato dall'url originaleil 4 luglio 2009).

Collegamenti esterni

[modifica|modifica wikitesto]
 Portale Software libero:accedi alle voci di Wikipedia che trattano di software libero