# QB64

QB64, nato originariamente come QB32, è un compilatore BASIC per Microsoft Windows, Linux e macOS, progettato per essere retrocompatibile con il QBASIC e il QuickBASIC. Esso traduce essenzialmente i programmi dal QB64 al C++ e poi li compila.
Il QB64 implementa molte istruzioni del QBasic e può compilare quasi tutti i programmi QBasic, compresi i popolari Gorillas e Nibbles; inoltre, permette l'emulazione di parecchie funzionalità DOS.
Il QB64 è stato progettato per presentare al programmatore un IDE del tutto simile a quello del QBasic originale. La particolarità di QB64 è che, in più, include i tipi di dati a 64 bit, prevede una migliore resa del sonoro e ha un migliore supporto per la grafica.
È software libero, ed è autocompilante.

## Storia

Il QB64 è stato compilato per la prima volta in QuickBASIC 4.5. Dopo uno periodo di sviluppo piuttosto lungo, Galleon, lo sviluppatore, non soddisfatto delle limitazioni di memoria imposte dal QuickBasic, decise di compilarlo con il Basic PDS 7.1 della Microsoft, che risolse questi problemi per un po' di tempo. Dalla versione 0.63, QB64 fu in grado di auto-compilarsi, cosicché le limitazioni della memoria convenzionale non furono più un problema.

## Sintassi

La sintassi del QB64 è stata scelta per essere completamente retrocompatibile con il QuickBasic (ma anche precedenti versioni di Basic, anche se tale non è lo scopo principale del progetto). I numeri di linea possono essere specificati, ma non sono obbligatori. Le istruzioni possono finire con un invio oppure con i ":" due punti.
Esempio di programma Ciao, mondo:

## Novità rispetto al QuickBasic

Le nuove istruzioni messe a disposizione dal QB64 iniziano tutte con un carattere di sottolineatura (trattino basso o underscore), in modo da evitare eventuali conflitti con vecchi programmi che possono usare tali istruzioni come funzioni personalizzate definite dall'utente (infatti nel QuickBasic originale non è previsto che il nome di una parola chiave, di una variabile o di una funzione contenga un trattino basso). QB64 implementa molte nuove funzioni rispetto al QuickBasic. Per esempio, possono essere usati nuovi tipi di variabili, come _BIT, _BYTE, _INTEGER64 e _FLOAT, anche di tipo unsigned (senza segno). I nuovi tipi di variabili hanno un suffisso, proprio come è tipico dei tipi di dati del QBasic. QB64 include anche una libreria audio, che permette di riprodurre i più comuni tipi di formati audio, come WAV, MP3, Ogg Vorbis. Il supporto per la grafica è maggiore: sono disponibili modalità schermo con risoluzione maggiore di 640x480 pixel, e con profondità di colore fino a 32-bit (RGB più il canale alfa). Le librerie che usa QB64 permettono di caricare agevolmente immagini in formato BMP, JPEG, GIF, ecc... Dal momento che QB64 conserva la filosofia del BASIC, e cioè di essere un linguaggio semplice, non è necessario che il programmatore specifichi le librerie che devono essere utilizzate, in quanto il compilatore le include automaticamente tutte (in futuro questo aspetto verrà migliorato, e il compilatore deciderà di includere solamente quelle strettamente necessarie). Il programmatore ha comunque la possibilità di includere una libreria personale usando il metacomando $INCLUDE, come nel QuickBasic originale (anche se tale funzionalità non era prevista nelle prime versioni e negli interpreti).

## Librerie

QB64 è in grado di supportare molte delle librerie di Windows e del linguaggio C.
Da segnalare l'utility vWATCH che consente di eseguire passo-passo un programma fatto con QB64 e verificare istante per istante le variabili, in modo da agevolare il debug.