Home & Login
 
 
Main Menu
Home
Freeware Applications
Just for Fun
La Armónica
PureBasic
FAQ
Contact me
About...
Donate
Support this personal site. Even 1€ is fine! Click on the icon below to donate.

 
 
PureBasic
Introducción a PureBasic

Sabiendo que Microsoft deja de dar soporte a Visual Basic 6 de manera definitiva en marzo de este año (2008), era necesario buscar una alternativa similar. PureBasic es un lenguaje de programación estructurada basado en Basic. Para los antiguos desarrolladores de Visual Basic 6 eventuales o por hobby, resulta la alternativa perfecta. Aunque es  un lenguaje estructurado, al contrario que Visual Basic, que es bastante orientado a objetos (sin entrar en detalles) y esto puede parecer un paso atrás, no lo es tanto si se considera la potencia que ofrece y la facilidad de uso a un precio muy competitivo (99$). Además el precio incluye todas las actualizaciones futuras.

Existen multitud de sitios en la web que hablan de PureBasic, pero ninguno en español y ninguno que esté orientado a la migración de Visual Basic a PureBasic.

Para empezar, mostraremos el ejemplo más conocido de mostrar un mensaje de "Hola, mundo".

En Visual Basic:

  MsgBox "HOLA", vbOKOnly, "Hola, Mundo"

 En PureBasic:

   MessageRequester("HOLA", "Hola, mundo",#PB_MessageRequester_Ok) 

Con sólo estas líneas ya se pueden observar varias diferencias importantes:

1.- Las constantes internas en VB empiezan por "vb", mientras que en PureBasic empiezan por "#PB_".
2.- Las constantes se identifican en PureBasic  porque empiezan por "#". En Visual Basic no tienen una identificación sintática.
3.- En Visual  Basic  se distingue entre funciones y subprocedimientos. Las funciones devuelven un valor, mientras que los subprocedimientos no. Los subprocedimientos no tienen los parámetros entre paréntesis, mientras que las funciones sí. Adicionalmente, se puede realizar una llamada a una función sin esperar un valor, simplemente no incluyendo los parámetros entre paréntesis, como es el caso del ejemplo. En PureBasic, sólo existen procedimientos, que siempre devuelven un valor. Sin embargo, se puede llamar a un procedimiento sin esperar un valor. Para ello no es necesario alterar la sintaxis de la llamada.

Otra versión del mismo código, usando una variable para almacenar el valor de retorno:

 En Visual Basic:

  Dim Resultado As VbMsgBoxResult
  Resultado = MsgBox("HOLA", vbOKOnly, "Hola, Mundo")

En PureBasic:

   Define Resultado.l
   Resultado=MessageRequester("HOLA", "Hola, mundo",#PB_MessageRequester_Ok) 

En esta nueva versión se muestra cómo se definen variables en PureBasic. El punto separa el nombre de la variable del tipo de dato. En el caso de un long, se indica con "l".

 


 

Aunque en el ejemplo los dos lenguajes parezcan muy similares, hay que considerar también el código que generan automáticamente por detrás cada uno de los IDEs. Si por ejemplo queremos crear un formulario con un botón en medio que muestre el mensaje al hacer clic sobre él, en Visual Basic tendríamos:

VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   3090
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   3090
   ScaleWidth      =   4680
   StartUpPosition =   3  'Windows Default'
   Begin VB.CommandButton Command1 
      Caption         =   "Command1"
      Height          =   675
      Left            =   1380
      TabIndex        =   0
      Top             =   1020
      Width           =   1755
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Sub Command1_Click()

  MsgBox "Hola, mundo", vbOKOnly, "Hola, Mundo"

 
End Sub

Mientras que en PureBasic tenemos:

 
EnableExplicit
;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Button_0
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 450, 200, 317, 250, "Window_0",
#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
If CreateGadgetList(WindowID(#Window_0)) ButtonGadget(#Button_0, 85, 95, 140, 45, "Gadget_0") EndIf EndIf EndProcedure
OpenWindow_Window_0()
;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #Button_0 

        MessageRequester("HOLA", "Hola, mundo",#PB_MessageRequester_Ok )

 
      EndIf
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}

 Es importante destacar que en ambos casos el código de generación de la ventana ha sido generado por el propio IDE y que lo único que ha sido necesario teclear en ambos casos ha sido el comando para mostrar el mensaje.

El código de PureBasic puede asustar en un primer momento, dado que en Visual Basic el código de generación del formulario está oculto y no se ve desde el IDE sino como propiedades en la ventana de propiedades. En PureBasic todo es código. Esto le proporciona mayor flexibilidad, aunque para ello también añade complejidad. Para los programadores avanzados de Visual Basic, que se lamentaban de las limitaciones del lenguaje, PureBasic aparece como un aire fresco, dado que en cierta manera incorpora las ventajas de C con la simplicidad de un Basic.

 Observando el código de arriba, podemos establecer un paralelismo entre "form" de VB y "window" de PB, así como "control" de VB y "gadget" de PB.  Sin embargo, el salto más grande para los desarrolladores en Visual Basic es la gestión de eventos. En Visual Basic el código asociado a un evento se coloca en el procedimiento correspondiente al evento, que aparece en la lista asociada al control. En PureBasic, es necesario tener un bucle que capture el evento mediante la funcíón WaitWindowEvent() y verifique el evento que ha ocurrido mediante una sentencia case. El número de eventos por defecto de PureBasic, aunque bastante limitado, es suficiente para la mayoría de aplicaciones y puede expandirse usando funciones de la API de Windows. Aqué es necesario destacar que el uso de las funciones de la API de Windows es mucho más sencillo que en VB, ya que no es necesario incluir una sentencia Declare, ya que todas las funciones de la API de Windows están pre-declaradas. Hay que tener en cuenta que la versión de prueba que se puede descargar de la página web de PureBasic no permite realizar llamadas a las funciones de la API de Windows.

 Como ejemplo de la potencia de PureBasic, podéis comparar estas dos versiones de RebCalendar. Una, hecha con Visual Basic y la otra con PureBasic.

 
 Download RebCalendar

 Download RebCalendar (PureBasic)
 
 
 
 
 
Go to top of page  Home & Login | Freeware Applications | Just for Fun | La Armónica | PureBasic | FAQ | Contact me | About... |