GW-BASIC es un dialecto del lenguaje de programación BASIC desarrollado por Microsoft a partir de IBM BASICA . Funcionalmente idéntico a BASICA, su intérprete es un ejecutable completamente autónomo y no requiere la ROM de BASIC en casete que se encuentra en el original. Microsoft lo incluyó con los sistemas operativos MS-DOS en los ordenadores compatibles con IBM PC .
El lenguaje es adecuado para juegos sencillos, programas empresariales y similares. Dado que venía incluido en la mayoría de las versiones de MS-DOS, también fue una forma económica para que muchos aspirantes a programadores aprendieran los fundamentos de la programación informática . [ 2 ] [ 3 ] Microsoft también vendió un compilador BASIC , BASCOM, compatible con GW-BASIC, para programas que necesitaban mayor velocidad.
Según Mark Jones Lorenzo, dado el alcance del lenguaje, "GW-BASIC es posiblemente el ne plus ultra de la familia de BASIC numerados por línea de Microsoft que se remonta a Altair BASIC , y quizás incluso de BASIC numerado por línea en general". [ 4 ]
Con el lanzamiento de MS-DOS 5.0, GW-BASIC fue reemplazado por QBasic , una versión ligeramente abreviada de la parte del intérprete del paquete de intérprete y compilador QuickBASIC , disponible por separado. [ 5 ]
El 21 de mayo de 2020, Microsoft publicó el código fuente del ensamblador 8088 para GW-BASIC 1.0 en GitHub bajo la licencia MIT . [ 1 ]
Características
IBM BASICA y GW-BASIC son en gran medida adaptaciones de MBASIC versión 5.x, pero con características añadidas específicamente para el hardware de IBM PC. Las características comunes de BASIC-80 5.x y BASICA/GW-BASIC incluyen:
WHILE...WENDbucles- Nombres de variables de hasta 40 caracteres.
OPTION BASEInstrucción para establecer el índice inicial de las variables de matriz como 0 o 1.- Asignación dinámica de espacio para cadenas
LINE INPUTlo que permitía ignorar caracteres separadores de campos como la coma.CALLinstrucción para ejecutar rutinas en lenguaje máquinaCHAINyMERGEcomandos- Posibilidad de guardar programas en formato binario tokenizado o en texto ASCII.
La capacidad de "comprimir" las líneas de programa omitiendo espacios, una característica común de las implementaciones anteriores de Microsoft BASIC, se eliminó de BASIC-80 5.x y BASICA/GWBASIC.
Los programas BASIC-80 que no usan instrucciones PEEK/ POKEse ejecutan bajo GW-BASIC. BASICA agrega muchas características para IBM PC como sonido, gráficos y comandos de memoria. Las características que no están presentes en BASIC-80 incluyen la capacidad de ejecutar la RNDfunción sin parámetros y la capacidad de también guardar programas en un formato "protegido", lo que impide que sean LISTeditados. BASICA también permite que se usen números de doble precisión con funciones matemáticas y trigonométricas como COS, SIN, y ATN, lo que no estaba permitido en las versiones de 8 bits de BASIC. Esta característica normalmente no estaba habilitada y requería el parámetro opcional /Dal inicio, es decir, . El consumo de memoriaGWBASIC /D de BASIC aumentaba ligeramente si se usaba.
Microsoft no ofreció una versión genérica de MS-DOS hasta la versión 3.20 en 1986; antes de eso, todas las variantes del sistema operativo eran versiones OEM. Dependiendo del fabricante, BASIC se distribuía como BASICA.EXE o GWBASIC.EXE. No debe confundirse con IBM BASICA, que siempre se distribuía como un archivo COM . Algunas variantes de BASIC tienen funciones adicionales para admitir máquinas específicas. Por ejemplo, las versiones de DOS de AT&T y Tandy incluyen un GW-BASIC especial que admite sus capacidades mejoradas de sonido y gráficos.
La versión inicial de GW-BASIC es la que venía incluida con Compaq DOS 1.13, lanzada con la Compaq Portable en 1983, y era análoga a IBM BASICA 1.10. Utiliza los bloques de control de archivos derivados de CP/M para el acceso al disco y no admite subdirectorios. Las versiones posteriores admiten subdirectorios, gráficos mejorados y otras funcionalidades.
GW-BASIC 3.20 (1986) añade compatibilidad con gráficos EGA (ninguna versión de BASICA o GW-BASIC tenía compatibilidad con VGA ) y es la última versión nueva importante lanzada antes de ser reemplazada por QBasic .
Los compradores de tarjetas gráficas Hercules recibieron una versión especial de GW-BASIC en el disco de utilidades de la tarjeta, llamada HBASIC, que añade compatibilidad con sus gráficos monocromáticos de 720 × 348. Otras versiones de BASICA/GW-BASIC no son compatibles con los gráficos Hercules y solo pueden mostrar gráficos en esa tarjeta mediante el uso de emulación CGA de terceros , como SIMCGA.
GW-BASIC cuenta con un entorno de desarrollo integrado (IDE) basado en línea de comandos, derivado de Dartmouth BASIC . Mediante las teclas de movimiento del cursor, se puede editar cualquier línea que aparezca en pantalla. También incluye accesos directos a teclas de función en la parte inferior de la pantalla. Al igual que otras versiones tempranas de BASIC para microordenadores , GW-BASIC carece de muchas de las estructuras necesarias para la programación estructurada , como las variables locales. Los programas en GW-BASIC se ejecutaban con relativa lentitud debido a que era un lenguaje interpretado . Todas las líneas de programa deben estar numeradas; las líneas no numeradas se consideran comandos en modo directo y se ejecutan inmediatamente. Los archivos fuente del programa se guardan normalmente en formato binario comprimido, donde los tokens reemplazan las palabras clave, con la opción de guardarlos en formato de texto ASCII . [ 6 ]
El entorno de línea de comandos de GW-BASIC tiene comandos para RUN, LOAD, SAVE, LISTel programa actual o salir al sistema operativo SYSTEM; estos comandos también se pueden usar como instrucciones de programa. Hay poco soporte para la programación estructurada en GW-BASIC. Todas las instrucciones condicionalesIF / THEN/ deben escribirse en una sola línea, aunque las instrucciones / pueden agrupar varias líneas. Las funciones solo se pueden definir usando la instrucción de una sola línea (por ejemplo, ). El tipo de datos de las variables se puede especificar con un carácter al final del nombre de la variable: es una cadena de caracteres, es un entero , etc. Los grupos de variables también se pueden establecer a tipos predeterminados según la letra inicial de su nombre mediante el uso de las instrucciones , , etc. El tipo predeterminado para las variables no declaradas que no se identifican mediante dichas instrucciones de tipado es punto flotante de precisión simple ( MBF de 32 bits ). [ 7 ]ELSEWHILEWENDDEF FNf(x)=<mathematical function of x>DEFFNLOG(base,number)=LOG(number)/LOG(base)A$A%DEFINTDEFSTR
GW-BASIC permite el uso de joysticks y lápices ópticos . GW-BASIC puede leer y escribir en archivos y puertos COM ; también puede realizar captura de eventos para puertos. Dado que la interfaz del puerto de cinta de casete del IBM PC original nunca se implementó en compatibles, las operaciones con casete no son compatibles. GW-BASIC puede reproducir música simple usando la PLAYinstrucción, necesitando una cadena de notas representada en un lenguaje de macros musicales , por ejemplo, . Es posible un control de nivel PLAY "edcdeeL2edfedL4c"más bajoSOUND con la instrucción, que toma como argumentos una frecuencia en hercios y una duración en ciclos de reloj para el altavoz interno estándar de PC en las máquinas IBM. En consecuencia, el sonido se limita a pitidos y silbidos de un solo canal, como corresponde a una máquina "comercial". GW-BASIC para Tandy 1000 permite hasta tres canales de sonido para los comandos SOUNDy PLAY. [ 7 ]
Nombre
Existen varias teorías sobre el significado de las iniciales "GW". Greg Whitten , uno de los primeros empleados de Microsoft que desarrolló los estándares de la línea de compiladores BASIC de la compañía, afirma que Bill Gates eligió el nombre GW-BASIC. Whitten se refiere a él como Gee-Whiz BASIC y no está seguro de si Gates le puso ese nombre en su honor. [ 8 ] El Manual del Usuario de Microsoft, publicado por Microsoft Press, también se refiere a él como Gee-Whiz BASIC. Es posible que también recibiera el apodo de Gee-Whiz debido a sus numerosos comandos gráficos . [ 8 ] Otras teorías comunes sobre el origen de las iniciales incluyen "Graphics and Windows", " Gates, William " (presidente de Microsoft en ese momento) o "Gates-Whitten" (los dos principales diseñadores del programa). [ 9 ] [ 10 ] El propio Gates escribió un artículo conmemorando el 25.º aniversario de BASIC, en el que afirma que GW-BASIC es "la abreviatura de Gee Whiz". [ 11 ]
Véase también
Referencias
- 1 2 Turner, Rich. "Microsoft publica GW-BASIC como código abierto" . Línea de comandos de Windows . Microsoft . Consultado el 22 de mayo de 2020 .
- ↑ KindlyRat. "GW-BASIC" . Archivado del original el 26 de julio de 2005. Consultado el 10 de noviembre de 2009 .
- ↑ Leon. "Juegos y otros programas de GWBASIC" . Archivado del original el 26 de octubre de 2009. Consultado el 10 de noviembre de 2009 .
- ↑ Lorenzo, Mark (2017). Bucle infinito: La historia del lenguaje de programación BASIC . Filadelfia: SE Books. pág. 122. ISBN 978-1974-27707-0.
- ↑ "Información de la versión de Microsoft BASIC" . Consultado el 12 de junio de 2008 .
- ↑ "Documentación y utilidades de GW-BASIC" . Archivado del original el 17 de diciembre de 2007.
- 1 2 "Guía del usuario de GW-BASIC" . 1987. Consultado el 28 de junio de 2008 .
- 1 2 Gregory Whitten (13 de abril de 2005). "GW-BASIC" . Archivado del original el 20 de septiembre de 2008. Recuperado el 29 de junio de 2008 .
- ↑ "Diccionario Linux:G" . Consultado el 28 de junio de 2008 .
- ↑ "GW-BASIC" . 13 de abril de 2005. Archivado del original el 29 de junio de 2008. Consultado el 28 de junio de 2008 .
- ↑ "El 25º aniversario de BASIC" (PDF) .
Enlaces externos
- Código fuente de GW-BASIC en GitHub
- Sitio de descarga de programas e instrumentos del intérprete GW-BASIC en Wayback Machine (archivado el 27 de octubre de 2009).
- Manual del usuario de GW-BASIC
- El Centro de Información de Gary Beene se archivó el 6 de julio de 2014 en la Wayback Machine con información sobre BASIC, incluyendo fechas de cronología para DOS, Windows y los dialectos de BASIC.
- GW-BASIC : Un recurso para GW-BASIC, recopilado de diversas fuentes.
- Microsoft BASIC descontinuado
- Lenguajes de programación creados en 1983
- Intérpretes BÁSICOS
- Familia de lenguajes de programación BASIC
- Software que utiliza la licencia MIT.
- Software programado en lenguaje ensamblador
- Software anteriormente propietario
- Software gratuito de Microsoft
- Lenguajes de programación de Microsoft