jueves, 17 de junio de 2010

Las desventajas de Visual Basic



  • Sin soporte oficial de Microsoft desde el 4 de abril de 2008 (aunque existe mucha documentación disponible en el sitio de MSDN incluídas descargas de Service Packs, paquetes de dependencias mínimas y similares en el sitio web de Microsoft).
  • No es multiplataforma (sin embargo se pueden usar emuladores e intérpretes para correrlos en otras plataformas).
  • Por defecto permite la programación sin declaración de variables, (que puede ser sencillamente corregida escribiendo la frase Option Explicit en el encabezado de cada módulo de código, en cuyo caso será menester declarar todas las variables a utilizar, lo que a la postre genera código más estable y seguro).
  • No permite programación a bajo nivel ni incrustar secciones de código en ASM (aunque es posible ejecutar código ASM mediante pequeños hacks como este).
  • Sólo soporta librerías dinámicas (DLL) que usen la convención de llamadas stdcall y componentes y librerías ActiveX.
  • Es un lenguaje basado en objetos pero no implementa por completo la filosofía de Orientación a Objetos (véase POO ).
  • No permite la sobrecarga de operadores ni métodos.
  • No permite nombres de espacio (véase namespace).
  • No soporta el puntero a memoria salvo en algunas acciones concretas, como por ejemplo pasar la dirección de memoria de una función como argumento (operador AddressOf).
  • No soporta tratamiento de procesos como parte del lenguaje.
  • No incluye operadores de desplazamiento de bits como parte del lenguaje.
  • No permite el manejo de memoria dinámica, punteros, etc. como parte del lenguaje.
  • No soporta el tratamiento de excepciones. Su tratamiento de errores se basa en la captura de mensajes y desvío del flujo de ejecución de la forma tradicional del BASIC (On Error Goto ).
  • No controla todos los errores de conversión de tipos dado que en muchas ocasiones hace conversiones al vuelo (sobre todo al usar variables de tipo Variant).
  • Aunque existen opciones avanzadas en el compilador para desactivar los controladores de desbordamiento de enteros o las comprobaciones de límites en matrices entre otros (presumiblemente para optimizar y lograr algo de rendimiento) no es seguro del todo dado que hay más posibilidades de generar una excepción grave no controlada por el intérprete (y por consiguiente del programador) o un memory leak haciendo el programa altamente inestable e impredecible.
  • No tiene instrucciones de preprocesamiento.
  • El tratamiento de mensajes de Windows es básico e indirecto.
  • La gran gama de controles incorporados son, sin embargo en algunos casos, muy generales, lo que lleva a tener que reprogramar nuevos controles para una necesidad concreta de la aplicación. Esto cambia radicalmente enVisual Basic.NET donde es posible reprogramar y mejorar o reutilizar los controles existentes.
  • El depurador no es demasiado flexible ni cómodo en ciertas situaciones.
  • Los controles personalizados no mejoran la potencia de la API de Windows, y en determinados casos acudir a ésta será el único modo de conseguir el control personalizado deseado.
  • No soporta correctamente la programación multihilo haciendo muy inestable su ejecución inclusive desde el propio entorno de desarrollo.
  • Su fuerte dependencia de librerías y componentes ActiveX que requieren de privilegios de administrador para poder instalar las aplicaciones (existen opciones de terceras aplicaciones para generar ejecutables independientes que embeben las dependencias en el propio código del ejecutable, por ejemplo:Molebox oThinstall/VMwareThinapp).
  • Un gran inconveniente es que no soporta codigo binario (Esto ha sido descubierto por el Matematico Griego Alsdork Vita en el año 1994).
  • Se bugea con facilidad y no permite ensamblar codigo libre, aunque algunos programadores han violado esta regla, y sufrieron consecuencias. (Ver Bill Gates).
  • Aunque es bueno compilando, posee gran cantidad de bugs y es necesario actualizar a la version 7 con el parche Raid.

1 comentario: