La reciente aparición de la versión 2.0 de Borland C++ para OS/2, con la inclusión de la librería ObjectWindows, nos permite una más fácil programación en OS/2 y da acceso al diseño de aplicaciones multiplataforma.

Dos son los aspectos más relevantes del nuevo compilador de Borland C++ para OS/2: la implementación de la biblioteca ObjectWindows (OWL) en otro sistema operativo diferente de su entorno DOS/Windows original y la disponibilidad de un entorno de desarrollo ya muy conocido, verdaderamente elaborado, ágil y potente, que puede ayudar a los numerosos programadores de Windows a adentrarse en el mundo de IBM OS/2. Como novedades adicionales en la presente versión, dispondremos también de un nuevo depurador en modo texto y de una utilidad de migración de recursos de formato Windows a formato OS/2.

A lo largo de este artículo, procuraremos dar una visión completa del propio entorno integrado (IDE), el editor de recursos (Resource Workshop), su depurador en entorno gráfico y todas las restantes herramientas de programación que acompañan a BC++ for OS/2 2.0.

El entorno de desarrollo

El entorno de desarrollo integrado (IDE) de Borland C++ 2.0 es muy similar en apariencia y prestaciones al de su correspondiente para DOS/Windows. Cualquier programador podrá, sin mayores adaptaciones, pasar de uno a otro. Podríamos afirmar que sólo sabrá en cuál está programando por la apariencia de la barra de título y el aspecto general particular de los diferentes sistemas operativos. (NOTA: la versión de OS/2 2.0 es, funcionalmente hablando, la correspondiente a la versión BC++ 4.02 para DOS/Windows, no a la más avanzada BC++ 4.5 para DOS/Windows).

El trabajo con el entorno integrado se basa en proyectos, siguiendo la tendencia actual de todos los entornos integrados, que han abandonado el concepto de makefile, propio de los compiladores en línea. Dentro del proyecto se incluirán los archivos del código fuente, recursos y, en su caso, librerías estáticas o de importación (.LIB) complementarias a las librerías por defecto para cada tipo de aplicación que deseemos crear. Téngase en cuenta que dentro de Borland C++ se pueden crear ejecutables Presentation Manager, de consola (lo correspondiente a tipo texto) y librerías de enlace dinámico (.DLL).

El editor de código dispone de resalte sintáctico configurable de palabras clave, comentarios, textos literales, funciones y demás. Trabaja en modo MDI (Multiple Document Interface), aunque, desafortunadamente, no es posible acceder al editor de recursos (Resource Workshop) desde él. Parece claro que se trata de una grave carencia, ya que implica tener que diseñar diálogos o menús con código puro en el editor de textos (a la vieja usanza), o salir a Resource Workshop, crearlos visualmente y volver a cargar el archivo de recursos en el IDE.

El compilador implementa unas excelentes herramientas de navegación a través de las clases (si se trabaja en OOP), a semejanza de la versión para Windows. También es digno de mención su depurador integrado. Se trata de uno de los tres disponibles: el integrado en el propio entorno, uno en modo gráfico Presentation Manager y un tercero para modo texto (que ya hemos indicado, es nuevo en la presente versión).

La ventana del proyecto, en la que se muestran los archivos que lo componen, es menos explícita que lo deseable. No está estructurada en forma de árbol jerárquico, en la que se muestren las dependencias entre archivos. Por ejemplo, no es posible definir proyectos múltiples (que generen varios ejecutables o DLLs) y ver cuáles dependen de cuáles. Tampoco se muestran en forma de ramas expandibles los archivos de cabecera o incluidos. Hemos de desplegar una ventana flotante aparte para ver los de cabecera, pero sin mostrar interdependencias. Parece obvio que es otro punto a mejorar, si se desea llegar a un entorno integrado perfectamente estructurado y que dé toda la información necesaria para el programador.

