# GFA-BASIC

Il GFA-BASIC è un dialetto del linguaggio di programmazione BASIC sviluppato da Frank Ostrowski nel 1986 come sostituto dell'ST BASIC dei computer Atari ST. Il suo nome deriva dall'azienda che distribuiva il software, ovvero GFA Systemtechnik GmbH (GFA è l'acronimo di "Gesellschaft für Automatisierung", cioè "Società per l'automazione").
Nella seconda metà degli anni 80 divenne il linguaggio di programmazione più usato per l'Atari ST, anche perché l'Atari ST BASIC fornito in abbinamento con quel computer si dimostrò presto poco utile. In seguito a questo successo vennero sviluppate versioni per Commodore Amiga, DOS e Windows. Sebbene teoricamente ancora disponibile, il GFA-BASIC è del tutto superato dai linguaggi di programmazione attualmente disponibili.

## Caratteristiche

Il GFA-BASIC fu, per lo standard dell'epoca, un linguaggio molto moderno. Non aveva numeri di linea, ogni linea era equivalente ad un comando, e possedeva un considerevole numero di comandi di programmazione strutturata, con la possibilità di definire variabili locali, di passare i parametri per valore o per riferimento, di utilizzare comandi evoluti per i cicli ecc. Non era comunque possibile creare record o altri tipi di dati agglomeranti, e la modularizzazione era solo rudimentale, per cui il GFA-BASIC era particolarmente adatto a progetti medio-piccoli.
L'interprete era compatto e ragionevolmente veloce. Era fornito insieme ad un runtime che poteva essere distribuito gratuitamente con i programmi. Successivamente fu reso disponibile anche un compilatore, che incrementava la velocità di esecuzione di un programma di circa due volte.
L'editor del GFA-BASIC fu molto apprezzato per la sua velocità, la sua usabilità e la sua stabilità. Tra le sue caratteristiche più interessanti va ricordata la possibilità di compattare la visualizzazione di una subroutine (funzione o procedura) riducendola al solo titolo, aumentando quindi la leggibilità del programma.
Il GFA-BASIC si integrava completamente nel GEM e nel TOS, il sistema operativo dell'Atari ST offrendo perciò menu, finestre di dialogo e controllo del mouse (vedi la voce sull'interfaccia WIMP).
Nonostante il codice sorgente fosse generalmente salvato in una versione tokenizzata per risparmiare spazio su disco, delle porzioni di codice potevano anche essere memorizzate in formato ASCII così da creare delle librerie che potevano essere riutilizzate. I file in sorgente tokenizzato erano utili anche per altri scopi: ad esempio, il GFA-BASIC consentiva al programmatore di includere dei dati in formato binario all'interno del codice BASIC utilizzando l'istruzione "INLINE". Questi dati potevano poi essere convertiti dall'assembler del GFA-BASIC in linguaggio macchina permettendo al programmatore di rendere particolarmente veloci determinate aree del programma. Grazie ai sorgenti tokenizzati l'interprete BASIC (e poi il compilatore) non doveva convertire in token il programma quando questo veniva caricato, cosa che avrebbe comportato un aumento considerevole del tempo di caricamento di grossi programmi nel caso in cui questi fossero stati salvati in formato testuale.
Alcune edizioni del manuale del GFA-BASIC vennero stampate in nero su carta rossa per evitare la possibilità che venisse facilmente fotocopiato. L'efficacia di questa scelta fu talmente criticata da indurre al ritorno della stampa del manuale nel consueto formato in nero su carta bianca.

## Altre versioni
### DOS

Il GFA-BASIC per MS-DOS permetteva agli utenti di scrivere dei programmi che presentavano una semplice interfaccia in stile Windows, utile per realizzare programmi che non presentassero una mera interfaccia a riga di comando. Eseguire il porting di programmi in GFA-BASIC per il DOS comportava in genere l'adeguamento dei colori dell'interfaccia alla tavolozza del DOS.

### Windows

La versione per Windows includeva una completa implementazione delle chiamate alle API di questo sistema operativo. Nonostante il programma avesse un certo numero di vantaggi a livello tecnico rispetto ad altri prodotti più famosi (come la combinazione di un linguaggio "facile" con una robusta architettura ed un codice affidabile, veloce e compilato), esso non ebbe mai molto successo nel mercato di Windows. I programmatori professionisti che volevano un codice ad alte prestazioni tendevano ad utilizzare dei linguaggi più "tecnici", considerando il BASIC come inferiore. E per coloro che non avevano problemi ad utilizzare il BASIC, diversi produttori come Microsoft e Borland offrivano dei nuovi sistemi di programmazione "visuali, come il Visual Basic, che permettevano agli utenti di creare finestre popolate da componenti standard (come testo, pulsanti ed altri widget) con la possibilità di disegnare l'interfaccia dei programmi semplicemente trascinando l'oggetto da posizionare e di inserire il codice anche object oriented.
Uno dei vantaggi del GFA-BASIC per Windows era che il compilatore (venduto separatamente) poteva creare dei file eseguibili che non necessitavano di altri componenti per poter girare, ed anche la relativamente facile opzione per creare dei file DLL per Windows: questo permetteva ad un utente di scrivere e provare delle routine in GFA-BASIC, esportarle come funzioni in un file ".dll" per Windows e poi accedere a queste funzioni pre-compilate da altri programmi, come ad esempio Visual Basic 3.0, che non era in grado di generare del codice compilato). Grazie a ciò il GFA-BASIC venne usato per scrivere dei programmi addizionali per il Visual Basic che necessitavano della velocità che quelle prime versioni del Visual Basic non potevano offrire.
Il GFA-BASIC non raggiunse la notorietà dei prodotti di Microsoft o di altre società perché esso era un sistema di creazione di applicazioni solo testuale e difettava del nuovo sistema "visuale" di costruzione delle interfacce dei prodotti della concorrenza. Per questo motivo e per il fatto che il GFA-BASIC non aveva la visibilità su riviste e pubblicazioni degli altri prodotti, il GFA-BASIC per Windows rimase un prodotto praticamente sconosciuto.