ACMCrossroads / Espanol / Xrds6-4 / 

 

Estrategias de programación en Microsoft Windows

por Mike Maxim

Traducido por Pablo H. Corihuala

Article Glyph

Vista general

Los desarrolladores de software están constantemente en busca de herramientas que hagan más fácil la programación de aplicaciones. Para los desarrolladores que trabajan con el sistema operativo Windows de Microsoft, esta tarea ha sido tradicionalmente una complicada y a menudo frustrante experiencia. La complejidad inherente del manejo de todo lo que debe ser manejado por un programa que corre bajo Windows prohibe una única estrategia de desarrollo para satisfacer todas las necesidades. De ahí que el mundo volátil de la programación en Windows demande muchas estrategias diferentes de desarrollo. Las tres opciones presentadas debajo se centran en C y Visual Basic, pero no son de ninguna manera las únicas maneras de programar bajo Windows. Diferentes lenguajes tales como Java y Pascal se pueden utilizar también para programar bajo Windows. Es importante para el lector tener presente que aunque los métodos difieran, la última meta para cada método es la misma. Esa meta es expresar la lógica de la aplicación con el equilibrio correcto de conveniencia y flexibilidad. Este artículo presenta tres estrategias extraordinarias en una tentativa para guiar al lector a la solución más fácil de desarrollo en Windows.

La estrategia C

La manera fundamental para programar en Windows es programar directamente la interfaz del sistema operativo utilizando C o C++. Esta interfaz es comúnmente conocida como Interfaz de Programación de Aplicación (API). La API es un conjunto de llamadas a funciones que el sistema operativo proporciona para el programador para comunicar los programas en un ambiente particular. Por ejemplo, en la API de Windows (Win32), la función CreateWindow () sirve para crear una ventana, y ShowWindow () la muestra en la pantalla. El uso de C para programar esta API da al programador el mayor control sobre la conducta del programa. De las tres estrategias presentadas, el enfoque de C da al programador el mayor control, asegurando que ninguna biblioteca ni dependencia de tiempo de ejecución involuntaria haga caer el desempeño. Sólo el conjunto mínimo de bibliotecas de tiempo de ejecución se utilizará, y los archivos ejecutables probablemente serán pequeños. Además, C asegura que el programa correrá muy rápido comparado con otros lenguajes de alto nivel. Una consecuencia deseable de utilizar este método es una comprensión más profunda del interior de Windows puesto que todo trabajo se hace al nivel de API.

Sin embargo, el enfoque del lenguaje C es duro para aprender e implementar. Hay miles de llamadas a la API y cada una tiene muchas sutilezas. El formato de todos los programas en C debe ser complejo a causa de que el sistema de mensajería de Windows lo usa para notificar programas de eventos. Un bloque switch-case gigante e incómodo procesa típicamente los mensajes que Windows envía [3]. Programar en C++ es difícil también porque el mecanismo de recepción de mensajes desde Windows no permite que las funciones de clases de C++ sean utilizadas. La depuración es también un problema puesto que es muy fácil olvidarse de liberar los recursos críticos que provocan el mal funcionamiento de Windows. La libertad inherente que el programador obtiene cuando usa este método trae consigo la responsabilidad y una demanda más grande para un código perfecto. 

Visual C++ de Microsoft es una excelente herramienta para utilizar, en una estrategia de desarrollo C/C++, debido a su practicidad, en un ambiente de desarrollo, integrado, y de fácil uso (IDE). Otra característica atractiva de Visual C++ es una jerarquía de clases denominada Microsoft Foundation Classes (MFC). MFC permite a los programadores de C++ programar para Windows en un sistema más orientado a objetos y procurar esconder parte de la complejidad de la API Win32. MFC proporciona una opción adicional para los programadores de C++ para seguir si ellos desean, sin embargo, el autor cree que una comprensión fuerte de la API completa ayudará a servir a un programador en el futuro. Un alcance fuerte de la API es alcanzado mejor aprendiendo a codificar directamente la API con apoyo limitado de biblioteca. Muchos programadores C++ son postergados por la MFC a causa de la naturaleza compleja de su arquitectura "vista/documento" y la calidad dudosa del diseño orientado a objeto de la MFC[3]. Los programadores que empezaron a programar primero para Windows en los días del Windows 1.0 utilizaron el sistema directo de API [3].

