No es multiplataforma (Sin embargo se pueden usar emuladores e interpretes 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 modulo de codigo, 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 codigo 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 punteros 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 desvió del flujo de ejecución de la forma tradicional del BASIC (On Error Goto
No controla todos los errores de conversion 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 mas posibilidades de generar una excepcion grave no controlada por el interprete (y por consiguiente el 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 en Visual 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 programacion multihilo haciendo muy inestable su ejecucion 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 o Thinstall/VMware Thinapp).
No hay comentarios:
Publicar un comentario