Desarrollador(es) | Investigación Blitz |
---|---|
Escrito en | Compilado en C++ , pero los lenguajes son dialectos de BASIC |
Sistema operativo | AmigaOS Microsoft Windows |
Disponible en | Inglés |
Tipo | Sistema de creación de juegos |
Licencia | Licencia zlib |
Sitio web | blitzresearch.itch.io |
Blitz BASIC es el dialecto del lenguaje de programación de los primeros compiladores Blitz [1] , ideado por el desarrollador Mark Sibly, con base en Nueva Zelanda. Al derivar de BASIC , la sintaxis de Blitz fue diseñada para que fuera fácil de entender para los principiantes que aprenden a programar por primera vez. Los lenguajes están orientados a la programación de juegos, pero a menudo se los considera lo suficientemente generales como para ser utilizados en la mayoría de los tipos de aplicaciones. El lenguaje Blitz evolucionó a medida que se lanzaron nuevos productos, y las encarnaciones recientes ofrecían soporte para técnicas de programación más avanzadas, como la orientación a objetos y el multithreading . Esto llevó a que los lenguajes perdieran su apodo BASIC en años posteriores. [2]
La primera iteración del lenguaje Blitz fue creada para la plataforma Amiga y publicada por la firma australiana Memory and Storage Technology. Volviendo a Nueva Zelanda , Blitz BASIC 2 fue publicado varios años después (alrededor de 1993 según este comunicado de prensa [3] ) por Acid Software, un editor local de juegos para Amiga. Desde entonces, los compiladores Blitz han sido lanzados en varias plataformas . Tras la desaparición de Amiga como plataforma comercialmente viable, el código fuente de Blitz BASIC 2 fue lanzado a la comunidad Amiga. El desarrollo continúa hasta el día de hoy bajo el nombre de AmiBlitz. [4]
Idigicon publicó BlitzBasic para Microsoft Windows en octubre de 2000. El lenguaje incluía una API integrada para realizar operaciones básicas de audio y gráficos 2D. Tras el lanzamiento de Blitz3D, BlitzBasic se conoce a menudo como Blitz2D.
El reconocimiento de BlitzBasic aumentó cuando se distribuyó una gama limitada de versiones "gratuitas" en revistas informáticas británicas populares como PC Format . Esto dio lugar a una disputa legal entre el desarrollador y el editor, que finalmente se resolvió de forma amistosa.
En febrero de 2003, Blitz Research Ltd. lanzó BlitzPlus también para Microsoft Windows. Carecía del motor 3D de Blitz3D, pero sí aportaba nuevas características al lado 2D del lenguaje al implementar un soporte limitado para los controles de Microsoft Windows para crear GUI nativas . También se amplió la compatibilidad con versiones anteriores del motor 2D, lo que permitió que los juegos y aplicaciones compilados de BlitzPlus se ejecutaran en sistemas que tal vez solo tuvieran DirectX 1.
Paradigma | imperativo , orientado a objetos , modular , reflexivo |
---|---|
Diseñado por | Marcar Sibly |
Revelador | Investigación Blitz Ltd. |
Apareció por primera vez | 2004 |
Versión final | 1.51 / 21 de septiembre de 2015 ( 21-09-2015 ) |
Disciplina de mecanografía | Estático , Débil , Fuerte (opcional) |
Sistema operativo | Microsoft Windows , Mac OS X , Linux |
Sitio web | www.blitzbasic.com |
Dialectos | |
BlitzMax oficial, bmx-ng | |
Influenciado por | |
Blitz básico | |
Influenciado | |
Mono |
El primer compilador BlitzMax fue lanzado en diciembre de 2004 para Mac OS X. Esto lo convirtió en el primer dialecto Blitz que podía compilarse en plataformas *nix. Los compiladores para Microsoft Windows y Linux fueron lanzados posteriormente en mayo de 2005. BlitzMax trajo el cambio más grande de la estructura del lenguaje a la gama moderna de productos Blitz al extender el sistema de tipos para incluir conceptos orientados a objetos y modificar la API de gráficos para adaptarse mejor a OpenGL . BlitzMax también fue el primero de los lenguajes Blitz en representar cadenas internamente utilizando UCS-2 , lo que permitió soporte nativo para literales de cadena compuestos de caracteres no ASCII .
El conjunto de comandos de BlitzMax, independiente de la plataforma, permite a los desarrolladores compilar y ejecutar código fuente en múltiples plataformas. Sin embargo, el compilador oficial y la cadena de compilación solo generarán binarios para la plataforma en la que se ejecuta. De manera extraoficial, los usuarios han podido lograr que Linux y Mac OS X se compilen de manera cruzada con la plataforma Windows.
BlitzMax es también la primera versión modular de los lenguajes Blitz, mejorando la extensibilidad del conjunto de comandos. Además, todos los módulos estándar que se entregan con el compilador son de código abierto y, por lo tanto, el programador puede modificarlos y volver a compilarlos si es necesario. El módulo GUI multiplataforma oficial de BlitzMax (conocido como MaxGUI) permite a los desarrolladores escribir interfaces GUI para sus aplicaciones en Linux ( FLTK ), Mac ( Cocoa ) y Windows. Varios módulos contribuidos por los usuarios extienden el uso del lenguaje al incluir bibliotecas como wxWidgets , Cairo y Fontconfig , así como una selección de módulos de base de datos. También hay una selección de módulos 3D de terceros disponibles, a saber, MiniB3D [5] , un motor OpenGL de código abierto que se puede compilar y utilizar en las tres plataformas compatibles con BlitzMax.
En octubre de 2007, se lanzó BlitzMax 1.26, que incluía la incorporación de un módulo de reflexión . [6] BlitzMax 1.32 incluía nuevos módulos de subprocesamiento y scripting Lua y la mayoría de las funciones de la biblioteca estándar se han actualizado para que sean compatibles con Unicode . [7]
Blitz3D SDK es un motor de gráficos 3D basado en el motor de Blitz3D. Se comercializó para su uso con C++ , C# , BlitzMax y PureBasic , aunque también se puede utilizar con otros lenguajes que siguen convenciones de llamada compatibles.
En 2008, se publicó el código fuente de Max3D (un motor 3D multiplataforma basado en C++) bajo una licencia BSD . Este motor se centraba en OpenGL, pero tenía un backend abstracto para otros controladores gráficos (como DirectX) y utilizaba varias bibliotecas de código abierto, a saber, Assimp , Boost y ODE .
A pesar del entusiasmo que había en la comunidad Blitz por el esperado sucesor de Blitz3D, el interés y el apoyo se desvanecieron poco después de que se publicara el código fuente y, finalmente, el desarrollo se detuvo. No hay indicios de que Blitz Research retomará el proyecto.
BlitzPlus fue lanzado como código abierto el 28 de abril de 2014 bajo la licencia zlib en GitHub . [8] [9] Blitz3D siguió poco después y fue lanzado como código abierto el 3 de agosto de 2014. [10] [11] BlitzMax fue lanzado más tarde como código abierto el 21 de septiembre de 2015. [12]
Blitz Basic 2.1 fue bien recibido por las revistas de Amiga. CU Amiga destacó su capacidad para crear aplicaciones y juegos compatibles con AmigaOS (a diferencia de AMOS Basic ) [13] y Amiga Shopper lo calificó como un lenguaje de programación poderoso. [14]
Un programa "¡Hola, mundo!" que imprime en la pantalla, espera hasta que se presione una tecla y luego finaliza:
Imprimir "¡Hola, mundo!" ; Imprime en la pantalla. WaitKey () ; Pausa la ejecución hasta que se presiona una tecla. End ; Finaliza el programa.
Programa que demuestra la declaración de variables utilizando los tres tipos de datos principales ( cadenas , enteros y flotantes ) e imprimiéndolos en la pantalla:
nombre $ = "John" ; Crea una variable de cadena ($) edad = 36 ; Crea una variable entera (sin sufijo) temperatura # = 27.3 ; Crea una variable flotante (#) print "Mi nombre es " + nombre $ + " y tengo " + edad + " años." print "Hoy, la temperatura es " + temperatura # + " grados." Waitkey () ; Pausa la ejecución hasta que se presione una tecla. End ; Finaliza el programa.
Programa que crea una aplicación con ventanas que muestra la hora actual en formato binario y decimal. Vea a continuación las versiones de BlitzMax y BlitzBasic:
Versión BlitzBasic | Versión BlitzMax |
---|---|
AppTitle "Reloj binario" Gráficos 150 , 80 , 16 , 3 ;crea un temporizador que significa que el bucle principal se ejecutará dos veces por segundo secondtimer = CreateTimer ( 2 ) Repetir Hora = Izquierda ( Hora actual $ (), 2 ) Minuto = Medio ( Hora actual $ (), 4 , 2 ) Segundo = Derecha ( Hora actual $ (), 2 ) Si Hora >= 12 Entonces PM = 1 Si Hora > 12 Entonces Hora = Hora - 12 Si Hora = 0 Entonces Hora = 12 ;debería hacer esto, de lo contrario, el punto PM quedará visible una vez que el reloj pase la medianoche. Color ( 0 , 255 , 0 ) ; hace que el texto sea verde para la parte PM Si PM = 1 Entonces Texto 5 , 5 , "PM" ; establece el color del texto nuevamente en blanco para el resto Color ( 255 , 255 , 255 ) Para bit = 0 a 5 xpos = 20 * ( 6 - bit ) máscara binaria = 2 ^ bit ;hacer horas Si ( bit < 4 ) Si ( hora Y binaryMask ) Texto xpos , 5 , "1" De lo contrario Texto xpos , 5 , "0" FinSi FinSi ;hacer los minutos Si ( minuto Y binaryMask ) Texto xpos , 25 , "1" De lo contrario Texto xpos , 25 , "0" FinSi ;hacer los segundos Si ( segundo Y binaryMask ) Texto xpos , 45 , "1" De lo contrario Texto xpos , 45 , "0" FinSi Siguiente ;haz que el texto sea rojo para el tiempo decimal Color ( 255 , 0 , 0 ) Texto 5 , 65 , "Decimal: " + CurrentTime $ () ;establece el texto nuevamente en blanco para el resto Color ( 255 , 255 , 255 ) ;esperará medio segundo WaitTimer ( secondTimer ) Para siempre | Importar BRL.Timer Importar BRL.TimerDefault AppTitle = "Reloj binario" Gráficos 145 , 85 'crea un temporizador que significa que el bucle principal se 'ejecutará dos veces por segundo Temporizador de segundo local : TTimer = CreateTimer ( 2 ) Hora local : Int Minuto local : Int Segundo local : Int PM local : Int bit local : Int xpos local : Int Máscara binaria local : Int Repetir Hora = HoraActual ()[. .2 ] .ToInt () Minuto = HoraActual ( ) [ 4 . .6 ] .ToInt () Segundo = HoraActual ( ) [ 6 . . ] . ToInt () Si Hora >= 12 Entonces PM = 1 Si Hora > 12 Entonces Hora = Hora - 12 Si Hora = 0 Entonces Hora = 12 'debería hacer esto, de lo contrario, el punto PM se quedará arriba una vez que el reloj pase la medianoche. SetColor ( 0 , 255 , 0 ) 'hace que el texto sea verde Para la parte PM Si PM = 1 Entonces DrawText "PM" , 5 , 5 'establece el color del texto nuevamente A blanco Para el resto SetColor ( 255 , 255 , 255 ) Para bit = 0 Hasta 6 xpos = 20 * ( 6 - bit ) binaryMask = 2 ^ bit 'hacer horas Si ( bit < 4 ) Si ( hora y binaryMask ) DrawText "1" , xpos , 5 De lo contrario DrawText "0" , xpos , 5 EndIf EndIf 'hacer los minutos Si ( minuto y binaryMask ) DrawText "1" , xpos , 25 De lo contrario DrawText "0" , xpos , 25 EndIf 'hacer los segundos Si ( segundo y máscara binaria ) DrawText "1" , xpos , 45 De lo contrario DrawText "0" , xpos , 45 FinSi Siguiente 'haz que el texto sea rojo Para el tiempo decimal SetColor ( 255 , 0 , 0 ) DrawText "Decimal: " + CurrentTime (), 5 , 65 'establece el texto nuevamente A blanco Para el resto SetColor ( 255 , 255 , 255 ) Voltear 'esperará medio segundo WaitTimer ( secondTimer ) Si KeyHit ( KEY_ESCAPE ) Entonces Salir para siempre |
En 2011, BRL lanzó un nuevo lenguaje de programación multiplataforma llamado Monkey y su primer módulo oficial llamado Mojo. Monkey tiene una sintaxis similar a BlitzMax, pero en lugar de compilar directamente en código ensamblador, traduce los archivos fuente de Monkey directamente en código fuente para un lenguaje, marco o plataforma elegidos, por ejemplo, Windows, Mac OS X , iOS , Android, HTML5 y Adobe Flash .
Desde 2015, el desarrollo de Monkey X se ha detenido en favor de Monkey 2, una versión actualizada del lenguaje de Mark Sibly.