# Microsoft BASIC

Il Microsoft BASIC è stato il primo prodotto della Microsoft.
Apparso nel 1975 come Altair BASIC, è stato il primo BASIC, e di fatto il primo linguaggio di programmazione ad alto livello, disponibile per l'Altair 8800.

## Storia
### Lo sviluppo

L'interprete BASIC dell'Altair fu sviluppato dai fondatori della Microsoft Paul Allen e Bill Gates, con l'aiuto di Monte Davidoff, utilizzando un emulatore software dell'Intel 8080 sviluppato da loro stessi e fatto girare su un minicomputer, il PDP-10.

### La distribuzione

Il Microsoft BASIC venne originariamente distribuito su nastro perforato e la sua versione originale richiedeva 4 kB di memoria. La versione estesa, che ne richiedeva 8, fu distribuita come BASIC-80 per i processori Intel 8080/85 e Zilog Z80, come BASIC-68 per il Motorola 6800 e come BASIC-69 per il 6809. La Commodore ne ordinò una versione specifica per i suoi processori MOS Technology 6502, che distribuì come Commodore BASIC: in questo caso il software raggiunse la ragguardevole dimensione di 9 kB, in un'epoca in cui la dimensione standard dei chip di ROM era di 8 KB. Apple lo usò sui suoi computer Apple II come Applesoft BASIC. Ne fu eseguito il porting anche per i computer a 16 bit con l'uscita del BASIC-86, specifico per i processori Intel 8086 e l'8088.

### Il successo

Dopo il successo iniziale dell'Altair BASIC, il Microsoft BASIC divenne la base per un lucroso sistema di affari basato sulla concessione di licenze d'uso del software, dal momento che fu portato sulla maggioranza dei numerosi home e personal computer degli anni settanta ed ottanta, aggiungendo via via nuove funzioni. A differenza dell'Altair BASIC, la maggior parte degli interpreti BASIC per gli home computer risiedeva nella ROM ed era, quindi, disponibile immediatamente all'accensione della macchina, con il caratteristico prompt "READY.". Gli interpreti BASIC costituirono, quindi, una parte significativa e visibile dei sistemi operativi di molti rudimentali home computer.
Il Microsoft BASIC (BASICA, GW-BASIC, QuickBASIC e QBASIC) non è più incluso nelle più recenti versioni di Windows, ma può essere scaricato da vari siti internet. L'ultima incarnazione del BASIC di Microsoft è il Visual Basic .NET, che incorpora molte delle funzioni del C++ e del C# e può essere usato per lo sviluppo di form e applicazioni server.

## Caratteristiche

Il dialetto del BASIC era simile a quelli della Digital Equipment Corporation, soprattutto nei costrutti per la manipolazione delle stringhe, che variano nelle diverse implementazioni del linguaggio. Il Microsoft BASIC usava stringhe allocate dinamicamente che memorizzavano la loro grandezza, una caratteristica assente in C o in C++ fino alla creazione della Standard Template Library negli anni novanta. Molte di queste operazioni sulle stringhe sono ancora valide nel framework .NET. Le prime versioni del BASIC supportavano soltanto nomi di variabile dati da un singolo carattere alfanumerico, mentre il Microsoft BASIC anche i nomi lunghi per le variabili. Tuttavia, la tabella dei simboli da utilizzare al momento dell'esecuzione del programma utilizzava una ricerca lineare: per questo motivo un programma che utilizzava molte variabili distinte veniva eseguito dall'interprete molto più lentamente di un altro che utilizzava magari un unico array per tutte le sue variabili.
Il Microsoft BASIC era un prodotto ideale per i computer che integravano parti del sistema operativo su ROM: dal momento che non richiedeva né un editor di testo (ogni riga veniva inserita a video semplicemente antecedendo un numero ai comandi) né una memoria di massa su cui memorizzare il codice oggetto o l'eseguibile (questo era salvato direttamente in memoria), esso era sicuramente il linguaggio adatto ad home e personal computer, macchine meno sofisticate dei desktop industriali dell'epoca che avevano funzionalità apposite per l'editing, la memorizzazione e il debugging ma con un prezzo sensibilmente superiore (7.000 dollari contro i 1.500 dollari di media dei microcomputer dell'epoca).

## Varianti e derivati

* Altair BASIC (MITS Altair 8800 e altri computer su bus S-100)
* Aquarius BASIC
* Amiga BASIC (per la serie Commodore Amiga)
* Applesoft BASIC (per la serie Apple II)
* Atari Microsoft BASIC I e II (per la famiglia degli Atari 8-bit)
* BASICA ("BASIC Advanced") (contenuto nel PC-DOS, per i PC IBM)
* Color BASIC (TRS-80 Color Computer)
* Commodore BASIC (integrato nei computer a 8 bit della Commodore, incluso il Commodore 64; originariamente chiamato anche PET BASIC)
* Epson PX-4
* Epson HX-20
* Extended Color BASIC (TRS-80 Color Computer e Dragon 32/64)
* IBM Cassette BASIC (versione per PC IBM contenuta nella ROM, attivata in assenza di dischi, capace di supportare le unità a nastro)
* KC-BASIC su computer prodotti dalla Robotron VEB
* Kyotronic KC-85, Tandy 100, NEC PC-8201a e Olivetti M10
* Research Machines RM-380Z e RM-480Z
* GWBASIC (BASICA per MS-DOS, su IBM PC compatibili)
* Microsoft Level III BASIC (Tandy/Radio-Shack TRS-80)
* MBASIC (CP/M, su computer basati su 8080/85 e Z80), e varianti specifiche per:
** Osborne Executive
** Otrona Attaché
** Epson PX-8
** Epson QX-10 (QC-10), compresa una variante per la scheda MultiFont, chiamata MF-BASIC.
** Microsoft SoftCard per Apple II in bassa e alta risoluzione (MBASIC e GBASIC)
* MS BASIC for Macintosh (Mac OS su Apple Macintosh)
* MSX BASIC (per i computer aderenti allo standard MSX)
* MTX BASIC (Memotech MTX)
* NASCOM ROM BASIC (Nascom I e II)
* N60-BASIC (NEC_PC-6001)
* N66-BASIC (NEC PC-6601)
* N88-BASIC (NEC PC-8801/9801)
* QBasic (PC-DOS/MS-DOS su IBM PC e compatibili)
* QuickBASIC (PC-DOS/MS-DOS su IBM PC e compatibili))
* TRS-80 Level II BASIC (Tandy/Radio-Shack TRS-80)
* Triumph Adler Alphatronic ROM BASIC V.5.11
* Visual Basic (PC-DOS/MS-DOS/MS Windows su IBM PC e compatibili)
* WordBasic (pre-VBA) (MS Windows)
* HP2640 HP2647 Programmable Terminal with AGL graphics extensions
* FreeBASIC (un clone avanzato free del QuickBASIC, compatibile con le librerie C più diffuse)
* QB64, un compilatore open source totalmente retrocompatibile col QuickBASIC; anch'esso è in grado di sfruttare le più recenti librerie, sia quelle in Linguaggio C che le Windows API.