PureBasic es un lenguaje de programación informática procedimental distribuido comercialmente y un entorno de desarrollo integrado basado en BASIC y desarrollado por Fantaisie Software para Windows 32/64 bits, Linux 32/64 bits y macOS . Una Amiga versión disponible, aunque ha sido descontinuado y algunas partes de ella se liberan en forma de 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.
Paradigma | estructurado , imperativo , procedimental |
---|---|
Familia | BÁSICO |
Diseñada por | Software de fantasía |
Desarrollador | Software de fantasía |
Apareció por primera vez | 1998 (AmigaOS) 2000 (Windows) |
Lanzamiento estable | 5.73 LTS / 23 de noviembre de 2020 |
SO | multiplataforma : Microsoft Windows , Linux , macOS (activo) AmigaOS (descontinuado, código abierto ) |
Licencia | comercial |
Extensiones de nombre de archivo | .pb, .pbi, .pbf, .pbp, .pbv |
Sitio web | www |
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. [1]
PureBasic compila directamente en conjuntos de instrucciones x86 , x86-64 , PowerPC o 680x0 , generando pequeños archivos 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 utilizar las interfaces de programación de aplicaciones (API) específicas de la plataforma se pueden construir fácilmente desde el mismo archivo fuente con poca o ninguna modificación.
PureBasic admite el ensamblaje en línea , lo que permite al desarrollador incluir comandos de ensamblador FASM dentro del código fuente de PureBasic, mientras utiliza 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 OGRE 3D. Otros entornos 3D, como Irrlicht Engine, son compatibles de forma no oficial.
Lenguaje de programación
Caracteristicas
PureBasic es un compilador BASIC nativo multiplataforma de 32 bits y 64 bits. Los sistemas admitidos 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 los corchetes y con manejo nativo de cadenas Unicode y una gran biblioteca de funciones de soporte integradas. [2] Puede compilar aplicaciones de consola, [3] aplicaciones GUI, [4] y archivos DLL. [5]
Ejemplo de Hello World
La siguiente línea única de código PureBasic creará un ejecutable x86 independiente (4,5 KiB (4.608 bytes) en la versión de Windows) que muestra un cuadro de mensaje con el texto " Hola mundo ".
MessageRequester ( "Cuadro de mensaje" , "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.
MessageBox_ ( 0 , "Hola mundo" , "Cuadro de mensaje" , 0 )
La siguiente es una versión de consola del ejemplo de Hello World.
OpenConsole () ; Abra una ventana de la consola. Imprimir ( "¡Hola, mundo!" )
Programación procedimental
PureBasic es un lenguaje "BÁSICO de segunda generación", con condicionales y bucles estructurados, y compatibilidad con 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 incluya Goto, Gosub Label y Regreso .
A continuación se muestra un procedimiento de muestra para ordenar una matriz, aunque ahora SortArray es una función integrada de PureBasic.
Procedimiento bubbleSort ( Matriz a ( 1 )) Protegido i , itemCount , hasChanged itemCount = ArraySize ( a ()) Repetir hasChanged = # Falso itemCount - 1 Para i = 0 para itemCount Si a ( i ) > a ( i + 1 ) Intercambiar a ( i ), a ( i + 1 ) hasChanged = # Verdadero Terminara si próximo Hasta hasChanged = # False EndProcedure
A continuación se muestra un programa de muestra que muestra un editor de texto considerable con dos elementos de menú.
; Crear ventana: OpenWindow ( 0 , # PB_Ignore , # PB_Ignore , 800 , 600 , "Editor de texto simple" , # PB_Window_SystemMenu | # PB_Window_MinimizeGadget | # PB_Window_MaximizeGadget | # PB_Window_SizeGadget ); Agregar 2 menús: CreateMenu ( 0 , WindowID ( 0 )) MenuItem ( 1 , "& OK" ) MenuItem ( 2 , "& Cancel" ); Agregar editor: EditorGadget ( 0 , 0 , 0 , 0 , 0 ) SetGadgetFont ( 0 , LoadFont ( 0 , "Courier New" , 10 )); Procesar los mensajes de la ventana hasta que se cierre: Repetir Seleccionar WaitWindowEvent () Caso # PB_Event_Menu Seleccionar EventMenu () Caso 1 : MessageRequester ( "Aceptar directamente o con '&' mnemónico." , GetGadgetText ( 0 )) Caso 2 : Break EndSelect Caso # PB_Event_SizeWindow : ResizeGadget ( 0 , 0 , 0 , WindowWidth ( 0 , # PB_Window_InnerCoordinate ), WindowHeight ( 0 , # PB_Window_InnerCoordinate )) Caso # PB_Event_CloseWindow : Break EndSelect ForEver
Tenga en cuenta que PureBasic no escapa a 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 . [6] Sin embargo, numerosos usuarios han creado sistemas de soporte orientados a objetos. [7] [8] [9]
Tipos de datos
Tipo de datos 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 de 8 bytes), .s - cadenas.
Tipo | Sufijo | Uso de memoria | Rango numérico |
---|---|---|---|
Byte | B | 1 byte (8 bits) | −128 ... +127 |
Ascii | a | 1 byte (8 bits) | 0 ... +255 |
Personaje | C | 1 byte (8 bits) (ascii) | 0 ... +255 |
Palabra | w | 2 bytes (16 bits) | −32768 ... +32767 |
Unicode | tu | 2 bytes (16 bits) | 0 ... + 65535 |
Personaje | C | 2 bytes (16 bits) (unicode) | 0 ... + 65535 |
Largo | l | 4 bytes (32 bits) | −2147483648 ... +2147483647 |
Entero | I | 4 bytes (32 bits) x86 | −2147483648 ... +2147483647 |
Flotador | F | 4 bytes (32 bits) | Dependiendo de la proporción del número decimal. |
Entero | I | 8 bytes (64 bits) x64 | −9223372036854775808 ... +9223372036854775807 |
Patio | q | 8 bytes (64 bits) | −9223372036854775808 ... +9223372036854775807 |
Doble | D | 8 bytes (64 bits) | Dependiendo de la proporción del número decimal. |
Cuerda | s | (Longitud de cadena + 1) * SizeOf (Carácter) | Sin límite. |
Cuerda fija | s {longitud } | (Longitud de la cadena) * SizeOf (Carácter) | Sin límite. |
- Nota: Len (String) usado 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
Estructura type_name field_name.type; Campo único. Quizás el apego a las estructuras. nombre_campo [recuento] .tipo; Matrices estáticas. ; ... ; Construcción opcional StructureUnion .. EndStructureUnion le permite ; para combinar varios campos en un área de memoria ; que a veces es necesario para los tipos de conversión. EstructuraUnión type_name.type ; ... EndStructureUnion Estructura final
Las variables pueden ser simples (en realidad, variables estándar), matriz dinámica (declarada usando , una lista vinculada ( ), una matriz asociativa (en nuevas versiones del lenguaje) ( )Dim var_name.type_name (size1, size2, ... )
List() var_name.type_name
Map 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. [10] [11] [12] El diseñador visual no integrado original fue reemplazado por un nuevo diseñador de formularios integrado el 14 de febrero de 2013. [13]
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 44.043 hilos que comprenden 372.200 mensajes desde el 17 de mayo de 2002. [14]
Numerosos sitios de intercambio de código muestran que PureBasic se usa para crear herramientas [15] y juegos de una manera rápida y fácil, [16] y compartir grandes cantidades de código de fuente abierta. [17]
Otras lecturas
- Willoughby, Gary (2006). Purebasic: una guía para principiantes en programación de computadoras . ISBN 1-4276-0428-2.
- Logsdon, John. Programación de juegos de desplazamiento 2D .Este libro ahora se puede descargar gratuitamente
- Compiladores básicos: QuickBASIC, PureBasic, PowerBASIC, Blitz Basic, XBasic, Turbo Basic, Visual Basic, FutureBASIC, REALbasic, FreeBASIC . ISBN 1-155-32445-5.
Referencias
- ^ Preguntas frecuentes sobre los detalles de la licencia de por vida
- ^ Página de inicio de PureBasic
- ^ PureBasic - Consola
- ^ PureBasic - Gadget
- ^ Construyendo una DLL
- ^ PureBasic no estará orientado a objetos
- ^ PureObject: compatibilidad con PureBasic OOP
- ^ Tutorial de programación orientada a objetos
- ^ Otro precompilador de programación orientada a objetos
- ^ PureVision , diseño de formularios profesionales para PureBASIC.
- ^ ProGUI , biblioteca DLL que comprende más de 100 comandos bien documentados para incorporar rápidamente componentes GUI enriquecidos y personalizables en sus aplicaciones.
- ^ PureFORM , diseñador de formularios Freeware.
- ^ Lanzamiento de PureBasic 5.10
- ^ Foro en inglés , foro oficial.
- ^ Páginas de software de Horst Schaeffer
- ^ PureArea
- ^ Archivo de código de Andre Beer.
Referencias generales
- Hale Ligh, Michael (2010). Herramientas del libro de cocina de los analistas de malware para frustrar ataques maliciosos . Indianápolis, IN: John Wiley & Sons Inc. pág. 241. ISBN 0-470-61303-3.
- Galbreath, Nick (2002). Criptografía para aplicaciones de Internet y bases de datos: desarrollo de técnicas de clave pública y secreta con Java . Indianápolis, Indiana: Wiley. págs. 300 . ISBN 978-0-471-21029-0.
- "Aprendiendo a descifrar el código" . Diario varonil . 25 de junio de 2004.
- Georges, Philippe. "La programmation avec PureBasic" . PROgrammez (141).
- Svoboda, Luboš (2012). Překvapivý PureBasic (Sorprendente PureBasic: un libro electrónico checo para posibles usuarios de PureBasic) . pag. 89.
enlaces externos
- Página web oficial
- Foros oficiales de Purebasic (inglés)
- PureBasic en Curlie
- Artículos
- PureBasic: el lenguaje de desarrollo nativo y multiplataforma perfecto (2015)
- Una pequeña reseña de PureBasic (2019)
- Bibliotecas y archivos de código fuente abierto
- Archivo de código PB Open Source de Andre Beer