Articulo de referencia

Comparación de Visual Basic y Visual Basic .NET

Microsoft lanzó Visual Basic .NET en 2002 como sucesor del lenguaje de programación Visual Basic original . Se implementó en .NET Framework 1.0 . La principal novedad fue el cód...

Microsoft lanzó Visual Basic .NET en 2002 como sucesor del lenguaje de programación Visual Basic original . Se implementó en .NET Framework 1.0 . La principal novedad fue el código administrado . Los programadores familiarizados únicamente con Visual Basic probablemente habrían tenido dificultades para trabajar con la nueva versión o adaptar los programas existentes.

Diferencias importantes obvias

La nueva plataforma guardaba poca semejanza con su predecesora. Si bien los programadores esperaban poder recompilar su código fuente de Visual Basic a un entorno .NET, la realidad era que Visual Basic .NET representaba un paradigma radicalmente diferente.

Dejando de lado las obvias diferencias de sintaxis, Visual Basic .NET ofrece prácticamente la misma funcionalidad que C# (ya que ambos se compilan a MSIL , siendo la diferencia más evidente la insensibilidad a mayúsculas y minúsculas de Visual Basic .NET, manteniendo la insensibilidad a mayúsculas y minúsculas original de Visual Basic), lo cual supone un problema mayor para los programadores de C# que intentan interactuar con los desarrolladores de Visual Basic .NET que cualquier otra cosa.

La sintaxis básica sigue siendo muy similar: las condiciones, los bucles, los procedimientos y las subrutinas se declaran y escriben de la misma manera (véase Visual Basic). La migración de versiones anteriores de Visual Basic a Visual Basic .NET se basa en el código existente: se requieren programadores con experiencia en ambos entornos para adaptar eficazmente la lógica antigua a la nueva plataforma. El desarrollador de Visual Basic .NET tendrá que aprender a usar los tipos básicos de .NET en lugar de los que utilizaba en Visual Basic.

Un programador que solo haya trabajado con Visual Basic podría enfrentarse a una curva de aprendizaje pronunciada al migrar a Visual Basic .NET. Un programador con experiencia en otro lenguaje o familiarizado con el entorno de ejecución .NET debería poder adaptarse sin problemas. Sería mejor considerar Visual Basic .NET como un nuevo lenguaje inspirado en el Visual Basic clásico, en lugar de una continuación de Visual Basic 6.0, con la dificultad añadida para los programadores que migran, ya que VB.NET interactúa con .NET Framework, mientras que VB6 se basaba en el Modelo de Objetos Componentes (COM).

Comparación más detallada

Hay algunos cambios inmediatos que los desarrolladores deberían tener en cuenta:

Sintaxis más parecida a la de C

Visual Basic .NET permite los operadores compuestos +=, -=, *=, /=, \=, ^=, y &=de modo que líneas más largas como:

variable = variable + 1

Ahora se puede escribir como:

variable += 1

Sin embargo, no se admiten los operadores de incremento y decremento .

Lógica en cortocircuito

En versiones anteriores de Visual Basic, todas las instrucciones de una condición se evaluaban incluso si el resultado de la condición podía determinarse antes de evaluarla. Por ejemplo:

Si foo () y bar () Entonces ' este código se ejecuta si foo() y bar() devuelven True; sin embargo, si foo() devuelve False, bar() se evalúa igualmente. Fin Si

Esto no solo era ineficiente, sino que podía generar resultados inesperados para cualquier persona acostumbrada a otro idioma. En Visual Basic .NET, se han añadido los nuevos operadores AndAlso y OrElse [ 1 ] para proporcionar evaluación de cortocircuito como en muchos otros idiomas.

Los tipos explícitos similares a punteros ya no existen.

Los tipos de variables Var* están obsoletos en Visual Basic .NET. El entorno de ejecución común decide qué tipos son de referencia y cuáles son de valor, por lo que esto ya no es responsabilidad del programador.

Propiedades: Let y Set

Las propiedades de clase ya no requieren las declaraciones Let y Set.