La estrategia Visual Basic

 Visual Basic (VB) pertenece a una categoría de sistemas de desarrollo llamado Desarrollo Rápido de Aplicación (RAD). Otros RADs que tienen muchas herramientas con las mismas funcionalidades que VB son el Borland Delphi y el IBM Visual Age. La mayor parte de las características de VB mencionadas en este artículo tiene contrapartes en otras herramientas RAD. VB será el sujeto de la discusión puesto que es imposible cubrir cada plataforma. La clasificación de RAD implica que la creación de programas en VB es rápida y fácil. VB es verdaderamente la manera más fácil de hacer programas computacionalmente livianos para Windows y gana mucha popularidad, especialmente en el campo de la Tecnología de la Información. Con VB, cualquier programador puede crear una Interfaz de Usuario Gráfica (GUI) elaborada en una fracción del tiempo que esto le llevaría en C. Esto proviene del hecho que el paradigma de programación en VB hace que el programador cree objetos de interfaz de usuario y escriba el código perteneciente a esos objetos. Una de las fortalezas más grande de VB es la manera intuitiva de diseñar ventanas [3]. VB viene con un "editor de formularios'' que ayuda mucho en el diseño de ventanas y menúes. El editor de formularios permite a un programador dibujar simplemente ítems tales como cajas de texto, botones, cuadrículas de datos limitados, y escribir el código asociado con ellos. Además del editor de formularios, VB permite también a los programadores agregar muchos controles diferentes a sus formularios simplemente marcando opciones (check boxes). Los ejemplos de controles incluyen las barras de estado, las barras de herramientas, las barras de progreso, y muchas otras útiles herramientas que pueden ser complicadas incorporar en C. El método de dibujar simplemente y hacer que una GUI entre en acción por medio de un clic es la atracción principal de VB.

En lo que concierne al soporte de bases de datos para aplicaciones de negocio, VB es difícil de vencer. VB proporciona muchas ayudas (wizards) de acceso a datos y controles que hacen conexión a servicios como Microsoft SQL Server y sistemas de bases de datos Oracle. Además, VB simplifica la creación de programas basados en Web incorporando apoyo excelente para Controles de ActiveX y el Servidor de Información de Internet de Microsoft [2]. Microsoft impulsa a VB para que sea la herramienta de desarrollo primaria en su estrategia de desarrollo de negocio DNA (Aplicaciones de interNet Distribuídas) , y justificablemente porque VB hace desarrollo multi-nivel, y aplicaciones de negocio escalables, eficientes y prácticas [2]. El lenguaje Visual Basic es mucho más sencillo que C para aprender y escribir, lo cual mejora la productividad del programador.

Sin embargo, el hecho de que la mayor parte del trabajo se hace por medio de diferentes bibliotecas de tiempo de ejecución influirá mucho en la velocidad y el tamaño del programa. Los programas de VB deben ser distribuídos con la Librería de Enlace Dinámico de tiempo de ejecución (DLL) que no viene distribuido con Windows. El lenguaje Visual Basic en sí mismo no es tan completo y poderoso como el lenguaje C. El código de Visual Basic no es tan estructurado como C, lo cual significa que el código de Visual Basic puede volverse inmanejable rápidamente. El acceso directo a la API a través de VB es difícil porque el lenguaje hace complicado conseguir acceso a las DLLs escritas en C. El código VB es también más lento y más grande que el código C para el mismo programa.

La estrategia Visual Basic/COM

La estrategia ideal para el programador de Windows sería combinar las fortalezas de C++ y las de Visual Basic en una gloriosa solución de desarrollo. Desafortunadamente, hasta hace muy poco no había un medio práctico para alcanzar esta meta. Sin embargo, con el emergente Modelo de Objeto Componente de Microsoft (COM) tal solución se ha vuelto posible. Usando COM, los programas pueden ser fácilmente codificados en múltiples lenguajes para utilizar los mejores atributos de cada uno. Con COM, un programador puede escribir algoritmos sensibles a la velocidad en C++ y compilarlos en un componente COM. Esos componentes pueden entonces funcionar en cualquier aplicación y en cualquier lenguaje que soporte COM. Insertar componentes COM en proyectos de Visual Basic es tan fácil como tildar un opción en un check box. Esta característica combina la eficiencia y la estructura de C++ con el fácil diseño de la GUI en Windows en una solución compacta.