Nada tenemos que comentar acerca de la facilidad de su uso general. Insistir en la bondad global puede ser reiterativo y, para todos los que conozcan los entornos (IDEs) de Borland, no supondrá sorpresa alguna el modo de operar con él. Dentro de los entornos de desarrollo bajo OS/2, el de Borland también destaca con respecto a muchos otros.

Lenguaje y biblioteca

Siguiendo las pautas del lenguaje C++, Borland C++ ha actualizado la implementación del lenguaje para dar cabida a las más recientes definiciones del estándar ANSI/ISO C++ y AT&T CFront 3.0. Por ejemplo, se contempla el uso de plantillas (Function Templates), manejo de excepciones (Exception Handling) o la identificación de tipos en tiempo de ejecución (RTTI, Run-Time Type Identification); lo que hace que sea un compilador de lo más avanzado que podemos disponer.

Todo el uso de excepciones, plantillas y RTTI está plenamente integrado en la biblioteca ObjectWindows y en los códigos de arranque de las aplicaciones. Eso hace que haya un cierto aumento en el tamaño de los ejecutables, comparándolos con los producidos por otros compiladores o con la versión anterior (Borland C++ for OS/2 1.5). Sin duda, las ventajas derivadas de la ganancia en seguridad pagan con creces estos aumentos en tamaño y, en ciertos casos, la posible penalización en la velocidad de carga de los ejecutables.

Ya que hemos citado la presencia de la biblioteca ObjectWindows, detengámonos algunos momentos en ver esta importante novedad de la versión que estamos analizando. La biblioteca ObjectWindows ha ganado una muy merecida fama dentro del ámbito de la programación bajo Windows (tanto en sus versiones para C++ como para Pascal). A la par, sirvió de base para desarrollos tan ambiciosos como Novell AppWare y ahora, muy afortunadamente, ha dado el salto hacia OS/2.

La implementación de la biblioteca ObjectWindows es buena. Realmente, se trata de una versión equivalente a la 2.0 para Windows, recordemos que Borland C++ 4.5 para DOS/Windows implementa una posterior, numerada 2.5 (en la que esencialmente se hacen mejoras en el tratamiento de puntos específicos de la programación Windows, cómo el referente a inclusión del estándar OLE). Permite crear con facilidad aplicaciones multiplataforma, sin sustancialmente ningún cambio. Obviamente, eso es una pieza básica de la implementación de una biblioteca de alto nivel y el resultado no deja lugar a críticas. Ahora, los usuarios de compiladores de Borland, tendrán mucho más sencillo la portabilidad de sus aplicaciones.

En el lado menos positivo, hemos detectado fallos importantes en la funcionalidad de algunas aplicaciones basadas en ObjectWindows, trabajando sobre OS/2 Warp 3.0. Algo tan esencial que nos merece dirigir la mirada con cierto detenimiento (y prudencia). La cuestión apareció cuando hicimos uso de la clase TEditFile (o cualquiera de sus descendientes y, tal vez, también haya fallos en otros casos, que no hemos podido detectar en su globalidad), de manera que se producían corrupciones en pantalla, con pérdida de la visión de iconos, menús y hasta la propia barra de título.

Parece claro que se trata de la existencia de bugs en esta primera implementación de ObjectWindows. Sobra todo tipo de comentario acerca de la necesidad de una inminente respuesta y, en su caso, actualización por parte de Borland. Puestos en contacto con su servicio de asistencia, no obtuvimos respuesta acerca de cómo obviar el fallo y menos acerca de parches o actualizaciones.

Desde una perspectiva más amplia, ObjectWindows implementa todo lo habitual en la programación Presentation Manager, a excepción del soporte SOM. Si tenemos en cuenta la disponibilidad de soporte OLE para su versión Windows, parece que se pide a gritos lo correspondiente respecto a SOM en la presente versión para OS/2. Sin duda, con ello ganaría muy mucho la versatilidad de Borland C++. Desconocemos los