Visual Basic ( VB ), originalmente llamado Visual Basic .NET ( VB.NET ), es un lenguaje de programación multiparadigma orientado a objetos , implementado en .NET , Mono y .NET Framework . Microsoft lanzó VB.NET en 2002 como sucesor de su lenguaje Visual Basic original , cuya última versión fue Visual Basic 6.0. Aunque la parte ".NET" del nombre se eliminó en 2005, este artículo utiliza "Visual Basic [.NET]" para referirse a todos los lenguajes de Visual Basic lanzados desde 2002, con el fin de distinguirlos del Visual Basic clásico . Junto con C# y F# , es uno de los tres lenguajes principales que apuntan al ecosistema .NET. Microsoft actualizó su estrategia de lenguaje VB el 6 de febrero de 2023, indicando que VB es un lenguaje estable ahora y Microsoft seguirá manteniéndolo. [6]
El entorno de desarrollo integrado (IDE) de Microsoft para desarrollar en Visual Basic es Visual Studio . La mayoría de las ediciones de Visual Studio son comerciales ; las únicas excepciones son Visual Studio Express y Visual Studio Community , que son freeware . Además, el SDK de .NET Framework incluye un compilador de línea de comandos freeware llamado vbc.exe. Mono también incluye un compilador de línea de comandos VB.NET.
Visual Basic se utiliza a menudo junto con la biblioteca de GUI de Windows Forms para crear aplicaciones de escritorio para Windows . La programación para Windows Forms con Visual Basic implica arrastrar y soltar controles en un formulario mediante un diseñador de GUI y escribir el código correspondiente para cada control.
La biblioteca Windows Forms se utiliza con mayor frecuencia para crear interfaces GUI en Visual Basic. Todos los elementos visuales de la biblioteca de clases Windows Forms se derivan de la clase Control. Esta proporciona la funcionalidad mínima de un elemento de interfaz de usuario, como ubicación, tamaño, color, fuente, texto, así como eventos comunes como hacer clic y arrastrar/soltar. La clase Control también tiene soporte de acoplamiento para permitir que un control reorganice su posición debajo de su elemento principal.
Los formularios se diseñan normalmente en el IDE de Visual Studio . En Visual Studio, los formularios se crean utilizando técnicas de arrastrar y soltar . Se utiliza una herramienta para colocar controles (por ejemplo, cuadros de texto, botones, etc.) en el formulario (ventana). Los controles tienen atributos y controladores de eventos asociados a ellos. Los valores predeterminados se proporcionan cuando se crea el control, pero el programador puede cambiarlos. Muchos valores de atributos se pueden modificar durante el tiempo de ejecución en función de las acciones del usuario o los cambios en el entorno, lo que proporciona una aplicación dinámica. Por ejemplo, se puede insertar código en el controlador de eventos de cambio de tamaño del formulario para cambiar la posición de un control de modo que permanezca centrado en el formulario, se expanda para rellenar el formulario, etc. Al insertar código en el controlador de eventos para una pulsación de tecla en un cuadro de texto, el programa puede traducir automáticamente el caso del texto que se está introduciendo o incluso evitar que se inserten determinados caracteres.
Visual Basic utiliza instrucciones para especificar acciones. La instrucción más común es una instrucción de expresión, que consiste en una expresión que se evaluará en una sola línea. Como parte de esa evaluación, se pueden llamar funciones o subrutinas y se pueden asignar nuevos valores a las variables . Para modificar la ejecución secuencial normal de instrucciones, Visual Basic proporciona varias instrucciones de flujo de control identificadas por palabras clave reservadas. La programación estructurada se apoya en varias construcciones, incluidas dos construcciones de ejecución condicional ( ... ... ... y ... ... ) y cuatro construcciones de ejecución iterativa (bucle) ( ... , ... , y ... ). La instrucción ... tiene secciones de inicialización y prueba independientes, ambas deben estar presentes. (Vea los ejemplos a continuación). La instrucción recorre cada valor de una lista.If
Then
Else
End If
Select Case
Case
End Select
Do
Loop
For
To
For Each
While
End While
For
To
For Each
Además, en Visual Basic:
REM
, colocada al comienzo de una línea o después de cualquier número de espacios o caracteres de tabulación al comienzo de una línea, o después de otro código en una línea, indica que el (resto de la) línea es un comentario .El siguiente es un programa en Visual Basic muy simple, una versión del clásico ejemplo " ¡Hola, mundo! " creado como una aplicación de consola:
Módulo Módulo1 Sub Main () ' El clásico programa de demostración "¡Hola, mundo!" Console . WriteLine ( "¡Hola, mundo!" ) End Sub Módulo final
Imprime " Hola, mundo " en una ventana de línea de comandos . Cada línea tiene una finalidad específica, como se muestra a continuación:
Módulo Módulo1
Esta es una definición de módulo. Los módulos son una división de código, que puede contener cualquier tipo de objeto, como constantes o variables, funciones o métodos, o clases, pero no se pueden instanciar como objetos como las clases y no pueden heredar de otros módulos. Los módulos sirven como contenedores de código a los que se puede hacer referencia desde otras partes de un programa. [8]
Es una práctica común que un módulo y el archivo de código que lo contiene tengan el mismo nombre. Sin embargo, esto no es obligatorio, ya que un solo archivo de código puede contener más de un módulo o clase.
Sub Principal ()
Esta línea define una subrutina llamada "Principal". "Principal" es el punto de entrada, donde el programa comienza su ejecución. [9]
Consola . WriteLine ( "¡Hola, mundo!" )
Esta línea realiza la tarea real de escribir la salida. Console es un objeto del sistema que representa una interfaz de línea de comandos (también conocida como "consola") y otorga acceso programático a los flujos estándar del sistema operativo . El programa llama al método Console WriteLine, que hace que la cadena que se le pasa se muestre en la consola.
En lugar de Console.WriteLine, se podría utilizar MsgBox, que imprime el mensaje en un cuadro de diálogo en lugar de una ventana de línea de comandos. [10]
Este fragmento de código envía el Triángulo de Floyd a la consola:
Sistema de importaciones.Console Programa del módulo Sub Main () Atenúa filas como entero ' Validación de entrada. Hacer Hasta Entero . TryParse ( ReadLine ( "Ingrese un valor para la cantidad de filas que se mostrarán: " & vbcrlf ), filas ) AndAlso filas >= 1 WriteLine ( "El rango permitido es 1 y {0}" , Entero . MaxValue ) Loop ' Salida del triángulo de Floyd Dim actual como entero = 1 Dim fila como entero Dim columna como entero Para fila = 1 Para filas Para columna = 1 Para fila Write ( "{0,-2} " , actual ) actual += 1 Siguiente WriteLine () Siguiente Fin Sub ''' <summary> ''' Como Console.ReadLine pero toma una cadena de solicitud. ''' </summary> Función ReadLine ( Opcional solicitud Como Cadena = Nada ) Como Cadena Si solicitud No Es Nada Entonces Escribir ( solicitud ) Fin Si Devolver consola . ReadLine () Fin de función Módulo final
El tema de debate es si Visual Basic .NET debe considerarse simplemente otra versión de Visual Basic o un lenguaje completamente diferente. Hay nuevas incorporaciones para admitir nuevas características, como el manejo de excepciones estructuradas y las expresiones de circuito corto. Además, se produjeron dos cambios importantes en los tipos de datos con el paso a VB.NET: en comparación con Visual Basic 6, el Integer
tipo de datos se ha duplicado en longitud de 16 bits a 32 bits, y el Long
tipo de datos se ha duplicado en longitud de 32 bits a 64 bits. Esto es cierto para todas las versiones de VB.NET. Un entero de 16 bits en todas las versiones de VB.NET ahora se conoce como Short
. De manera similar, el editor de formularios de Windows Forms es muy similar en estilo y función al editor de formularios de Visual Basic.
Las cosas que han cambiado significativamente son las semánticas: de las de un lenguaje de programación basado en objetos que se ejecuta en un motor determinista de recuento de referencias basado en COM a un lenguaje totalmente orientado a objetos respaldado por .NET Framework , que consiste en una combinación de Common Language Runtime (una máquina virtual que utiliza recolección de basura generacional y un motor de compilación justo a tiempo ) y una biblioteca de clases mucho más grande . La mayor amplitud de este último es también un problema con el que los desarrolladores de VB tienen que lidiar cuando llegan al lenguaje, aunque esto se soluciona en cierta medida con la característica My en Visual Studio 2005.
Los cambios han alterado muchas de las suposiciones subyacentes sobre lo "correcto" que se debe hacer en lo que respecta al rendimiento y la facilidad de mantenimiento. Algunas funciones y bibliotecas ya no existen; otras están disponibles, pero no son tan eficientes como las alternativas "nativas" de .NET. Incluso si se compilan, la mayoría de las aplicaciones convertidas de Visual Basic 6 requerirán cierto nivel de refactorización para aprovechar al máximo el nuevo lenguaje. Hay documentación disponible que cubre los cambios en la sintaxis, la depuración de aplicaciones, la implementación y la terminología. [11]
Los siguientes ejemplos simples comparan la sintaxis de VB y VB.NET. Suponen que el desarrollador ha creado un formulario, ha colocado un botón en él y ha asociado las subrutinas demostradas en cada ejemplo con el controlador de evento de clic del botón mencionado. Cada ejemplo crea un cuadro de mensaje "Hola, mundo" después de hacer clic en el botón del formulario.
Visual Basic 6:
Comando Sub Privado1_Click () MsgBox "Hola, Mundo" Fin Sub
VB.NET (se puede utilizar la clase MsgBox o MessageBox):
Sub Button1_Click privado ( remitente como objeto , e como EventArgs ) maneja Button1 . Click MsgBox ( "Hola, mundo" ) Fin Sub
Sub
y End Sub
cuando se hace doble clic en el botón correspondiente en la vista de diseño. Visual Basic .NET también generará las instrucciones Class
y necesarias End Class
. El desarrollador solo necesita agregar la instrucción para mostrar el cuadro de mensaje "Hola a todos".Call
).Command1
y Button1
no son obligatorios. Sin embargo, son los nombres predeterminados para un botón de comando en Visual Basic 6 y VB.NET respectivamente.Handles
palabra clave se utiliza para convertir el sub Button1_Click
en un controlador del Click
evento del objeto Button1
. En Visual Basic 6, los sub controladores de eventos deben tener un nombre específico que consta del nombre del objeto ( Command1
), un guión bajo ( _
) y el nombre del evento ( Click
, por lo tanto Command1_Click
).MessageBox.Show
en el Microsoft.VisualBasic
espacio de nombres que se puede utilizar (en lugar de MsgBox
) de forma similar a la función correspondiente en Visual Basic 6. Existe una controversia [12] sobre qué función utilizar como mejor práctica (no solo restringida a mostrar cuadros de mensajes, sino también con respecto a otras características del Microsoft.VisualBasic
espacio de nombres). Algunos programadores prefieren hacer las cosas "a la manera .NET", ya que las clases de Framework tienen más características y son menos específicas del lenguaje. Otros argumentan que el uso de características específicas del lenguaje hace que el código sea más legible (por ejemplo, usar int
(C#) o Integer
(VB.NET) en lugar de System.Int32
).ByVal sender as Object
ByVal e as EventArgs
El siguiente ejemplo demuestra una diferencia entre Visual Basic 6 y VB.NET. Ambos ejemplos cierran la ventana activa .
Visual Basic 6:
Sub cmdClose_Click ( ) Descargarme Fin Sub
VB.NET:
Sub btnClose_Click ( remitente como objeto , e como EventArgs ) Maneja btnClose . Click Close () Fin Sub
El prefijo 'cmd' se reemplaza por el prefijo 'btn', de acuerdo con la nueva convención mencionada anteriormente. [ ¿cuál? ]
Visual Basic 6 no proporcionaba métodos abreviados de operador comunes. Los siguientes son equivalentes:
Visual Basic 6:
Sub Timer1_Timer () 'Reduce la altura del formulario en un píxel por tic Me . Height = Me . Height - 1 End Sub
VB.NET:
Sub Timer1_Tick ( remitente como objeto , e como EventArgs ) maneja Timer1 . Tick Me . Height -= 1 Fin Sub
C# y Visual Basic son los primeros lenguajes de Microsoft diseñados para programar en .NET Framework (más tarde se les agregó F# y otros; otros también agregaron lenguajes). Aunque C# y Visual Basic son sintácticamente diferentes, ahí es donde terminan las diferencias. Microsoft desarrolló ambos lenguajes para que fueran parte de la misma plataforma de desarrollo de .NET Framework. Ambos son desarrollados, administrados y respaldados por el mismo equipo de desarrollo de lenguajes en Microsoft. [13] Se compilan en el mismo lenguaje intermedio (IL), que se ejecuta en las mismas bibliotecas de tiempo de ejecución de .NET Framework. [14] Aunque existen algunas diferencias en las construcciones de programación, sus diferencias son principalmente sintácticas y, suponiendo que uno evite las bibliotecas de "compatibilidad" de Visual Basic proporcionadas por Microsoft para ayudar a la conversión desde Visual Basic 6, casi todas las características de VB tienen una característica equivalente en C# y viceversa. Por último, ambos lenguajes hacen referencia a las mismas clases base de .NET Framework para ampliar su funcionalidad. Como resultado, con pocas excepciones, un programa escrito en cualquiera de los lenguajes se puede ejecutar a través de un convertidor de sintaxis simple para traducir al otro. Hay muchos productos de código abierto y disponibles comercialmente para esta tarea.
Requiere un botón llamado Button1.
Formulario de clase pública 1 Sub privado Button1_Click ( remitente como objeto , e como EventArgs ) maneja Button1 . Click MsgBox ( "Hola mundo!" , MsgBoxStyle . Information , "¡Hola mundo!" ) ' Muestra un mensaje que dice "¡Hola mundo!". Fin de sub Fin de clase
Módulo Módulo1 Sub Main () Console . WriteLine ( "Hola mundo!" ) ' Escribe en la consola "¡Hola mundo!" y comienza una nueva línea. Console . ReadKey () ' El usuario debe presionar cualquier tecla antes de que finalice la aplicación. End Sub End Module
Requiere un cuadro de texto titulado 'TextBox1' y un botón llamado Button1.
Clase pública Form1 Sub privada Button1_Click ( sender As Object , e As EventArgs ) Maneja Button1 . Click CreateObject ( "Sapi.Spvoice" ). Speak ( TextBox1 . Text ) Fin de sub Fin de clase
Módulo Módulo1 Voz privada = CreateObject ( "Sapi.Spvoice" ) Texto privado como cadena Sub Principal () Consola . Escribir ( "Ingrese el texto a pronunciar: " ) ' Diga "Ingrese el texto a pronunciar: " Texto = Console.ReadLine () ' El usuario debe ingresar el texto a hablar . Voz . Hablar ( Texto ) ' Pronuncia el texto que el usuario ha ingresado. Fin del subtítulo Módulo final
Como sucesora de la clásica versión 6.0 de Visual Basic, la primera versión de Visual Basic .NET debutó en 2002. A partir de 2020 [actualizar], se lanzaron diez versiones de Visual Basic .NET.
La primera versión, Visual Basic .NET, se basa en .NET Framework 1.0 . La característica más importante es el código administrado , que contrasta con el Visual Basic clásico.
Visual Basic .NET 2003 se lanzó con .NET Framework 1.1 . Entre las nuevas características se incluían compatibilidad con .NET Compact Framework y un mejor asistente de actualización de VB . También se realizaron mejoras en el rendimiento y la confiabilidad de .NET IDE (en particular, el compilador en segundo plano) y el entorno de ejecución. Además, Visual Basic .NET 2003 estaba disponible en Visual Studio.NET Academic Edition, que se distribuía a un cierto número de académicos de cada país sin costo.
Después de Visual Basic .NET 2003, Microsoft eliminó ".NET" del nombre del producto y llamó a la siguiente versión Visual Basic 2005.
Para esta versión, Microsoft agregó muchas características destinadas a reforzar el enfoque de Visual Basic .NET como una plataforma de desarrollo rápido de aplicaciones y diferenciarlo aún más de C# , entre ellas:
My.Form2.Text = " MainForm "
System.WindowsApplication1.Forms.Form2.text = " MainForm "
Para salvar las brechas entre él y otros lenguajes .NET, esta versión agregó:
Visual Basic 2005 introdujo el IsNot
operador que hace 'If X IsNot Y'
equivalente a 'If Not X Is Y'
. Ganó notoriedad [20] cuando se descubrió que era objeto de una solicitud de patente de Microsoft. [21] [22]
Visual Basic 9.0 se lanzó junto con .NET Framework 3.5 el 19 de noviembre de 2007.
Para esta versión, Microsoft agregó muchas características, entre ellas:
En abril de 2010, Microsoft lanzó Visual Basic 2010. Microsoft había planeado usar Dynamic Language Runtime (DLR) para esa versión [23] pero cambió a una estrategia de coevolución entre Visual Basic y su lenguaje hermano C# para acercar ambos lenguajes a una paridad más cercana entre sí. La capacidad innata de Visual Basic para interactuar dinámicamente con objetos CLR y COM se ha mejorado para trabajar con lenguajes dinámicos creados en DLR como IronPython y IronRuby . [24] El compilador de Visual Basic se mejoró para inferir la continuación de línea en un conjunto de contextos comunes, en muchos casos eliminando la necesidad de los caracteres de continuación de línea "_". Además, el soporte existente de funciones en línea se complementó con soporte para subs en línea, así como versiones multilínea de lambdas de sub y función. [25]
Visual Basic 2012 se lanzó junto con .NET Framework 4.5 . Las principales características introducidas en esta versión incluyen: [ se necesita más explicación ]
Visual Basic 2013 se lanzó junto con .NET Framework 4.5.1 con Visual Studio 2013. También se pueden crear aplicaciones .NET Framework 4.5.2 instalando Developer Pack. [26]
Visual Basic 2015 (nombre en código VB "14.0") se lanzó con Visual Studio 2015. Las características del lenguaje incluyen un nuevo operador "?." para realizar comprobaciones de nulos en línea y se incluye una nueva característica de interpolación de cadenas para formatear cadenas en línea. [27]
Visual Basic 2017 (nombre en código VB "15.0") se lanzó con Visual Studio 2017. Amplía la compatibilidad con las nuevas características del lenguaje Visual Basic 15 con las revisiones 2017, 15.3, 15.5 y 15.8. Introduce nuevas refactorizaciones que permiten organizar el código fuente con una sola acción. [28] [29]
Visual Basic 2019 (nombre en código VB "16.0") se lanzó con Visual Studio 2019. [30] Es la primera versión de Visual Basic centrada en .NET Core. [31]
El compilador oficial de Visual Basic está escrito en Visual Basic y está disponible en GitHub como parte de la plataforma de compilación .NET . [32] La creación de herramientas de código abierto para el desarrollo de Visual Basic ha sido lenta en comparación con C# , aunque la plataforma de desarrollo Mono proporciona una implementación de bibliotecas específicas de Visual Basic y un compilador compatible con Visual Basic 2005 escrito en Visual Basic, [33] así como bibliotecas de marco estándar como la biblioteca GUI de Windows Forms .
MonoDevelop era un IDE alternativo de código abierto . El entorno Gambas también es similar pero distinto de Visual Basic, al igual que el Editor de Visual FB para FreeBasic .
Con el nuevo DLR, tenemos soporte para IronPython, IronRuby, Javascript y la nueva compilación dinámica de VBx.
Visual Basic se vincula a objetos de lenguajes dinámicos como IronPython y IronRuby