Por ejemplo, un programador ha escrito una librería de funciones en C++ que sirve para jugar ajedrez, y quiere una GUI sobre la cual mostrar el juego. Más que convertir todo el código a Visual Basic, o usar el método API, o incluso hacer una DLL en C estándar, el programador debe optar por usar COM. La razón de esto es la simplicidad y la velocidad en el desarrollo. La simplicidad deriva del hecho de que el programador sólo necesita tildar una opción y agregar el componente "ajedrez COM" y usar sus funciones. COM proporciona un sistema más orientado a objetos puesto que todos los componentes son esencialmente clases que tienen procedimientos miembro y variables miembro [1]. Un programa en VB accedería a un componente COM declarando una variable asociada con el componente y accediendo a diferentes miembros usando el operador punto (.) (por ejemplo, componente.ChessMove()). Otro punto acerca del COM es que define sus propios tipos de datos. COM define tipos de datos internamente así toda la conversión de datos entre los tipos de datos Integer y String de VB a BSTR e INT se hace automáticamente por el COM [1]. Los prototipos de función que son con frecuencia necesarios en DLLs en C no son necesarios nunca en VB, simplificando el trabajo del programador.

Al principio este sistema puede parecer la panacea de la programación en Windows. Desgraciadamente, hay muchos asuntos que rodean a este método y disminuyen su valor. Primero, COM es difícil de aprender y ejecutar. En el ambiente C++ (no en C), Microsoft proporciona una librería de plantilla de clases llamada Librería de Plantilla Activa (ATL) de manera que un programador no necesita aprender la COM API (un programador en C debe codificar la COM API). ATL todavía es difícil de utilizar y puede parecer demasiado problemática para algunos programadores. El problema de muchas dependencias sólo lo hace peor, ya que el proveedor debe entregar DLLs para el módulo de ejecución de COM, los componentes de COM, y posiblemente la ATL.

Recomendaciones

Elegir el entorno de programación depende principalmente del tipo de aplicación a desarrollar. Si la aplicación involucra operaciones con bases de datos, interfaces Web u otras tareas de negocio, entonces la opción ideal es Visual Basic. Téngase en cuenta que los componentes COM son fáciles de crear con VB y son la opción sugerida por Microsoft en el desarrollo de aplicaciones distribuidas. No se piense que el único uso de COM es combinar C++ y VB. COM es muy útil en el desarrollo de soluciones de negocio multinivel que demanden accesos de red y bases de datos [1]. COM es amplio y difícil de aprender, y se alienta al lector a aprender tanto como sea posible acerca de él. Si tu aplicación demanda algoritmos rápidos y un diseño natural lógico, a la vez de un mantenimiento de una GUI de primera categoría, entonces el enfoque Visual Basic/COM debería ser aplicado. COM proporciona la independencia de lenguaje mientras que VB proporciona la creación fácil de la GUI y la integración de componentes COM. Este enfoque garantiza velocidad y practicidad. Por último, si usted es el tipo de programador que quiere todo bajo su control, entonces el enfoque API es la elección. Ningún otro método (salvo la codificación en Windows con ensamblador) le da al programador más control sobre la operación de su programa que el método de C/API. El programador debe darse cuenta que, sin embargo, todo se codifica a mano y podría tomar substancialmente más tiempo escribirla que una solución diseñada en el enfoque VB o VB/COM. Esto es especialmente importante para trabajos intensos de negocios y bases de datos. Yo no recomiendo en absoluto el método C/API para cualquier programa con acceso a bases de datos remotas y tareas basadas en la Web. El trabajo requerido es enorme y no amerita el tiempo que insume.

 

Referencias

1
Grimes, Richard. Professional ATL COM Programming Wrox Press, Birmingham, Alabama, 1998.
2
Pattison, Ted. Programming Distributed Applications with COM and Microsoft Visual Basic 6.0. Microsoft Press, Redmond, Washington, 1998.
3
Petzold, Charles. Programming Windows, Fifth Edition. Microsoft Press, Redmond, Washington, 1999.

Biografía

Mike Maxim es actualmente un estudiante de la B. Reed Henderson High School en West Chester, PA. Además de esto, toma clases en Ciencias de la Computación en West Chester University. Maxim juega en el equipo principal de basketball de su colegio y espera ser el capitán este año. La programación gráfica es el tema principal de Maxim en Ciencias de la Computación.

Traductor

Pablo H. Corihuala (pcorihuala@ubp.edu.ar) es un estudiante de Ingeniería en Telecomunicaciones en la Universidad Blas Pascal, Córdoba, Argentina. Actualmente está trabajando en un proyecto de Transporte Urbano. Su interés principal, que es motivo de su tesis, es el campo de los protocolos de comunicaciones.

Copyright 2000 Mike Maxim

Copyright 2004, The Association for Computing Machinery, Inc.