PureBasic
PureBasic es un lenguaje de programación informática de procedimientos y un entorno de desarrollo integrado distribuido comercialmente basado en BASIC y desarrollado por Fantaisie Software para Windows, Linux y macOS. Hay disponible una versión de Amiga, aunque se ha descontinuado y algunas partes se publican como código abierto. El primer lanzamiento público de PureBasic para Windows fue el 17 de diciembre de 2000. Desde entonces, se ha actualizado continuamente.
PureBasic tiene un "modelo de licencia de por vida". Como se cita en el sitio web, el primer usuario de PureBasic (que se registró en 1998) todavía tiene acceso gratuito a nuevas actualizaciones y esto no va a cambiar.
PureBasic compila directamente en conjuntos de instrucciones IA-32, x86-64, PowerPC o 680x0, lo que genera pequeños ejecutables independientes y DLL que no necesitan bibliotecas de tiempo de ejecución más allá de las bibliotecas estándar del sistema. Los programas desarrollados sin usar las interfaces de programación de aplicaciones (API) específicas de la plataforma se pueden compilar fácilmente a partir del mismo archivo fuente con poca o ninguna modificación.
PureBasic admite ensamblaje en línea, lo que permite al desarrollador incluir comandos del ensamblador FASM dentro del código fuente de PureBasic, mientras usa las variables declaradas en el código fuente de PureBasic, lo que permite a los programadores experimentados mejorar la velocidad de las secciones de código críticas para la velocidad. PureBasic admite y ha integrado el entorno 3D de OGRE. Otros entornos 3D, como Irrlicht Engine, no son oficialmente compatibles.
Lenguaje de programación
Características
PureBasic es un compilador BASIC nativo multiplataforma de 32 y 64 bits. Los sistemas compatibles actualmente son Windows, Linux, macOS. La versión de AmigaOS es heredada y de código abierto. El compilador produce ejecutables nativos y la sintaxis de PureBasic es simple y directa, comparable a C simple sin corchetes y con manejo nativo de cadenas Unicode y una gran biblioteca de funciones de soporte integradas. Puede compilar aplicaciones de consola, aplicaciones GUI y archivos DLL.
Ejemplo de Hola Mundo
La siguiente línea de código PureBasic creará un ejecutable x86 independiente (4,5 KiB (4608 bytes) en la versión de Windows) que muestra un cuadro de mensaje con el texto "Hello World".
MensajeRequester()"Message Box", "Hola Mundo")
Y la siguiente variante del mismo código, que en su lugar utiliza una llamada a la API de Windows en línea sin necesidad de declaraciones u otras referencias externas, creará un ejecutable x86 independiente de 2,0 KiB (2048 bytes) aún más pequeño para Windows.
MensajeBox_()0, "Hola Mundo", "Message Box", 0)
La siguiente es una versión de consola del ejemplo de Hello World.
OpenConsole() ; Abrir una ventana de consola. Imprimir()"¡Hola, Mundo!")
Programación de procedimientos
PureBasic es un "BÁSICO de segunda generación" lenguaje, con condicionales estructurados y bucles, y soporte de programación orientada a procedimientos. El usuario no está obligado a utilizar procedimientos, por lo que un programador puede optar por un estilo de codificación que incluye Goto, Gosub Label y Return.
A continuación se muestra un procedimiento de muestra para clasificar una matriz, aunque SortArray ahora es una función integrada de PureBasic.
Procedimiento burbuja #()Array a()1) Protegido i, Tema Conde, haChanged Tema Conde = ArraySize()a()) Repito haChanged = #Falso Tema Conde - 1 Para i = 0 A Tema Conde Si a()i) ■ a()i + 1) Swap a()i), a()i + 1) haChanged = #Cierto. EndIf Siguiente Hasta luego haChanged = #Falso EndProcedimiento
A continuación se muestra un programa de muestra que muestra un editor de texto de gran tamaño con dos elementos de menú.
;Crear ventana:OpenWindow()0, #PB_Ignore, #PB_Ignore, 800, 600, "Simple Text Editor", #PB_Window_SystemMenu Silencio #PB_Window_MinimizeGadget Silencio #PB_Window_MaximizeGadget Silencio #PB_Window_SizeGadget);Añadir 2 menús:CreateMenu()0, WindowID()0)MenuItem()1, "Tumba")MenuItem()2, "Cancel");Add Editor:EditorGadget()0, 0, 0, 0, 0)SetGadgetFont()0, LoadFont()0, "Courier New", 10);Proceso de mensajes de ventana hasta cerrado:Repito Seleccione WaitWindow Evento() Caso #PB_Event_Menu Seleccione EventMenu() Caso 1: MensajeRequester()"OK hizo clic directamente o con 'fr' mnemonic.", GetGadgetText()0) Caso 2: Break EndSelect Caso #PB_Event_SizeWindow: ResizeGadget()0, 0, 0, VentanaWidth()0, #PB_Window_InnerCoordinate), VentanaAltura()0, #PB_Window_InnerCoordinate) Caso #PB_Event_CloseWindow: Break EndSelectForEver
Tenga en cuenta que PureBasic no evita las comillas dobles en las cadenas, por lo que deben concatenarse con Chr(34).
Programación orientada a objetos
Fred, el desarrollador de PureBasic, ha declarado que PureBasic nunca estará orientado a objetos. Sin embargo, numerosos usuarios han creado sistemas de soporte orientados a objetos.
Tipos de datos
Tipo de dato variable especificado cuando lo usa por primera vez (y opcionalmente, en el futuro), y está separado del nombre del punto. Hay un conjunto de tipos básicos: .f,.d (números flotantes y dobles), .b,.c,.w,. l,.q (enteros - de un solo byte y 8 bytes), .s - cadenas.
Tipo | Suffix | Uso de la memoria | Rango numérico |
---|---|---|---|
Byte | b | 1 byte (8 bits) | - 1 - 28... +127 |
Ascii | a | 1 byte (8 bits) | 0... +255 |
Cara | c | 1 byte (8 bits) (ascii) | 0... +255 |
Palabra | w | 2 bytes (16 bits) | −32768... +32767 |
Unicode | u | 2 bytes (16 bits) | 0... +65535 |
Cara | c | 2 bytes (16 bits) (unicode) | 0... +65535 |
Largo | l | 4 bytes (32 bits) | −2147483648... +2147483647 |
Integer | i | 4 bytes (32 bits) x86 | −2147483648... +2147483647 |
Float | f | 4 bytes (32 bits) | Dependiendo de la proporción del número decimal. |
Integer | i | 8 bytes (64 bits) x64 | −9223372036854775808... +9223372036854775807 |
Quad | q | 8 bytes (64 bits) | −9223372036854775808... +9223372036854775807 |
Doble | d | 8 bytes (64 bits) | Dependiendo de la proporción del número decimal. |
String | s | (Longitud de cuerda + 1) * Tamaño(Característica) | No hay límite. |
Pendiente fija | S{length} | * Tamaño(Característica) | No hay límite. |
- Nota: Len(String) utilizado para contar la longitud de una cadena no excederá el primer carácter nulo (Chr(0)).
Además de los tipos básicos, el usuario puede definir el tipo de construcción mediante
Tipo de estructura_nombre
field_name.type; Campo único. Tal vez el apego de las estructuras.
field_name[count].type; arrays estáticos.
;
; Estructura de construcción opcionalUnion. EndStructureUnion te permite
; combinar múltiples campos en un área de memoria
; a veces es necesario para los tipos de conversión.
EstructuraUnión
type_name.type
;
EndStructureUnion
EndStructure
Las variables pueden ser simples (en realidad, variables estándar), matrices dinámicas (declaradas usando el directorio Dim var_name.tipo_nombre (tamaño1, tamaño2, ... )
, una lista enlazada (Lista() nombre_var.tipo_nombre
), una matriz asociativa (en nuevas versiones del lenguaje) (Mapa var_name.type_name()
)
Diseñador de formularios RAD
PureBasic tiene su propio diseñador de formularios para ayudar en la creación de formularios para aplicaciones, pero también hay disponibles otras soluciones de terceros. El Diseñador visual no integrado original fue reemplazado por un nuevo Diseñador de formularios integrado el 14 de febrero de 2013.
Comunidad de usuarios
PureBasic proporciona un foro en línea para que los usuarios hagan preguntas y compartan conocimientos. El 6 de mayo de 2013, el foro en inglés tenía 4.769 miembros y contenía 44.043 hilos que comprendían 372.200 publicaciones desde el 17 de mayo de 2002.
Numerosos sitios para compartir código muestran que PureBasic se utiliza para crear herramientas y juegos de una manera rápida y sencilla, y compartir grandes cantidades de código de fuente abierta.
Contenido relacionado
X.500
Algoritmo de firma digital
Trazado de rayos (gráficos)