Impresión de depuración

Debug.Print se reemplaza por Debug.Write y Debug.WriteLine .

Procedimientos

En Visual Basic .NET, una llamada a procedimiento debe ir entre paréntesis.

Visual Basic .NET requiere una especificación ByVal o ByRef para los parámetros. En Visual Basic, esta especificación podía omitirse, lo que implicaba ByRef por defecto. La mayoría de los entornos de desarrollo, como Visual Studio .NET , insertan automáticamente un ByVal, por lo que, en la práctica, el valor predeterminado es ByVal, no ByRef. Existen herramientas para convertir código de Visual Basic a VB.NET, como el Asistente de actualización de Visual Basic incluido en Visual Studio .NET 2002 y 2003. Estas herramientas de conversión insertan automáticamente un ByRef si es necesario, conservando la semántica de la aplicación Visual Basic.

Matrices basadas en cero

Visual Basic 5.0 y 6.0 tradicionalmente han utilizado matrices con índice base cero (el límite inferior predeterminado), a menos que se declare la opción "Base 1". Esto fue la causa de muchos errores de índice desfasado en los programas de Visual Basic, especialmente al tratar con la interoperabilidad entre bibliotecas de programas. Si bien el Common Language Runtime de .NET admite matrices con cualquier valor base, Visual Basic .NET y C# solo proporcionan matrices y listas con índice base cero, y la especificación Common Language de .NET requiere matrices con índice base cero para la interoperabilidad entre lenguajes .NET.

Matrices irregulares

Visual Basic .NET introdujo el concepto de matriz irregular , en el que las filas pueden tener longitudes desiguales, a diferencia de la longitud uniforme de las matrices impuestas a los programadores de Visual Basic.

El tipo de datos Variant ha desaparecido.

En los lenguajes que se compilan para la plataforma .NET, los tipos son estrictos. Si bien el entorno de ejecución permite objetos anónimos que no tienen un tipo con nombre predefinido, el tipo de una variable no puede cambiar durante su ciclo de vida, de ahí la necesidad de eliminar el tipo de datos Variant. Sin embargo, el tipo "Object" tiene un comportamiento similar en la práctica.

Programación verdaderamente orientada a objetos

Visual Basic era un lenguaje basado en objetos . Admitía clases, pero no otros conceptos que lo convirtieran en un lenguaje orientado a objetos. Visual Basic .NET es un verdadero lenguaje orientado a objetos con las siguientes características:

  1. herencia
  2. sobrecarga de funciones

Si bien ningún lenguaje que utilice .NET permite la herencia múltiple para las clases, sí se admite la herencia múltiple de las interfaces.

Cambio de COM a NET

Si bien el IDE disimula bastante bien este hecho, en Visual Basic .NET se abandona la dependencia de los objetos ActiveX (aunque existen mecanismos para interactuar con COM en .NET [ 2 ] ) en favor de componentes .NET que ofrecen una funcionalidad similar. Este cambio beneficia al desarrollador de Visual Basic, ya que muchos de los problemas de rendimiento en Visual Basic se debían al coste de la interfaz COM.

Gestión de geometría elemental mediante el diseñador de formularios

Uno de los mayores quebraderos de cabeza para un desarrollador de Visual Basic siempre ha sido escribir código para redimensionar elementos. Si bien el paradigma WinForms deja mucho que desear en cuanto a la gestión de la geometría frente a herramientas como Qt y GTK+ , al menos el desarrollador puede anclar widgets a formularios en lugar de tener que escribir montones de código en los controladores OnResize.

Opción explícita por defecto

En Visual Basic .NET, Option Explicit está activado por defecto.

Referencias

  1. "Operadores lógicos y bit a bit - Visual Basic" . 15 de septiembre de 2021.
  2. "Documentación técnica de Visual Studio 2003 retirada" .
  • Los 5 principales cambios entre VB 6 y VB.NET. Archivado el 16/10/2011 en Wayback Machine.
  • Matrices irregulares en VB.NET