PowerBASIC , anteriormente Turbo Basic , es la marca de varios compiladores comerciales de PowerBASIC Inc. que compilan un dialecto del lenguaje de programación BASIC . Existen versiones para MS-DOS y para Windows , y dos tipos de esta última: Console y Windows. La versión para MS-DOS tiene una sintaxis similar a la de QBasic y QuickBASIC . Las versiones para Windows utilizan una sintaxis BASIC ampliada para incluir muchas funciones de Windows, y las instrucciones se pueden combinar con llamadas a la API de Windows .
La primera versión del compilador DOS se publicó como BASIC/Z, el primer compilador interactivo para CP/M y MDOS. Más tarde se amplió a MS-DOS/ PC DOS y en 1987 Borland lo distribuyó como Turbo Basic .
Turbo Basic fue creado originalmente por Robert "Bob" Zale (1945–2012) y Borland se lo compró . Cuando Borland decidió dejar de publicarlo (1989), Zale se lo compró, lo rebautizó como PowerBASIC y creó PowerBASIC Inc. para continuar con el soporte y el desarrollo del mismo; más tarde se lo llamó PBDOS. [2] [3] [4]
PowerBASIC pasó a desarrollar compiladores BASIC para Windows, primero PBWIN (su producto estrella) y luego PBCC, que se describe a continuación.
El 6 de noviembre de 2012, Robert Zale, el creador de PowerBASIC, falleció. Durante un tiempo, se asumió que la empresa podría dejar de operar. Su esposa, Vivian Zale, publicó el 8 de marzo de 2014 en los foros de PowerBASIC una declaración en la que afirmaba que la empresa seguiría funcionando. [5] El 10 de mayo de 2015, Vivian Zale anunció que se seguía trabajando en nuevas versiones de compiladores PowerBASIC. [6]
El 2 de noviembre de 2016, Vivian Zale anunció su intención de buscar un comprador para la empresa.
El 31 de enero de 2017, Adam Drake anunció que Drake Software había adquirido el código fuente de PowerBASIC de PowerBASIC, Inc., con la intención de actualizar y mejorar la funcionalidad del producto. [7] Esto fue confirmado más tarde por Vivian Zale con una publicación en el foro agradeciendo a los miembros por su apoyo. [8]
Cuando Bob Zale murió, PBWin11 y PBCC7 estaban en fase de pruebas beta , y los compiladores de 64 bits y PB/Pro (PBWin y CC en un solo compilador) estaban en fase alfa . Sin embargo, el desarrollo de los productos PowerBASIC se ha detenido. No se ha publicado ninguna versión nueva desde la v10.03 (hace 11 años, a fecha de mayo de 2022). No se ha anunciado ninguna versión de 64 bits ni ninguna versión beta. No se ha informado de ninguna actividad de desarrollo. No se han publicado correcciones (como añadir la configuración de DPI correcta para el IDE). PowerBASIC Tools LLC sigue vendiendo nuevas licencias para los compiladores de Windows de 32 bits.
Los programas PowerBASIC son autónomos y no utilizan ningún archivo de tiempo de ejecución para ejecutarse. En todas las versiones del compilador, las aplicaciones se compilan sin bibliotecas externas, aunque puede utilizar dichas bibliotecas si es necesario. PBDOS crea archivos ejecutables DOS MZ de 16 bits , mientras que PBWIN y PBCC crean archivos ejecutables portátiles (PE) de 32 bits .
Turbo Basic de Borland contiene extensiones del BASIC clásico (sin romper la compatibilidad), como una API de dibujo y acceso con mouse.
A diferencia de la mayoría de las implementaciones de BASIC de su época, Turbo Basic era un compilador completo que generaba código nativo para MS-DOS. Otras implementaciones eran intérpretes o dependían en gran medida de una biblioteca de tiempo de ejecución . El entorno de desarrollo integrado podía ejecutar un programa BASIC internamente para la depuración BASIC tradicional (ver el ejemplo a continuación) o generar un archivo ejecutable independiente de MS-DOS que podía ejecutarse en otros sistemas sin el producto Turbo Basic ni las bibliotecas de tiempo de ejecución.
El siguiente programa es un ejemplo del dialecto BASIC similar a ALGOL que Turbo Basic admitía. A diferencia del BASIC tradicional, [ cita requerida ] que utilizaba números de línea y tenía estructuras de control limitadas y no admitía subrutinas similares a ALGOL, los dialectos BASIC modernos que comenzaron en este período se ampliaron para hacer que el lenguaje fuera compatible con el estilo de programación estructurada moderna al hacer que los números de línea fueran opcionales y agregar las estructuras de control y las definiciones de subrutinas necesarias para la programación estructurada.
INPUT "¿Cuál es tu nombre?: " , n$ PRINT "Hola " ; n$ DO s$ = "" INPUT "¿Cuántas estrellas quieres imprimir?" ; s FOR i = 1 TO s s$ = s$ + "*" NEXT i PRINT s$ DO INPUT "¿Quieres imprimir más estrellas?" ; q$ LOOP WHILE LEN ( q$ ) = 0 q$ = LCASE$ ( LEFT$ ( q$ , 1 )) LOOP WHILE q$ = "y" PRINT "Adiós " ; n$
( s$
es una cadena y s
es un punto flotante de precisión simple (número). Son variables separadas).
Al igual que los demás productos Borland de esta época, el código se ejecuta dentro del entorno de desarrollo integrado.
PBDOS incluye un entorno de desarrollo integrado (IDE) y es compatible con DOS 3.30 y todas las versiones posteriores. [9]
PBCC es un compilador de 32 bits para los sistemas operativos Windows 9x y Windows NT , incluidos Windows XP , Windows Server 2008 , Windows Vista y Windows 7. Las aplicaciones PBCC pueden utilizar bibliotecas de vínculos dinámicos (DLL). El compilador incluye un IDE que incluye un editor y un depurador paso a paso .
No se requieren conocimientos de programación de Windows para crear aplicaciones gráficas o en modo carácter con este compilador. Los ejecutables compilados con PBCC también se pueden utilizar como ejecutables de interfaz de puerta de enlace común (para servidores web).
PBCC solo crea archivos ejecutables, no DLL. (PBWin, consulte a continuación, puede crear ambos).
PBWin es un compilador de 32 bits compatible con los sistemas operativos de la serie Windows 9x y Windows NT , incluidos Windows XP , Windows Server 2008 , Windows Vista , Windows 7 , Windows 8 ( 8.1 ) y Windows 10. [ 10] PBWin puede crear bibliotecas de vínculos dinámicos . Las aplicaciones PBWin pueden leer bibliotecas de vínculos dinámicos. PBWin viene con un compilador, un IDE con editor y un depurador paso a paso .
Puede crear la interfaz gráfica de usuario de una aplicación utilizando la API de Windows o utilizando las extensiones de lenguaje DDT integradas. El grupo de instrucciones BASIC que encapsulan las funciones de la API de Windows , en particular en la creación y el manejo de cuadros de diálogo y controles secundarios, se conoce colectivamente como Herramientas de diálogo dinámico. El uso de DDT requiere menos codificación que la creación de un programa similar utilizando la API de Windows . El uso de DDT y la API de Windows (conocido como estilo SDK como en Microsoft Windows SDK ) no son mutuamente excluyentes.
PowerBASIC renombró PBWin v9.07 y PB/CC v5.07 como "Classic PBWin" y "Classic PB/CC", respectivamente, y el 1 de noviembre de 2016 los ofreció por un corto tiempo a través de su tienda en línea como versiones de prueba gratuitas y sin inconvenientes junto con PBForms v1.0 (PowerBASIC Forms). [11]
PowerBASIC Forms, disponible para su compra por separado, es un complemento de herramienta de diseño de interfaz gráfica de usuario para PBWin. Genera automáticamente código fuente mediante la extensión de lenguaje DDT que crea formularios utilizando la interfaz gráfica de usuario de Windows.
El Navegador COM de PowerBASIC, que viene con PBWin, es una aplicación que expone las interfaces, los métodos y las propiedades de los objetos COM, tal como se describen en los archivos de biblioteca de tipos. El Navegador COM de PowerBASIC exporta una estructura de interfaz de un objeto COM para fines de enlace temprano en el código PowerBASIC y proporciona una referencia de sintaxis y ayuda contextual sobre los miembros de la interfaz expuestos por un objeto COM. [12]
PowerBASIC es un compilador BASIC de código nativo cuyos méritos informados son la simplicidad de uso y la velocidad en comparación con otros lenguajes. [13] [14] Aunque el código compilado es lo suficientemente rápido para la mayoría de los propósitos, los compiladores también admiten ensamblador en línea que se puede utilizar para la optimización manual de rutinas críticas. Los compiladores de Windows (PBWin y PBCC) admiten casi todo el conjunto de instrucciones x86 , incluyendo FPU , SIMD y MMX , siendo las principales excepciones unas pocas que son útiles principalmente para programadores de sistemas. Se pueden insertar instrucciones no compatibles insertando sus códigos de operación con las declaraciones "db", "dw" y "dd". Las líneas de código ensamblador se pueden intercalar libremente con líneas de código BASIC, aunque siempre se deben considerar las interacciones potenciales entre los dos tipos de código.
Hola mundo se utiliza para dar un ejemplo muy pequeño de la sintaxis utilizada por un lenguaje de programación y, a menudo, es el programa más pequeño posible para cualquier lenguaje de programación determinado.
A continuación se muestra un ejemplo de un programa de Hola mundo de PBCC. De forma predeterminada, PBCC crea una ventana de consola en tiempo de ejecución para mostrar la salida. El uso de Waitkey$ en este ejemplo evita que la ventana de consola se cierre automáticamente hasta que el operador vea el texto mostrado.
Función PBMain Imprimir "¡Hola, mundo!" Waitkey $ Función final
Aquí está la versión PBWin, que muestra un cuadro de mensaje de "diálogo" de Windows.
Función PBMain MsgBox "¡Hola, mundo!" Función final
PBWin y PBCC admiten la programación orientada a objetos en forma de clases COM ; sin embargo, los compiladores no lo obligan a utilizar la programación orientada a objetos, es simplemente una opción. También se pueden crear servidores COM en proceso y fuera de proceso utilizando estos compiladores.
Tanto el compilador de consola como el compilador de Windows pueden crear ventanas gráficas. Las instrucciones GRAPHICs son de nivel superior a las funciones de la biblioteca de interfaz de dispositivo gráfico (GDI) de Windows. [15] [16]
Las VENTANAS GRÁFICAS son cuadros de diálogo dedicados que contienen cada uno un único control que llena el área de cliente del cuadro de diálogo. Los controles GRÁFICOS son ventanas secundarias que admiten la misma funcionalidad de dibujo GRÁFICO que las ventanas GRÁFICAS. También se definen MAPAS DE BITS GRÁFICOS, que también admiten la funcionalidad de dibujo GRÁFICO, pero como objetos puramente de memoria, como mapas de bits de Windows o secciones DIB . Las instrucciones de manejo del teclado y del mouse se incluyen entre las instrucciones GRÁFICAS. La salida de caracteres a un destino GRÁFICO utiliza fuentes especificadas mediante la instrucción FONT NEW.
Una VENTANA GRÁFICA es el equivalente a un cuadro de diálogo de Windows que contiene un control estático en el que se pueden realizar operaciones de dibujo. Una única instrucción BASIC creará una VENTANA GRÁFICA y especificará su tamaño, posición y título. No es esencial especificar un WNDPROC para la VENTANA GRÁFICA. A continuación se muestra un breve ejemplo de código fuente para una aplicación VENTANA GRÁFICA completa:
# Compilar Exe ' usando el compilador PBCC6 o PBWIN10 # Atenuar todo Función PBMain Local GW Como Dword ' iniciar una VENTANA GRÁFICA Ventana Gráfica Nueva "ventana gráfica" , 100 , 100 , 200 , 200 a GW ' mostrar un disco de color Elipse Gráfica ( 10 , 10 ) - ( 190 , 190 ), % rgb_Red , % rgb_SeaGreen , 0 ' esperar una pulsación de tecla Gráfica Waitkey$ Fin de función
Al utilizar las instrucciones PB GRAPHIC, primero se selecciona un GRÁFICO (VENTANA, MAPA DE BITS o control) como el destino GRAPHIC actual y luego se realizan operaciones en él sin necesidad de volver a identificarlo. Compare esto con el enfoque de la API GDI, donde se requiere el identificador de contexto del dispositivo para cada operación de dibujo.
No es necesario, al utilizar las instrucciones PB GRAPHIC, definir un pincel o una pluma como una entidad separada, ni tampoco es necesario volver a dibujar el objetivo GRAPHIC (cuando está a la vista) en respuesta a mensajes de Windows como WM_PAINT y WM_ERASEBKGND. Los objetivos GRAPHIC son persistentes.
Cuando se adjuntan objetivos GRAPHIC, se puede especificar una opción REDRAW que almacena en búfer los resultados de las operaciones de dibujo hasta que se soliciten específicamente. El uso de esta técnica reduce el parpadeo de una manera similar a la técnica de dibujo en controladores de dominio de memoria [17] cuando se utiliza la API GDI.
Las operaciones con píxeles son posibles mediante las instrucciones GRAPHIC GET|SET PIXEL, de manera similar a GetPixel/SetPixel de la API GDI. GRAPHIC GET BITS permite cargar el mapa de bits completo en una cadena dinámica. Esta se puede manipular como una cadena o asignándole una matriz. Se puede volver a colocar en el destino GRAPHIC mediante GRAPHIC SET BITS.
Las declaraciones GRAPHIC contienen todas las funciones de API GDI comúnmente utilizadas, pero si necesita una que no está incluida, es posible obtener el hDC de cualquier objetivo GRAPHIC y así utilizar las funciones de API GDI en él.
PowerBASIC ofrece un foro en línea para que los usuarios hagan preguntas y compartan conocimientos. [18] El 8 de julio de 2012, el foro tenía 5.623 miembros (solo una fracción de ellos todavía activos) y contenía 50.093 hilos que comprendían 408.642 publicaciones desde el 26 de agosto de 1998. Solo la sección de Código fuente contenía 3.768 hilos. [19]
A principios de 2024, el sitio web de PowerBASIC pasó a modo de mantenimiento. Esto se debatió mucho en los foros de PB. El propietario de los derechos escribió que el sitio web no volverá a funcionar.[1]