# GW-BASIC

El GW-BASIC es un dialecto del lenguaje de programación BASIC, originalmente para Compaq, desarrollado por Microsoft a partir de lenguaje BASICA.
Fue liberado en 2020 bajo licencia MIT.

## Características destacadas

Es compatible al BASICA de Microsoft/IBM, pero está basado en disco y no necesita del ROM BASIC del IBM PC, XT y posteriores computadores personales de IBM. Era provisto originalmente en los discos del sistema operativo MS-DOS de Microsoft para los computadores Compatible IBM PC.
Microsoft también vendió un compilador de BASIC, BASCOM, compatible con el GW-BASIC, para los programas que necesitaban más velocidad. El lenguaje era conveniente para juegos simples, programas de negocio y similares. Debido a que fue incluido con la mayoría de las versiones del MS-DOS, también era una manera de bajo costo para que muchos aspirantes a programadores aprendieran los fundamentos de la programación de computadora. Con el lanzamiento del MS-DOS 5.0, el lugar del GW-BASIC eventualmente fue tomado por el QBasic, una versión reducida del compilador QuickBASIC que estaba disponible por separado.

## Sintaxis

El GW-BASIC tiene un entorno de desarrollo integrado (IDE) tipo línea de comandos basado en el Dartmouth BASIC. También incluye atajos de teclas de función en la parte de abajo de la pantalla. Como otras versiones de BASIC de los primeros microcomputadores, el GW-BASIC careció de muchas de las estructuras necesarias para la programación estructurada tales como variables locales, y los programas de GW-BASIC ejecutaron relativamente lentos, debido al hecho de que era un lenguaje de programación interpretado. Todas las líneas de programa deben ser numeradas; todas las líneas no-numeradas son consideradas como comandos en modo directo para ser ejecutados inmediatamente. Los archivos fuente del programa se guardan normalmente en formato binario comprimido con tokens reemplazando los comandos, con una opción para guardarlos en forma de texto ASCII.
El ambiente de línea de comandos del GW-BASIC tiene comandos para correr, cargar, guardar y listar el programa actual (RUN, LOAD, SAVE, LIST), o para salir al sistema operativo (SYSTEM); estos comandos también pueden ser usados como sentencias del programa. En GW-BASIC hay poco soporte para la programación estructurada. Todas las sentencias condicionales IF/THEN/ELSE deben estar escritas en una línea, aunque las sentencias WHILE/WEND puedan agrupar múltiples líneas. Las funciones solo pueden estar definidas usando una sola línea DEF FNf(x)=<función matemática de x> (ej, DEF FNLOG(base,número)=LOG(número)/LOG(base)). El tipo de datos de las variables puede ser especificado con un carácter al final del nombre la variable: A$ es un string de caracteres, A% es un número entero, etc. Grupos de variables pueden ser fijados a tipos por defecto basados en la letra inicial de su nombre por medio de sentencias DEFINT, DEFSTR, etc. El tipo por defecto para las variables sin declarar no identificadas por tales sentencias de tipo, es el punto flotante de simple precisión.
El GW-BASIC permitió el uso de los dispositivos de entrada joystick, ratón y lápiz óptico de su tiempo. El GW-BASIC puede leer y escribir a archivos y puertos COM; puede también interceptar los eventos de los puertos. Puesto que la interfaz del puerto del casete de la IBM PC original nunca fue implementada en sistemas compatibles, las operaciones del casete no son soportadas. El GW-BASIC puede ejecutar música simple usando la sentencia PLAY, necesitando una cadena de notas representadas en un macro-lenguaje de música (ej. PLAY "edcdeee2dfedc4"). Un control de más bajo nivel es posible con la sentencia SOUND, que toma los argumentos de frecuencia en hertzios y una longitud en impulsos del reloj (clock ticks) para el altavoz interno estándar del PC en las máquinas IBM. Consecuentemente el sonido está limitado a beeps y silbatos de un canal simple como corresponde a una máquina de "negocio". Los PC para el hogar tales como el Tandy 1000 permitieron hasta tres canales de sonido para los comandos SOUND y PLAY.

## Nombre

Hay varias teorías sobre lo que significaban las iniciales "GW". Greg Whitten, empleado temprano de Microsoft, quien desarrolló los estándares en la línea del compilador BASIC de la compañía, dice que Bill Gates escogió el nombre GW-BASIC. Whitten le refiere como Gee-Whiz BASIC y no es seguro si Gates llamara al programa debido a él. El Microsoft User Manual de Microsoft Press también lo refiere por este nombre. También pudo haber sido apodado Gee-Whiz porque tenía una gran cantidad de comandos de gráficos. Otras teorías comunes en cuanto a los orígenes de las iniciales incluyen "Graphics and Windows", "Gates, William" (el presidente de Microsoft en ese entonces), o "Gates-Whitten" (los dos diseñadores principales del programa).