GW-BASIC linguaggio di programmazione | |
---|---|
![]() | |
Autore | Microsoft |
Data di origine | 1983 |
Ultima versione | 3.23 |
Utilizzo | General purpose |
Tipizzazione | Forte |
Influenzato da | Microsoft BASICA |
Implementazione di riferimento | |
Licenza | licenza MIT |
Modifica dati su Wikidata ·Manuale |
IlGW-BASIC (Graphics andWindowsBeginner'sAll-purposeSymbolicInstructionCode[1]) è uno dei dialetti del linguaggioBASIC sviluppato daMicrosoft sulla base delBASICA. Fu inizialmente prodotto per laCompaq e inserito da Microsoft anche nel suo sistema operativoMS-DOS perIBM PC compatibili fino alla versione 5.0, quando fu rimpiazzato dalQBasic.
Il GW-BASIC è compatibile con ilBASICA e, come questo, poteva essere lanciato da disco removibile ma, a differenza di esso, non si appoggia all'interprete BASIC memorizzato nelleROM dei primi modelli diPC IBM ma viene caricato completamente in memoria al momento del suo avvio.
Il GW-BASIC è quasi privo delle caratteristiche dellaprogrammazione strutturata ma ha diversi comandi per la gestione della grafica e, parzialmente, anche per la gestione sonora (musica monofonica). Risultò quindi un linguaggio molto versatile, adatto a imparare i rudimenti della programmazione, e che ben si adattava a produrre ogni genere di applicazione, da semplici giochi a programmi per ufficio ad applicazioni di gestione dei dati su disco[2].
Il GW-BASIC ha unIntegrated Development Environment (IDE) ariga di comando basato sulDartmouth BASIC: se l'utente inserisce una riga che inizia con un numero, questa viene considerata come una riga di codice da inserire nel programma residente in memoria, altrimenti l'interprete analizza la sintassi del testo inserito e, se sono presenti istruzioni o comandi validi, li esegue immediatamente. L'IDE include anche una particolare riga dello schermo (l'ultima in basso) in cui sono riportate le scorciatoie dei comandi assegnati aitasti funzione. I programmi vengono salvati in formato binario compresso con i comandi sostituiti dai relativitoken: c'è comunque la possibilità di salvarli in formatoASCII[3].
Come molte altre versioni del BASIC permicrocomputer circolanti all'epoca, anche il GW-BASIC era carente nel supporto per laprogrammazione strutturata (ad esempio non gestisce le variabili locali) ed era abbastanza lento a causa del fatto di essere unlinguaggio interpretato (per ovviare a questo problema Microsoft pubblicò uncompilatore denominatoBASCOM compatibile con il GW-BASIC, per quelle applicazioni che necessitavano di più velocità).
L'ambiente di sviluppo ha comandi per visualizzare (LIST
), eseguire (RUN
), salvare (SAVE
) o caricare (LOAD
) i programmi ma anche per tornare all'ambiente MS-DOS (SYSTEM
). Questi comandi possono essere eseguiti anche come istruzioni di programma.
Come detto, il supporto alla programmazione strutturata è limitato. Il blocco condizionaleIF/THEN/ELSE
deve essere scritto tutto su un'unica riga, mentre il bloccoWHILE/WEND
può distribuirsi su più linee. Le funzioni possono essere definite solo utilizzando l'istruzioneDEF FNnome_func(x)
(ad esempio la seguente funzione calcola un logaritmo:DEF FNLOG(base,numero)=LOG(numero)/LOG(base)
), ma sempre inserendo tutto il codice in un'unica riga.
Il tipo di dati di unavariabile è definito ricorrendo a un carattere speciale inserito alla fine del nome della variabile: ad esempio, il carattere$
identifica lestringhe mentre%
identifica unnumero intero. C'è la possibilità di creare dei gruppi di variabili di un determinato tipo di dato utilizzando l'istruzioneDEFtipo_datolettera
, dovetipo_dato sta per il tipo (ad esempioDEFINT indica il tipo intero) elettera una lettera o un gruppo di lettere dell'alfabeto. Tutte le variabili indicate nel programma il cui nome inizia con la lettera specificata nella definizione sono del tipo di dato indicato. Ad esempioDEFINT A-C
indica che tutte le variabili che iniziano con A, B o C sono di tipo intero. Il tipo standard di dati per le variabili non dichiarate è ilvirgola mobile (ofloating point)[4]
Il GW-BASIC permette la gestione diretta deijoystick e dellepenne ottiche: la gestione deimouse è invece possibile solo ricorrendo a driver o programmi esterni[5][6]. Tramite GW-BASIC è possibile leggere e scrivere su file o suporte seriali: di queste ultime può anche gestire gli eventi. Il GW-BASIC non gestisce le operazioni su nastro perché la porta per il registratore a cassette dei PC IBM originali non fu mai implementata sui computer compatibili.
Il GW-BASIC ha un supporto base per la musica, essendo in grado di riprodurre semplici note mediante l'istruzionePLAY
a cui va passata una stringa contenente una codifica particolare indicante le note, la loro durata, l'ottava, ecc. (ad esempio,PLAY "edcdeee2dfedc4"
). Un controllo più a basso livello è possibile con l'istruzioneSOUND
che riproduce un suono di una particolare frequenza e durata tramite l'altoparlante interno del computer. Su alcuni computer, come ilTandy 1000, è possibile gestire fino a 3 canali audio con i comandiSOUND
ePLAY
.
Ci sono diverse teorie circa il significato delle iniziali"GW" presenti nel nome del software. La versione ufficiale indica in esse l'abbreviativo di "Graphics andWindows", ad indicarne le potenzialità grafiche estese rispetto ai precedenti BASIC. Una versione non ufficiale, forse la più accreditata perché confermata dallo stesso interessato, riporta che GW altro non sarebbero che le iniziali diGreg Whitten, un dipendente Microsoft che fu assunto dalla società nel1979 e che contribuì, fra gli altri progetti, allo sviluppo degli standard del linguaggio BASIC di Microsoft. Un altro significato di GW sarebbe, secondo Whitten,Gee Whiz (traduzione: "diamine", "perbacco") per il grande numero di istruzioni grafiche in 2D contenute nel linguaggio ma anche perché suonava bene per gliOEM del mercato giapponese. Lo stesso Whitten, però, non sa esattamente quale sia il significato di GW perché il nome GW-BASIC fu scelto daBill Gates in persona: a parer suo, GW potrebbero anche essere le iniziali di Gates e Whitten[7].
Controllo di autorità | LCCN(EN) sh89005015 ·GND(DE) 4138578-0 ·BNF(FR) cb121459871(data) ·J9U(EN, HE) 987007532148605171 |
---|