QB64 (originalmente QB32 ) [ 1 ] es un compilador BASIC autoalojado para Microsoft Windows , Linux y Mac OS X , diseñado para ser compatible con Microsoft QBasic y QuickBASIC . QB64 es un transpilador a C++ , que está integrado con un compilador de C++ para proporcionar compilación a través de código C++ y optimización GCC . [ 2 ]
QB64 implementa la mayoría de las instrucciones de QBasic y puede ejecutar muchos programas de QBasic, incluidos los juegos QBasic Gorillas y Nibbles de Microsoft . [ 3 ] Además, QB64 se ha diseñado para contener un IDE similar al IDE de QBASIC. QB64 también extiende el lenguaje de programación QBASIC para incluir tipos de datos de 64 bits , así como una mejor compatibilidad con sonido y gráficos. También puede emular algunas características específicas de DOS/x86, como el acceso al ratón mediante INT 33h y múltiples temporizadores.
Desde la versión 2.0, QB64 ahora ofrece capacidades de depuración, con el nuevo metacomando $DEBUG . [ 4 ]
Historia
QB64 se compiló originalmente con QuickBASIC 4.5. Tras un desarrollo significativo, Rob Galleon, el desarrollador, se vio obstaculizado por las limitaciones de memoria de QuickBASIC y cambió a Microsoft Basic PDS 7.1, lo que solucionó estos problemas durante un breve período. [ 5 ] Después de la versión 0.63, QB64 pudo compilarse a sí mismo, por lo que las limitaciones de memoria convencionales dejaron de aplicarse.
Respecto al impulso para QB64, Galleon dijo: [ 6 ]
Empecé a ver la necesidad de QB64 cuando quedó claro que la llegada de VISTA perjudicaría a QBASIC, relegándolo a un lenguaje obsoleto que solo se podía ejecutar en emuladores, los cuales ofrecen pocas o ninguna posibilidad de aprovechar las funciones modernas de los ordenadores. La programación de QB64 comenzó a principios de este año y desde entonces ha progresado de forma constante. Como ya tenía experiencia escribiendo lenguajes de programación, conocía de antemano los retos que me esperaban.
A partir de 2016, se comenzó a trabajar en un creador de interfaces gráficas de usuario y un entorno de desarrollo integrado basado en eventos llamado InForm, que ofrecía características similares a las de Visual Basic . [ 7 ]
Sintaxis
La sintaxis de QB64 está diseñada para ser totalmente compatible con versiones anteriores de QuickBASIC. No se requieren números de línea y las instrucciones terminan con saltos de línea o separadas por dos puntos ( :).
Un ejemplo de programa "¡Hola, mundo!" es:
IMPRIMIR "¡Hola, mundo!"Un ejemplo de cómo QB64 emula la memoria VGA para garantizar la compatibilidad:
CLS S$ = "¡Hola, mundo!" DEF SEG = & HB800 'establece el segmento en la memoria de vídeo FOR I = 1 TO LEN ( S$ ) POKE 160 + ( I - 1 ) * 2 , ASC ( MID$ ( S$ , I , 1 )) 'carácter NEXT DEF SEG 'restablece el segmento a valores predeterminadosUn ejemplo de cómo QB64 admite archivos de audio:
sound_effect& = _SNDOPEN ( "sound.wav" ) 'WAV, OGG o MP3 _SNDPLAY sound_effect&Un ejemplo de cómo QB64 admite archivos de imagen:
SCREEN _NEWIMAGE ( 800 , 600 , 32 ) 'crea una imagen de pantalla de 32 bits imagename& = _LOADIMAGE ( "image__name.png" ) 'BMP, JPG, PNG, etc. _PUTIMAGE ( 0 , 0 ), imagename& _FREEIMAGE imagename& 'libera la memoria asignadaUn ejemplo de cómo QB64 utiliza varios temporizadores:
t1 = _FREETIMER t2 = _FREETIMER ON TIMER ( t1 , 1 ) GOSUB Timer . Trap 'el código que sigue a la etiqueta Timer.Trap se ejecutará cada 1 segundoON TIMER ( t2 , .5 ) mySub 'QB64 también puede activar un procedimiento SUB con TIMER; ' en este caso, mySUB se activará cada 500 milisegundos.'Activar temporizadores: TEMPORIZADOR ( t1 ) ENCENDIDO TEMPORIZADOR ( t2 ) ENCENDIDODO 'Entra en un bucle infinito hasta que se cierre la ventana _LIMIT 1 'Ejecuta el bucle principal a 1 ciclo por segundo, para mostrar cómo los temporizadores son independientes del flujo del programa principal LOOPTemporizador . Trampa: IMPRIMIR "1s; " ; RETORNARSUB mySub PRINT "500ms; " ; END SUBExtensiones para QBASIC
Los comandos extendidos de QB64 comienzan con un guion bajo para evitar conflictos con cualquier nombre que pueda usarse en un programa QuickBASIC. A partir de la versión 1.4, el prefijo de guion bajo se puede eliminar usando el metacomando $NOPREFIX . [ 8 ] QB64 extiende el lenguaje QuickBASIC de varias maneras. Agrega los nuevos tipos de datos, incluidos _BIT, y _BYTE, así como tipos de datos sin signo . Los nuevos tipos de datos tienen sufijos al igual que los tipos de datos BASIC tradicionales. QB64 también incluye una biblioteca de audio que permite reproducir la mayoría de los formatos de audio comunes, incluidos archivos MP3 , Ogg Vorbis y WAV , así como bibliotecas que permiten a los usuarios usar gráficos de mayor resolución que los 640×480 ofrecidos por QuickBASIC, [ 9 ] usar diferentes fuentes y trazar imágenes en formatos BMP , PNG y JPEG . También permite el uso de colores de 32 bits en lugar de los 256 (o 16, dependiendo) colores limitados que se ofrecían originalmente. El programador tampoco tiene que especificar qué bibliotecas de programación incluir, ya que QB64 lo hace automáticamente. El programador tiene la opción de incluir una biblioteca propia mediante el comando $INCLUDE, tal como lo hacía QuickBASIC ._INTEGER64_FLOAT
Otra característica importante que se ha añadido es la conectividad de red. Inicialmente, esto permitía abrir un flujo TCP/IP que podía leerse y escribirse mediante las instrucciones Input#/Print# . Este modo tiene su propio formato de encapsulación de paquetes propietario que, si bien era fácil de usar con QBasic, significaba que solo podía utilizarse para comunicarse con otros programas QB64 o servidores backend con interfaces personalizadas creadas específicamente para la aplicación. Las versiones posteriores añaden GET# y PUT# para leer y escribir bytes sin procesar del flujo. Esto permite implementaciones nativas de protocolos estándar como SMTP y HTTP.
Ventajas de QB64
- Admite diferentes formatos de archivo y también proporciona acceso al portapapeles.
- QB64 proporciona acceso instantáneo a archivos gráficos de 32 bits (los formatos más populares).
- QB64 proporciona acceso instantáneo a varios formatos de audio.
- Es compatible con la mayoría de los sistemas operativos modernos, por lo que no se requiere emulación.
Bibliotecas
QB64 integra FreeGLUT para sus gráficos y texto.
Una rama de desarrollo del repositorio alojada en GitHub se actualiza con frecuencia con correcciones y mejoras, que eventualmente se convertirán en la próxima versión estable. Las versiones de desarrollo también están disponibles en el sitio web oficial para que los usuarios las prueben en fase beta.
QB64 también puede usar bibliotecas DLL para Windows y encabezados de C++ con un bloque DECLARE LIBRARY. Los usuarios también pueden acceder a archivos de encabezado de C para ejecutar funciones de C.
Horquillas
Debido a una reorganización en la comunidad en 2022, ahora existen al menos dos bifurcaciones del proyecto QB64. [ 10 ] El repositorio de GitHub "QB64 Team" ya no está activo, y todo el desarrollo nuevo se está realizando en nuevas bifurcaciones:
- QB64 Team fue la versión autorizada hasta abril de 2022.
- QB64 Oficial Una mezcla de desarrolladores antiguos y nuevos han bifurcado el proyecto y reiniciado el desarrollo.
- QB64 Phoenix (sitio principal) ( Github ) La bifurcación "Phoenix" se creó para resucitar el proyecto después de la reorganización de 2022.
Referencias
- ↑ Stephane Richard (16 de noviembre de 2007). "En las noticias" . PCOPY! Número 50. Programación básica. Archivado del original el 21 de diciembre de 2009. Consultado el 17 de agosto de 2008 .
- ↑ EKVirtanen (26-05-2008). "Entrevista con Galleon" . PCOPY! Número 70. Programación básica. Archivado del original el 21-08-2008 . Recuperado el 14-07-2008 .
- ↑ "Capturas de pantalla de QB64 - Gorilas de QB64/QBASIC en QB64" . Archivado del original el 12 de mayo de 2013. Consultado el 27 de julio de 2010 .
- ↑ "Registro de cambios para la versión 2.0 – QB64.org" . www.qb64.org . Archivado del original el 10 de octubre de 2021.
- ↑ "¡Más bichos, por favor! (En serio)" . 3 de marzo de 2008.
- ↑ "¡Bienvenido al Foro QB64!" . EL FORO QBASIC . 30 de septiembre de 2007 . Consultado el 28 de enero de 2020 .
- ↑ Rogoz, Ivan (2022-04-07). "Un recuerdo del pasado: QBasic 4.5" . Barn Lab . Consultado el 26 de septiembre de 2023.
QB64 viene con un editor IDE WYSIWYG llamado InForm, que lo acerca al uso cotidiano como un lenguaje rápido y sencillo para la automatización en Windows.
- ↑ "Registro de cambios para la versión 1.4 – QB64.org" . www.qb64.org . Archivado del original el 13 de febrero de 2020.
- ↑ "QB Advisor: Modos de pantalla 11, 12 y 13" . Microsoft Corporation. 1988. Archivado del original el 5 de enero de 2009. Consultado el 25 de julio de 2008 .
- ↑ Proven, Liam (28-03-2023). "¿Nostalgia por VB? BASIC está lejos de estar muerto" . The Register . Consultado el 01-10-2023 .
Lo mismo ocurre con QB64, aunque la división entre sus desarrolladores aún no se ha resuelto por completo. Una comunidad llamada QB64 Phoenix está desarrollando activamente una nueva edición Phoenix.
Enlaces externos
- Compiladores BASIC
- Compiladores libres y de código abierto
- Herramientas de programación de macOS
- Herramientas de programación para Windows
- Herramientas de programación Linux
- Software de 2007
- Familia de lenguajes de programación BASIC